Skip to content

Commit 5f8a034

Browse files
Merge pull request #206 from software-mansion-labs/poc/fix-navigating-after-creating-policy
Fix navigating from WorkspaceConfirmationPage on a wide layout
2 parents 178491f + 408806c commit 5f8a034

File tree

2 files changed

+15
-3
lines changed

2 files changed

+15
-3
lines changed

src/libs/actions/App.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -411,6 +411,7 @@ function endSignOnTransition() {
411411
* @param [policyID] Optional, Policy id.
412412
* @param [currency] Optional, selected currency for the workspace
413413
* @param [file], avatar file for workspace
414+
* @param [routeToNavigateAfterCreate], Optional, route to navigate after creating a workspace
414415
*/
415416
function createWorkspaceWithPolicyDraftAndNavigateToIt(
416417
policyOwnerEmail = '',
@@ -421,18 +422,19 @@ function createWorkspaceWithPolicyDraftAndNavigateToIt(
421422
policyID = '',
422423
currency?: string,
423424
file?: File,
425+
routeToNavigateAfterCreate?: Route,
424426
) {
425427
const policyIDWithDefault = policyID || generatePolicyID();
426428
createDraftInitialWorkspace(policyOwnerEmail, policyName, policyIDWithDefault, makeMeAdmin, currency, file);
427-
428429
Navigation.isNavigationReady()
429430
.then(() => {
430431
if (transitionFromOldDot) {
431432
// We must call goBack() to remove the /transition route from history
432433
Navigation.goBack();
433434
}
435+
const routeToNavigate = routeToNavigateAfterCreate ?? ROUTES.WORKSPACE_INITIAL.getRoute(policyIDWithDefault, backTo);
434436
savePolicyDraftByNewWorkspace(policyIDWithDefault, policyName, policyOwnerEmail, makeMeAdmin, currency, file);
435-
Navigation.navigate(ROUTES.WORKSPACE_INITIAL.getRoute(policyIDWithDefault, backTo), {forceReplace: !transitionFromOldDot});
437+
Navigation.navigate(routeToNavigate, {forceReplace: !transitionFromOldDot});
436438
})
437439
.then(endSignOnTransition);
438440
}

src/pages/workspace/WorkspaceConfirmationPage.tsx

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,22 @@ import React from 'react';
22
import ScreenWrapper from '@components/ScreenWrapper';
33
import WorkspaceConfirmationForm from '@components/WorkspaceConfirmationForm';
44
import type {WorkspaceConfirmationSubmitFunctionParams} from '@components/WorkspaceConfirmationForm';
5+
import useResponsiveLayout from '@hooks/useResponsiveLayout';
56
import {createWorkspaceWithPolicyDraftAndNavigateToIt} from '@libs/actions/App';
7+
import {generatePolicyID} from '@libs/actions/Policy/Policy';
68
import getCurrentUrl from '@libs/Navigation/currentUrl';
9+
import ROUTES from '@src/ROUTES';
710

811
function WorkspaceConfirmationPage() {
12+
// It is necessary to use here isSmallScreenWidth because on a wide layout we should always navigate to ROUTES.WORKSPACE_PROFILE.
13+
// shouldUseNarrowLayout cannot be used to determine that as this screen is displayed in RHP and shouldUseNarrowLayout always returns true.
14+
// eslint-disable-next-line rulesdir/prefer-shouldUseNarrowLayout-instead-of-isSmallScreenWidth
15+
const {isSmallScreenWidth} = useResponsiveLayout();
16+
917
const onSubmit = (params: WorkspaceConfirmationSubmitFunctionParams) => {
10-
createWorkspaceWithPolicyDraftAndNavigateToIt('', params.name, false, false, '', params.policyID, params.currency, params.avatarFile as File);
18+
const policyID = params.policyID || generatePolicyID();
19+
const routeToNavigate = isSmallScreenWidth ? ROUTES.WORKSPACE_INITIAL.getRoute(policyID) : ROUTES.WORKSPACE_PROFILE.getRoute(policyID);
20+
createWorkspaceWithPolicyDraftAndNavigateToIt('', params.name, false, false, '', policyID, params.currency, params.avatarFile as File, routeToNavigate);
1121
};
1222
const currentUrl = getCurrentUrl();
1323
// Approved Accountants and Guides can enter a flow where they make a workspace for other users,

0 commit comments

Comments
 (0)