Fix useless not founds & duplicated graphQL queries

Signed-off-by: Émile Ré <nemile.re@gmail.com>
This commit is contained in:
Émile Ré
2025-12-04 19:27:44 +04:00
parent e28e94a0ef
commit 54ca8cc0f3
12 changed files with 20 additions and 86 deletions

View File

@@ -79,10 +79,6 @@ export default function AssetDetailsPage(props: Props) {
const updateAsset = useUpdateAsset(); const updateAsset = useUpdateAsset();
if (!assetEntry || !assetEntry.id) {
return <div>{__("Asset not found")}</div>;
}
const onSubmit = handleSubmit(async (formData) => { const onSubmit = handleSubmit(async (formData) => {
await updateAsset({ await updateAsset({
id: assetEntry.id!, id: assetEntry.id!,

View File

@@ -75,10 +75,6 @@ export default function AuditDetailsPage(props: Props) {
const confirm = useConfirm(); const confirm = useConfirm();
const { toast } = useToast(); const { toast } = useToast();
if (!auditEntry || !auditEntry.id || !auditEntry.framework) {
return <div>{__("Audit not found")}</div>;
}
const onSubmit = handleSubmit(async (formData) => { const onSubmit = handleSubmit(async (formData) => {
if (!auditEntry.id) return; if (!auditEntry.id) return;

View File

@@ -91,10 +91,6 @@ export default function ContinualImprovementDetailsPage(props: Props) {
} }
); );
if (!improvement) {
return <div>{__("Continual improvement entry not found")}</div>;
}
const onSubmit = handleSubmit(async (formData) => { const onSubmit = handleSubmit(async (formData) => {
try { try {
await updateImprovement({ await updateImprovement({

View File

@@ -28,20 +28,20 @@ import {
import { useOrganizationId } from "/hooks/useOrganizationId"; import { useOrganizationId } from "/hooks/useOrganizationId";
import { useParams } from "react-router"; import { useParams } from "react-router";
import { CreateContinualImprovementDialog } from "./dialogs/CreateContinualImprovementDialog"; import { CreateContinualImprovementDialog } from "./dialogs/CreateContinualImprovementDialog";
import { deleteContinualImprovementMutation, ContinualImprovementsConnectionKey } from "../../../hooks/graph/ContinualImprovementGraph"; import { deleteContinualImprovementMutation, ContinualImprovementsConnectionKey, continualImprovementsQuery } from "../../../hooks/graph/ContinualImprovementGraph";
import { sprintf, promisifyMutation, getStatusVariant, getStatusLabel, formatDate } from "@probo/helpers"; import { sprintf, promisifyMutation, getStatusVariant, getStatusLabel, formatDate } from "@probo/helpers";
import { SnapshotBanner } from "/components/SnapshotBanner"; import { SnapshotBanner } from "/components/SnapshotBanner";
import type { NodeOf } from "/types"; import type { NodeOf } from "/types";
import type { ContinualImprovementsPageQuery } from "./__generated__/ContinualImprovementsPageQuery.graphql";
import type { import type {
ContinualImprovementsPageFragment$key, ContinualImprovementsPageFragment$key,
ContinualImprovementsPageFragment$data, ContinualImprovementsPageFragment$data,
} from "./__generated__/ContinualImprovementsPageFragment.graphql"; } from "./__generated__/ContinualImprovementsPageFragment.graphql";
import { use } from "react"; import { use } from "react";
import { PermissionsContext } from "/providers/PermissionsContext"; import { PermissionsContext } from "/providers/PermissionsContext";
import type { ContinualImprovementGraphListQuery } from "/hooks/graph/__generated__/ContinualImprovementGraphListQuery.graphql";
interface ContinualImprovementsPageProps { interface ContinualImprovementsPageProps {
queryRef: PreloadedQuery<ContinualImprovementsPageQuery>; queryRef: PreloadedQuery<ContinualImprovementGraphListQuery>;
} }
const continualImprovementsPageFragment = graphql` const continualImprovementsPageFragment = graphql`
@@ -98,15 +98,7 @@ export default function ContinualImprovementsPage({ queryRef }: ContinualImprove
usePageTitle(__("Continual Improvements")); usePageTitle(__("Continual Improvements"));
const organization = usePreloadedQuery( const organization = usePreloadedQuery(
graphql` continualImprovementsQuery,
query ContinualImprovementsPageQuery($organizationId: ID!, $snapshotId: ID) {
node(id: $organizationId) {
... on Organization {
...ContinualImprovementsPageFragment @arguments(snapshotId: $snapshotId)
}
}
}
`,
queryRef queryRef
); );
@@ -116,12 +108,9 @@ export default function ContinualImprovementsPage({ queryRef }: ContinualImprove
hasNext, hasNext,
isLoadingNext, isLoadingNext,
} = usePaginationFragment< } = usePaginationFragment<
ContinualImprovementsPageQuery, ContinualImprovementGraphListQuery,
ContinualImprovementsPageFragment$key ContinualImprovementsPageFragment$key
>(continualImprovementsPageFragment, organization.node); >(continualImprovementsPageFragment, organization.node);
if (!data) {
return <div>{__("Organization not found")}</div>;
}
const connectionId = ConnectionHandler.getConnectionID( const connectionId = ConnectionHandler.getConnectionID(
organizationId, organizationId,

View File

@@ -399,7 +399,7 @@ function DocumentRow({
); );
const lastVersion = document.versions.edges?.[0]?.node; const lastVersion = document.versions.edges?.[0]?.node;
const isDraft = lastVersion.status === "DRAFT"; const isDraft = lastVersion?.status === "DRAFT";
const { __ } = useTranslate(); const { __ } = useTranslate();
const [deleteDocument] = useDeleteDocumentMutation(); const [deleteDocument] = useDeleteDocumentMutation();

View File

@@ -117,10 +117,6 @@ export default function MeetingDetailPage(props: Props) {
usePageTitle(meeting.name); usePageTitle(meeting.name);
if (!meeting) {
return <div>{__("Meeting not found")}</div>;
}
const hasAnyAction = canUpdate || canDelete; const hasAnyAction = canUpdate || canDelete;
const handleDelete = () => { const handleDelete = () => {

View File

@@ -27,22 +27,22 @@ import {
} from "react-relay"; } from "react-relay";
import { useOrganizationId } from "/hooks/useOrganizationId"; import { useOrganizationId } from "/hooks/useOrganizationId";
import { CreateNonconformityDialog } from "./dialogs/CreateNonconformityDialog"; import { CreateNonconformityDialog } from "./dialogs/CreateNonconformityDialog";
import { deleteNonconformityMutation, NonconformitiesConnectionKey } from "../../../hooks/graph/NonconformityGraph"; import { deleteNonconformityMutation, NonconformitiesConnectionKey, nonconformitiesQuery } from "../../../hooks/graph/NonconformityGraph";
import { sprintf, promisifyMutation, getStatusVariant, getStatusLabel, formatDate } from "@probo/helpers"; import { sprintf, promisifyMutation, getStatusVariant, getStatusLabel, formatDate } from "@probo/helpers";
import { SnapshotBanner } from "/components/SnapshotBanner"; import { SnapshotBanner } from "/components/SnapshotBanner";
import { useParams } from "react-router"; import { useParams } from "react-router";
import type { NonconformitiesPageQuery } from "./__generated__/NonconformitiesPageQuery.graphql";
import type { import type {
NonconformitiesPageFragment$key, NonconformitiesPageFragment$key,
NonconformitiesPageFragment$data, NonconformitiesPageFragment$data,
} from "./__generated__/NonconformitiesPageFragment.graphql"; } from "./__generated__/NonconformitiesPageFragment.graphql";
import { use } from "react"; import { use } from "react";
import { PermissionsContext } from "/providers/PermissionsContext"; import { PermissionsContext } from "/providers/PermissionsContext";
import type { NonconformityGraphListQuery } from "/hooks/graph/__generated__/NonconformityGraphListQuery.graphql";
type Nonconformity = NonconformitiesPageFragment$data['nonconformities']['edges'][number]['node']; type Nonconformity = NonconformitiesPageFragment$data['nonconformities']['edges'][number]['node'];
interface NonconformitiesPageProps { interface NonconformitiesPageProps {
queryRef: PreloadedQuery<NonconformitiesPageQuery>; queryRef: PreloadedQuery<NonconformityGraphListQuery>;
} }
const nonconformitiesPageFragment = graphql` const nonconformitiesPageFragment = graphql`
@@ -108,15 +108,7 @@ export default function NonconformitiesPage({ queryRef }: NonconformitiesPagePro
usePageTitle(__("Nonconformities")); usePageTitle(__("Nonconformities"));
const organization = usePreloadedQuery( const organization = usePreloadedQuery(
graphql` nonconformitiesQuery,
query NonconformitiesPageQuery($organizationId: ID!, $snapshotId: ID) {
node(id: $organizationId) {
... on Organization {
...NonconformitiesPageFragment @arguments(snapshotId: $snapshotId)
}
}
}
`,
queryRef queryRef
); );

View File

@@ -100,10 +100,6 @@ export default function ObligationDetailsPage(props: Props) {
} }
); );
if (!obligation) {
return <div>{__("Obligation not found")}</div>;
}
const onSubmit = handleSubmit(async (formData) => { const onSubmit = handleSubmit(async (formData) => {
try { try {
await updateObligation({ await updateObligation({

View File

@@ -27,21 +27,21 @@ import {
import { useParams } from "react-router"; import { useParams } from "react-router";
import { useOrganizationId } from "/hooks/useOrganizationId"; import { useOrganizationId } from "/hooks/useOrganizationId";
import { CreateObligationDialog } from "./dialogs/CreateObligationDialog"; import { CreateObligationDialog } from "./dialogs/CreateObligationDialog";
import { deleteObligationMutation } from "../../../hooks/graph/ObligationGraph"; import { deleteObligationMutation, obligationsQuery } from "../../../hooks/graph/ObligationGraph";
import { promisifyMutation, getObligationStatusVariant, getObligationStatusLabel, formatDate } from "@probo/helpers"; import { promisifyMutation, getObligationStatusVariant, getObligationStatusLabel, formatDate } from "@probo/helpers";
import { SnapshotBanner } from "/components/SnapshotBanner"; import { SnapshotBanner } from "/components/SnapshotBanner";
import type { ObligationsPageQuery } from "./__generated__/ObligationsPageQuery.graphql";
import type { import type {
ObligationsPageFragment$key, ObligationsPageFragment$key,
ObligationsPageFragment$data, ObligationsPageFragment$data,
} from "./__generated__/ObligationsPageFragment.graphql"; } from "./__generated__/ObligationsPageFragment.graphql";
import { use } from "react"; import { use } from "react";
import { PermissionsContext } from "/providers/PermissionsContext"; import { PermissionsContext } from "/providers/PermissionsContext";
import type { ObligationGraphListQuery } from "/hooks/graph/__generated__/ObligationGraphListQuery.graphql";
type Obligation = ObligationsPageFragment$data['obligations']['edges'][number]['node']; type Obligation = ObligationsPageFragment$data['obligations']['edges'][number]['node'];
interface ObligationsPageProps { interface ObligationsPageProps {
queryRef: PreloadedQuery<ObligationsPageQuery>; queryRef: PreloadedQuery<ObligationGraphListQuery>;
} }
const obligationsPageFragment = graphql` const obligationsPageFragment = graphql`
@@ -100,15 +100,7 @@ export default function ObligationsPage({ queryRef }: ObligationsPageProps) {
usePageTitle(__("Obligations")); usePageTitle(__("Obligations"));
const organization = usePreloadedQuery( const organization = usePreloadedQuery(
graphql` obligationsQuery,
query ObligationsPageQuery($organizationId: ID!, $snapshotId: ID) {
node(id: $organizationId) {
... on Organization {
...ObligationsPageFragment @arguments(snapshotId: $snapshotId)
}
}
}
`,
queryRef queryRef
); );

View File

@@ -29,20 +29,20 @@ import {
import { useOrganizationId } from "/hooks/useOrganizationId"; import { useOrganizationId } from "/hooks/useOrganizationId";
import { useParams } from "react-router"; import { useParams } from "react-router";
import { CreateProcessingActivityDialog } from "./dialogs/CreateProcessingActivityDialog"; import { CreateProcessingActivityDialog } from "./dialogs/CreateProcessingActivityDialog";
import { deleteProcessingActivityMutation, ProcessingActivitiesConnectionKey } from "../../../hooks/graph/ProcessingActivityGraph"; import { deleteProcessingActivityMutation, ProcessingActivitiesConnectionKey, processingActivitiesQuery } from "../../../hooks/graph/ProcessingActivityGraph";
import { sprintf, promisifyMutation } from "@probo/helpers"; import { sprintf, promisifyMutation } from "@probo/helpers";
import { SnapshotBanner } from "/components/SnapshotBanner"; import { SnapshotBanner } from "/components/SnapshotBanner";
import type { NodeOf } from "/types"; import type { NodeOf } from "/types";
import type { ProcessingActivitiesPageQuery } from "./__generated__/ProcessingActivitiesPageQuery.graphql";
import type { import type {
ProcessingActivitiesPageFragment$key, ProcessingActivitiesPageFragment$key,
ProcessingActivitiesPageFragment$data, ProcessingActivitiesPageFragment$data,
} from "./__generated__/ProcessingActivitiesPageFragment.graphql"; } from "./__generated__/ProcessingActivitiesPageFragment.graphql";
import { PermissionsContext } from "/providers/PermissionsContext"; import { PermissionsContext } from "/providers/PermissionsContext";
import { use } from "react"; import { use } from "react";
import type { ProcessingActivityGraphListQuery } from "/hooks/graph/__generated__/ProcessingActivityGraphListQuery.graphql";
interface ProcessingActivitiesPageProps { interface ProcessingActivitiesPageProps {
queryRef: PreloadedQuery<ProcessingActivitiesPageQuery>; queryRef: PreloadedQuery<ProcessingActivityGraphListQuery>;
} }
const processingActivitiesPageFragment = graphql` const processingActivitiesPageFragment = graphql`
@@ -96,15 +96,7 @@ export default function ProcessingActivitiesPage({ queryRef }: ProcessingActivit
usePageTitle(__("Processing Activities")); usePageTitle(__("Processing Activities"));
const organization = usePreloadedQuery( const organization = usePreloadedQuery(
graphql` processingActivitiesQuery,
query ProcessingActivitiesPageQuery($organizationId: ID!, $snapshotId: ID) {
node(id: $organizationId) {
... on Organization {
...ProcessingActivitiesPageFragment @arguments(snapshotId: $snapshotId)
}
}
}
`,
queryRef queryRef
); );
@@ -114,12 +106,9 @@ export default function ProcessingActivitiesPage({ queryRef }: ProcessingActivit
hasNext, hasNext,
isLoadingNext, isLoadingNext,
} = usePaginationFragment< } = usePaginationFragment<
ProcessingActivitiesPageQuery, ProcessingActivityGraphListQuery,
ProcessingActivitiesPageFragment$key ProcessingActivitiesPageFragment$key
>(processingActivitiesPageFragment, organization.node); >(processingActivitiesPageFragment, organization.node);
if (!data) {
return <div>{__("Organization not found")}</div>;
}
const connectionId = ConnectionHandler.getConnectionID( const connectionId = ConnectionHandler.getConnectionID(
organizationId, organizationId,

View File

@@ -116,10 +116,6 @@ export default function ProcessingActivityDetailsPage(props: Props) {
} }
); );
if (!activity) {
return <div>{__("Processing activity not found")}</div>;
}
const onSubmit = handleSubmit(async (formData) => { const onSubmit = handleSubmit(async (formData) => {
try { try {
await updateActivity({ await updateActivity({

View File

@@ -56,10 +56,6 @@ export default function VendorDetailPage(props: Props) {
vendor as VendorComplianceTabFragment$key vendor as VendorComplianceTabFragment$key
).complianceReports.edges.length; ).complianceReports.edges.length;
if (!vendor) {
return <div>{__("Vendor not found")}</div>;
}
const vendorsUrl = isSnapshotMode && snapshotId const vendorsUrl = isSnapshotMode && snapshotId
? `/organizations/${organizationId}/snapshots/${snapshotId}/vendors` ? `/organizations/${organizationId}/snapshots/${snapshotId}/vendors`
: `/organizations/${organizationId}/vendors`; : `/organizations/${organizationId}/vendors`;