From cfbe10fa9bcf4703bd103b66ded1e89525bb6558 Mon Sep 17 00:00:00 2001 From: daledah Date: Fri, 14 Feb 2025 12:06:37 +0700 Subject: [PATCH] fix: add back to workspace confirmation page --- src/libs/Navigation/types.ts | 1 + src/pages/workspace/WorkspaceConfirmationPage.tsx | 14 ++++++-------- src/pages/workspace/WorkspaceInitialPage.tsx | 8 +++++++- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/src/libs/Navigation/types.ts b/src/libs/Navigation/types.ts index fa274d1ecf7e..70476589181b 100644 --- a/src/libs/Navigation/types.ts +++ b/src/libs/Navigation/types.ts @@ -1581,6 +1581,7 @@ type SettingsSplitNavigatorParamList = { type WorkspaceSplitNavigatorParamList = { [SCREENS.WORKSPACE.INITIAL]: { policyID: string; + backTo?: Routes; }; [SCREENS.WORKSPACE.PROFILE]: { policyID: string; diff --git a/src/pages/workspace/WorkspaceConfirmationPage.tsx b/src/pages/workspace/WorkspaceConfirmationPage.tsx index ea3638b0c84d..6a7b2f9ad9e3 100644 --- a/src/pages/workspace/WorkspaceConfirmationPage.tsx +++ b/src/pages/workspace/WorkspaceConfirmationPage.tsx @@ -1,23 +1,21 @@ +import {useRoute} from '@react-navigation/native'; import React from 'react'; import ScreenWrapper from '@components/ScreenWrapper'; import WorkspaceConfirmationForm from '@components/WorkspaceConfirmationForm'; import type {WorkspaceConfirmationSubmitFunctionParams} from '@components/WorkspaceConfirmationForm'; -import useResponsiveLayout from '@hooks/useResponsiveLayout'; import {createWorkspaceWithPolicyDraftAndNavigateToIt} from '@libs/actions/App'; import {generatePolicyID} from '@libs/actions/Policy/Policy'; import getCurrentUrl from '@libs/Navigation/currentUrl'; -import ROUTES from '@src/ROUTES'; +import type {PlatformStackRouteProp} from '@libs/Navigation/PlatformStackNavigation/types'; +import type {WorkspaceConfirmationNavigatorParamList} from '@libs/Navigation/types'; +import type SCREENS from '@src/SCREENS'; function WorkspaceConfirmationPage() { - // It is necessary to use here isSmallScreenWidth because on a wide layout we should always navigate to ROUTES.WORKSPACE_PROFILE. - // shouldUseNarrowLayout cannot be used to determine that as this screen is displayed in RHP and shouldUseNarrowLayout always returns true. - // eslint-disable-next-line rulesdir/prefer-shouldUseNarrowLayout-instead-of-isSmallScreenWidth - const {isSmallScreenWidth} = useResponsiveLayout(); + const route = useRoute>(); const onSubmit = (params: WorkspaceConfirmationSubmitFunctionParams) => { const policyID = params.policyID || generatePolicyID(); - const routeToNavigate = isSmallScreenWidth ? ROUTES.WORKSPACE_INITIAL.getRoute(policyID) : ROUTES.WORKSPACE_PROFILE.getRoute(policyID); - createWorkspaceWithPolicyDraftAndNavigateToIt('', params.name, false, false, '', policyID, params.currency, params.avatarFile as File, routeToNavigate); + createWorkspaceWithPolicyDraftAndNavigateToIt('', params.name, false, false, route.params?.backTo, policyID, params.currency, params.avatarFile as File); }; const currentUrl = getCurrentUrl(); // Approved Accountants and Guides can enter a flow where they make a workspace for other users, diff --git a/src/pages/workspace/WorkspaceInitialPage.tsx b/src/pages/workspace/WorkspaceInitialPage.tsx index af7a1c9d9189..6212886f2782 100644 --- a/src/pages/workspace/WorkspaceInitialPage.tsx +++ b/src/pages/workspace/WorkspaceInitialPage.tsx @@ -449,7 +449,13 @@ function WorkspaceInitialPage({policyDraft, policy: policyProp, route}: Workspac > Navigation.goBack(ROUTES.SETTINGS_WORKSPACES)} + onBackButtonPress={() => { + if (route.params.backTo) { + Navigation.navigate(route.params.backTo); + return; + } + Navigation.goBack(ROUTES.SETTINGS_WORKSPACES); + }} policyAvatar={policyAvatar} style={styles.headerBarDesktopHeight} />