New useNavigateApp (#9729)

Todo : 
- replace all instances of useNavigate(
- remove getSettingsPagePath
- add eslint rule to enfore usage of useNavigateApp instead of
useNavigate
This commit is contained in:
Félix Malfait
2025-01-18 13:58:12 +01:00
committed by GitHub
parent 8572471973
commit 152902d1be
115 changed files with 975 additions and 679 deletions

View File

@ -1,10 +1,11 @@
import { useSelectedRecordIdOrThrow } from '@/action-menu/actions/record-actions/single-record/hooks/useSelectedRecordIdOrThrow';
import { ActionHookWithoutObjectMetadataItem } from '@/action-menu/actions/types/ActionHook';
import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular';
import { AppPath } from '@/types/AppPath';
import { useActiveWorkflowVersion } from '@/workflow/hooks/useActiveWorkflowVersion';
import { useWorkflowWithCurrentVersion } from '@/workflow/hooks/useWorkflowWithCurrentVersion';
import { useNavigate } from 'react-router-dom';
import { isDefined } from 'twenty-ui';
import { useNavigateApp } from '~/hooks/useNavigateApp';
export const useSeeActiveVersionWorkflowSingleRecordAction: ActionHookWithoutObjectMetadataItem =
() => {
@ -16,7 +17,7 @@ export const useSeeActiveVersionWorkflowSingleRecordAction: ActionHookWithoutObj
const workflowActiveVersion = useActiveWorkflowVersion(recordId);
const navigate = useNavigate();
const navigateApp = useNavigateApp();
const shouldBeRegistered = isDefined(workflowActiveVersion) && isDraft;
@ -25,9 +26,10 @@ export const useSeeActiveVersionWorkflowSingleRecordAction: ActionHookWithoutObj
return;
}
navigate(
`/object/${CoreObjectNameSingular.WorkflowVersion}/${workflowActiveVersion.id}`,
);
navigateApp(AppPath.RecordShowPage, {
objectNameSingular: CoreObjectNameSingular.WorkflowVersion,
objectRecordId: workflowActiveVersion.id,
});
};
return {

View File

@ -1,11 +1,11 @@
import { useSelectedRecordIdOrThrow } from '@/action-menu/actions/record-actions/single-record/hooks/useSelectedRecordIdOrThrow';
import { ActionHookWithoutObjectMetadataItem } from '@/action-menu/actions/types/ActionHook';
import { CoreObjectNamePlural } from '@/object-metadata/types/CoreObjectNamePlural';
import { AppPath } from '@/types/AppPath';
import { ViewFilterOperand } from '@/views/types/ViewFilterOperand';
import { useWorkflowWithCurrentVersion } from '@/workflow/hooks/useWorkflowWithCurrentVersion';
import qs from 'qs';
import { useNavigate } from 'react-router-dom';
import { isDefined } from 'twenty-ui';
import { useNavigateApp } from '~/hooks/useNavigateApp';
export const useSeeRunsWorkflowSingleRecordAction: ActionHookWithoutObjectMetadataItem =
() => {
@ -13,7 +13,7 @@ export const useSeeRunsWorkflowSingleRecordAction: ActionHookWithoutObjectMetada
const workflowWithCurrentVersion = useWorkflowWithCurrentVersion(recordId);
const navigate = useNavigate();
const navigateApp = useNavigateApp();
const shouldBeRegistered = isDefined(workflowWithCurrentVersion);
@ -22,20 +22,21 @@ export const useSeeRunsWorkflowSingleRecordAction: ActionHookWithoutObjectMetada
return;
}
const filterQueryParams = {
filter: {
workflow: {
[ViewFilterOperand.Is]: {
selectedRecordIds: [workflowWithCurrentVersion.id],
navigateApp(
AppPath.RecordIndexPage,
{
objectNamePlural: CoreObjectNamePlural.WorkflowRun,
},
{
filter: {
workflow: {
[ViewFilterOperand.Is]: {
selectedRecordIds: [workflowWithCurrentVersion.id],
},
},
},
},
};
const filterLinkHref = `/objects/${CoreObjectNamePlural.WorkflowRun}?${qs.stringify(
filterQueryParams,
)}`;
navigate(filterLinkHref);
);
};
return {

View File

@ -1,11 +1,11 @@
import { useSelectedRecordIdOrThrow } from '@/action-menu/actions/record-actions/single-record/hooks/useSelectedRecordIdOrThrow';
import { ActionHookWithoutObjectMetadataItem } from '@/action-menu/actions/types/ActionHook';
import { CoreObjectNamePlural } from '@/object-metadata/types/CoreObjectNamePlural';
import { AppPath } from '@/types/AppPath';
import { ViewFilterOperand } from '@/views/types/ViewFilterOperand';
import { useWorkflowWithCurrentVersion } from '@/workflow/hooks/useWorkflowWithCurrentVersion';
import qs from 'qs';
import { useNavigate } from 'react-router-dom';
import { isDefined } from 'twenty-ui';
import { useNavigateApp } from '~/hooks/useNavigateApp';
export const useSeeVersionsWorkflowSingleRecordAction: ActionHookWithoutObjectMetadataItem =
() => {
@ -13,29 +13,28 @@ export const useSeeVersionsWorkflowSingleRecordAction: ActionHookWithoutObjectMe
const workflowWithCurrentVersion = useWorkflowWithCurrentVersion(recordId);
const navigate = useNavigate();
const navigateApp = useNavigateApp();
const shouldBeRegistered = isDefined(workflowWithCurrentVersion);
const onClick = () => {
if (!shouldBeRegistered) {
return;
}
if (!shouldBeRegistered) return;
const filterQueryParams = {
filter: {
workflow: {
[ViewFilterOperand.Is]: {
selectedRecordIds: [workflowWithCurrentVersion.id],
navigateApp(
AppPath.RecordIndexPage,
{
objectNamePlural: CoreObjectNamePlural.WorkflowVersion,
},
{
filter: {
workflow: {
[ViewFilterOperand.Is]: {
selectedRecordIds: [workflowWithCurrentVersion.id],
},
},
},
},
};
const filterLinkHref = `/objects/${CoreObjectNamePlural.WorkflowVersion}?${qs.stringify(
filterQueryParams,
)}`;
navigate(filterLinkHref);
);
};
return {

View File

@ -2,12 +2,12 @@ import { useSelectedRecordIdOrThrow } from '@/action-menu/actions/record-actions
import { ActionHookWithoutObjectMetadataItem } from '@/action-menu/actions/types/ActionHook';
import { CoreObjectNamePlural } from '@/object-metadata/types/CoreObjectNamePlural';
import { recordStoreFamilyState } from '@/object-record/record-store/states/recordStoreFamilyState';
import { AppPath } from '@/types/AppPath';
import { ViewFilterOperand } from '@/views/types/ViewFilterOperand';
import { useWorkflowWithCurrentVersion } from '@/workflow/hooks/useWorkflowWithCurrentVersion';
import qs from 'qs';
import { useNavigate } from 'react-router-dom';
import { useRecoilValue } from 'recoil';
import { isDefined } from 'twenty-ui';
import { useNavigateApp } from '~/hooks/useNavigateApp';
export const useSeeRunsWorkflowVersionSingleRecordAction: ActionHookWithoutObjectMetadataItem =
() => {
@ -19,32 +19,33 @@ export const useSeeRunsWorkflowVersionSingleRecordAction: ActionHookWithoutObjec
workflowVersion?.workflow.id,
);
const navigate = useNavigate();
const navigateApp = useNavigateApp();
const shouldBeRegistered = isDefined(workflowWithCurrentVersion);
const onClick = () => {
if (!shouldBeRegistered) return;
const filterQueryParams = {
filter: {
workflow: {
[ViewFilterOperand.Is]: {
selectedRecordIds: [workflowWithCurrentVersion.id],
navigateApp(
AppPath.RecordIndexPage,
{
objectNamePlural: CoreObjectNamePlural.WorkflowRun,
},
{
filter: {
workflow: {
[ViewFilterOperand.Is]: {
selectedRecordIds: [workflowWithCurrentVersion.id],
},
},
},
workflowVersion: {
[ViewFilterOperand.Is]: {
selectedRecordIds: [recordId],
workflowVersion: {
[ViewFilterOperand.Is]: {
selectedRecordIds: [recordId],
},
},
},
},
};
const filterLinkHref = `/objects/${CoreObjectNamePlural.WorkflowRun}?${qs.stringify(
filterQueryParams,
)}`;
navigate(filterLinkHref);
);
};
return {

View File

@ -2,12 +2,12 @@ import { useSelectedRecordIdOrThrow } from '@/action-menu/actions/record-actions
import { ActionHookWithoutObjectMetadataItem } from '@/action-menu/actions/types/ActionHook';
import { CoreObjectNamePlural } from '@/object-metadata/types/CoreObjectNamePlural';
import { recordStoreFamilyState } from '@/object-record/record-store/states/recordStoreFamilyState';
import { AppPath } from '@/types/AppPath';
import { ViewFilterOperand } from '@/views/types/ViewFilterOperand';
import { useWorkflowWithCurrentVersion } from '@/workflow/hooks/useWorkflowWithCurrentVersion';
import qs from 'qs';
import { useNavigate } from 'react-router-dom';
import { useRecoilValue } from 'recoil';
import { isDefined } from 'twenty-ui';
import { useNavigateApp } from '~/hooks/useNavigateApp';
export const useSeeVersionsWorkflowVersionSingleRecordAction: ActionHookWithoutObjectMetadataItem =
() => {
@ -19,29 +19,28 @@ export const useSeeVersionsWorkflowVersionSingleRecordAction: ActionHookWithoutO
workflowVersion?.workflowId,
);
const navigate = useNavigate();
const navigateApp = useNavigateApp();
const shouldBeRegistered = isDefined(workflowWithCurrentVersion);
const onClick = () => {
if (!shouldBeRegistered) {
return;
}
if (!shouldBeRegistered) return;
const filterQueryParams = {
filter: {
workflow: {
[ViewFilterOperand.Is]: {
selectedRecordIds: [workflowWithCurrentVersion.id],
navigateApp(
AppPath.RecordIndexPage,
{
objectNamePlural: CoreObjectNamePlural.WorkflowVersion,
},
{
filter: {
workflow: {
[ViewFilterOperand.Is]: {
selectedRecordIds: [workflowWithCurrentVersion.id],
},
},
},
},
};
const filterLinkHref = `/objects/${CoreObjectNamePlural.WorkflowVersion}?${qs.stringify(
filterQueryParams,
)}`;
navigate(filterLinkHref);
);
};
return {

View File

@ -1,15 +1,15 @@
import { useSelectedRecordIdOrThrow } from '@/action-menu/actions/record-actions/single-record/hooks/useSelectedRecordIdOrThrow';
import { ActionHookWithoutObjectMetadataItem } from '@/action-menu/actions/types/ActionHook';
import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular';
import { buildShowPageURL } from '@/object-record/record-show/utils/buildShowPageURL';
import { AppPath } from '@/types/AppPath';
import { OverrideWorkflowDraftConfirmationModal } from '@/workflow/components/OverrideWorkflowDraftConfirmationModal';
import { useCreateDraftFromWorkflowVersion } from '@/workflow/hooks/useCreateDraftFromWorkflowVersion';
import { useWorkflowVersion } from '@/workflow/hooks/useWorkflowVersion';
import { useWorkflowWithCurrentVersion } from '@/workflow/hooks/useWorkflowWithCurrentVersion';
import { openOverrideWorkflowDraftConfirmationModalState } from '@/workflow/states/openOverrideWorkflowDraftConfirmationModalState';
import { useNavigate } from 'react-router-dom';
import { useSetRecoilState } from 'recoil';
import { isDefined } from 'twenty-ui';
import { useNavigateApp } from '~/hooks/useNavigateApp';
export const useUseAsDraftWorkflowVersionSingleRecordAction: ActionHookWithoutObjectMetadataItem =
() => {
@ -28,7 +28,7 @@ export const useUseAsDraftWorkflowVersionSingleRecordAction: ActionHookWithoutOb
openOverrideWorkflowDraftConfirmationModalState,
);
const navigate = useNavigate();
const navigate = useNavigateApp();
const hasAlreadyDraftVersion =
workflow?.versions.some((version) => version.status === 'DRAFT') || false;
@ -48,13 +48,10 @@ export const useUseAsDraftWorkflowVersionSingleRecordAction: ActionHookWithoutOb
workflowId: workflowVersion.workflow.id,
workflowVersionIdToCopy: workflowVersion.id,
});
navigate(
buildShowPageURL(
CoreObjectNameSingular.Workflow,
workflowVersion.workflow.id,
),
);
navigate(AppPath.RecordShowPage, {
objectNameSingular: CoreObjectNameSingular.Workflow,
objectRecordId: workflowVersion.workflow.id,
});
}
};