diff --git a/apps/console/src/pages/organizations/measures/tabs/MeasureControlsTab.tsx b/apps/console/src/pages/organizations/measures/tabs/MeasureControlsTab.tsx index 321de81fa..9e01cce69 100644 --- a/apps/console/src/pages/organizations/measures/tabs/MeasureControlsTab.tsx +++ b/apps/console/src/pages/organizations/measures/tabs/MeasureControlsTab.tsx @@ -13,7 +13,7 @@ // PERFORMANCE OF THIS SOFTWARE. import { graphql, useRefetchableFragment } from "react-relay"; -import { useOutletContext } from "react-router"; +import { useOutletContext, useParams } from "react-router"; import type { MeasureControlsTabFragment$key } from "#/__generated__/core/MeasureControlsTabFragment.graphql"; import { LinkedControlsCard } from "#/components/controls/LinkedControlsCard"; @@ -30,7 +30,6 @@ export const controlsFragment = graphql` filter: { type: "ControlFilter", defaultValue: null } ) @refetchable(queryName: "MeasureControlsTabControlsQuery") { - id canCreateControlMeasureMapping: permission( action: "core:control:create-measure-mapping" ) @@ -85,8 +84,12 @@ export const attachControlMutation = graphql` export default function MeasureControlsTab() { const { measure } = useOutletContext<{ - measure: MeasureControlsTabFragment$key & { id: string }; + measure: MeasureControlsTabFragment$key; }>(); + const { measureId } = useParams<{ measureId: string }>(); + if (!measureId) { + throw new Error("Missing :measureId param in route"); + } // eslint-disable-next-line relay/generated-typescript-types const [data, refetch] = useRefetchableFragment(controlsFragment, measure); const connectionId = data.controls.__id; @@ -97,7 +100,7 @@ export default function MeasureControlsTab() { const readOnly = !canLinkControl && !canUnlinkControl; const incrementOptions = { - id: data.id, + id: measureId, node: "controls(first:0)", }; const [detachControl, isDetaching] = useMutationWithIncrement( @@ -122,7 +125,7 @@ export default function MeasureControlsTab() { controls={controls} onDetach={detachControl} onAttach={attachControl} - params={{ measureId: data.id }} + params={{ measureId }} connectionId={connectionId} refetch={refetch} readOnly={readOnly} diff --git a/apps/console/src/pages/organizations/measures/tabs/MeasureDocumentsTab.tsx b/apps/console/src/pages/organizations/measures/tabs/MeasureDocumentsTab.tsx index b2ce07094..b0ae2b3ed 100644 --- a/apps/console/src/pages/organizations/measures/tabs/MeasureDocumentsTab.tsx +++ b/apps/console/src/pages/organizations/measures/tabs/MeasureDocumentsTab.tsx @@ -13,7 +13,7 @@ // PERFORMANCE OF THIS SOFTWARE. import { graphql, useFragment } from "react-relay"; -import { useOutletContext } from "react-router"; +import { useOutletContext, useParams } from "react-router"; import type { MeasureDocumentsTabFragment$key } from "#/__generated__/core/MeasureDocumentsTabFragment.graphql"; import { LinkedDocumentsCard } from "#/components/documents/LinkedDocumentsCard"; @@ -68,6 +68,10 @@ export const detachDocumentMutation = graphql` `; export default function MeasureDocumentsTab() { + const { measureId } = useParams<{ measureId: string }>(); + if (!measureId) { + throw new Error("Missing :measureId param in route"); + } const { measure } = useOutletContext<{ measure: MeasureDocumentsTabFragment$key; }>(); @@ -108,7 +112,7 @@ export default function MeasureDocumentsTab() { documents={documents} onAttach={attachDocument} onDetach={detachDocument} - params={{ measureId: data.id }} + params={{ measureId }} connectionId={connectionId} readOnly={readOnly} /> diff --git a/apps/console/src/pages/organizations/measures/tabs/MeasureEvidencesTab.tsx b/apps/console/src/pages/organizations/measures/tabs/MeasureEvidencesTab.tsx index 016f2425f..6ae298118 100644 --- a/apps/console/src/pages/organizations/measures/tabs/MeasureEvidencesTab.tsx +++ b/apps/console/src/pages/organizations/measures/tabs/MeasureEvidencesTab.tsx @@ -60,7 +60,7 @@ export const evidencesFragment = graphql` before: { type: "CursorKey", defaultValue: null } last: { type: "Int", defaultValue: null } ) { - id + name canUploadEvidence: permission(action: "core:measure:upload-evidence") evidences( first: $first @@ -112,12 +112,16 @@ const deleteEvidenceMutation = graphql` export default function MeasureEvidencesTab() { const { measure } = useOutletContext<{ - measure: MeasureEvidencesTabFragment$key & { id: string; name: string }; + measure: MeasureEvidencesTabFragment$key; }>(); - const { evidenceId, snapshotId } = useParams<{ + const { measureId, evidenceId, snapshotId } = useParams<{ + measureId: string; evidenceId: string; snapshotId?: string; }>(); + if (!measureId) { + throw new Error("Missing :measureId param in route"); + } // eslint-disable-next-line relay/generated-typescript-types const pagination = usePaginationFragment(evidencesFragment, measure); const connectionId = pagination.data.evidences.__id; @@ -130,7 +134,7 @@ export default function MeasureEvidencesTab() { const dialogRef = useDialogRef(); const isSnapshotMode = Boolean(snapshotId); - usePageTitle(measure.name + " - " + __("Evidences")); + usePageTitle(pagination.data.name + " - " + __("Evidences")); return (