Skip to content

Commit 7bec576

Browse files
authored
Merge pull request #50538 from bernhardoj/fix/50162-add-backto-to-approval-flow-page
Fix approval workflow page doesn't go back to the correct page
2 parents 476d112 + b86885e commit 7bec576

3 files changed

+25
-8
lines changed

src/pages/workspace/workflows/approvals/WorkspaceWorkflowsApprovalsApproverPage.tsx

+10-4
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ function WorkspaceWorkflowsApprovalsApproverPage({policy, personalDetails, isLoa
6060
const approverIndex = Number(route.params.approverIndex) ?? 0;
6161
const isInitialCreationFlow = approvalWorkflow?.action === CONST.APPROVAL_WORKFLOW.ACTION.CREATE && !route.params.backTo;
6262
const defaultApprover = policy?.approver ?? policy?.owner;
63+
const firstApprover = approvalWorkflow?.approvers?.[0]?.email ?? '';
6364

6465
useEffect(() => {
6566
const currentApprover = approvalWorkflow?.approvers[approverIndex];
@@ -158,10 +159,9 @@ function WorkspaceWorkflowsApprovalsApproverPage({policy, personalDetails, isLoa
158159
if (approvalWorkflow?.action === CONST.APPROVAL_WORKFLOW.ACTION.CREATE) {
159160
Navigation.navigate(ROUTES.WORKSPACE_WORKFLOWS_APPROVALS_NEW.getRoute(route.params.policyID));
160161
} else {
161-
const firstApprover = approvalWorkflow?.approvers?.[0]?.email ?? '';
162162
Navigation.goBack(ROUTES.WORKSPACE_WORKFLOWS_APPROVALS_EDIT.getRoute(route.params.policyID, firstApprover));
163163
}
164-
}, [approvalWorkflow, approverIndex, personalDetails, employeeList, route.params.policyID, selectedApproverEmail]);
164+
}, [approvalWorkflow?.action, firstApprover, approverIndex, personalDetails, employeeList, route.params.policyID, selectedApproverEmail]);
165165

166166
const button = useMemo(() => {
167167
let buttonText = isInitialCreationFlow ? translate('common.next') : translate('common.save');
@@ -182,11 +182,17 @@ function WorkspaceWorkflowsApprovalsApproverPage({policy, personalDetails, isLoa
182182
}, [isInitialCreationFlow, nextStep, selectedApproverEmail, shouldShowListEmptyContent, styles.flexBasisAuto, styles.flexGrow0, styles.flexReset, styles.flexShrink0, translate]);
183183

184184
const goBack = useCallback(() => {
185+
let backTo;
185186
if (isInitialCreationFlow) {
187+
backTo = ROUTES.WORKSPACE_WORKFLOWS_APPROVALS_EXPENSES_FROM.getRoute(route.params.policyID);
186188
Workflow.clearApprovalWorkflowApprovers();
189+
} else if (approvalWorkflow?.action === CONST.APPROVAL_WORKFLOW.ACTION.EDIT) {
190+
backTo = ROUTES.WORKSPACE_WORKFLOWS_APPROVALS_EDIT.getRoute(route.params.policyID, firstApprover);
191+
} else {
192+
backTo = ROUTES.WORKSPACE_WORKFLOWS_APPROVALS_NEW.getRoute(route.params.policyID);
187193
}
188-
Navigation.goBack();
189-
}, [isInitialCreationFlow]);
194+
Navigation.goBack(backTo);
195+
}, [isInitialCreationFlow, route.params.policyID, approvalWorkflow?.action, firstApprover]);
190196

191197
const toggleApprover = (approver: SelectionListApprover) => {
192198
if (selectedApproverEmail === approver.login) {

src/pages/workspace/workflows/approvals/WorkspaceWorkflowsApprovalsCreatePage.tsx

+2-1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import type {WithPolicyAndFullscreenLoadingProps} from '@pages/workspace/withPol
1919
import * as Workflow from '@userActions/Workflow';
2020
import CONST from '@src/CONST';
2121
import ONYXKEYS from '@src/ONYXKEYS';
22+
import ROUTES from '@src/ROUTES';
2223
import type SCREENS from '@src/SCREENS';
2324
import {isEmptyObject} from '@src/types/utils/EmptyObject';
2425
import ApprovalWorkflowEditor from './ApprovalWorkflowEditor';
@@ -64,7 +65,7 @@ function WorkspaceWorkflowsApprovalsCreatePage({policy, isLoadingReportData = tr
6465
>
6566
<HeaderWithBackButton
6667
title={translate('workflowsCreateApprovalsPage.title')}
67-
onBackButtonPress={Navigation.goBack}
68+
onBackButtonPress={() => Navigation.goBack(ROUTES.WORKSPACE_WORKFLOWS_APPROVALS_APPROVER.getRoute(route.params.policyID, 0))}
6869
/>
6970
{approvalWorkflow && (
7071
<>

src/pages/workspace/workflows/approvals/WorkspaceWorkflowsApprovalsExpensesFromPage.tsx

+13-3
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ function WorkspaceWorkflowsApprovalsExpensesFromPage({policy, isLoadingReportDat
6161
const shouldShowNotFoundView = (isEmptyObject(policy) && !isLoadingReportData) || !PolicyUtils.isPolicyAdmin(policy) || PolicyUtils.isPendingDeletePolicy(policy);
6262
const isInitialCreationFlow = approvalWorkflow?.action === CONST.APPROVAL_WORKFLOW.ACTION.CREATE && !route.params.backTo;
6363
const shouldShowListEmptyContent = approvalWorkflow && approvalWorkflow.availableMembers.length === 0;
64+
const firstApprover = approvalWorkflow?.approvers?.[0]?.email ?? '';
6465

6566
useEffect(() => {
6667
if (!approvalWorkflow?.members) {
@@ -129,6 +130,16 @@ function WorkspaceWorkflowsApprovalsExpensesFromPage({policy, isLoadingReportDat
129130
];
130131
}, [approvalWorkflow?.availableMembers, debouncedSearchTerm, policy?.employeeList, selectedMembers, translate]);
131132

133+
const goBack = useCallback(() => {
134+
let backTo;
135+
if (approvalWorkflow?.action === CONST.APPROVAL_WORKFLOW.ACTION.EDIT) {
136+
backTo = ROUTES.WORKSPACE_WORKFLOWS_APPROVALS_EDIT.getRoute(route.params.policyID, firstApprover);
137+
} else if (!isInitialCreationFlow) {
138+
backTo = ROUTES.WORKSPACE_WORKFLOWS_APPROVALS_NEW.getRoute(route.params.policyID);
139+
}
140+
Navigation.goBack(backTo);
141+
}, [isInitialCreationFlow, route.params.policyID, firstApprover, approvalWorkflow?.action]);
142+
132143
const nextStep = useCallback(() => {
133144
const members: Member[] = selectedMembers.map((member) => ({displayName: member.text, avatar: member.icons?.[0]?.source, email: member.login}));
134145
Workflow.setApprovalWorkflowMembers(members);
@@ -141,10 +152,9 @@ function WorkspaceWorkflowsApprovalsExpensesFromPage({policy, isLoadingReportDat
141152
if (approvalWorkflow?.action === CONST.APPROVAL_WORKFLOW.ACTION.CREATE) {
142153
Navigation.navigate(ROUTES.WORKSPACE_WORKFLOWS_APPROVALS_APPROVER.getRoute(route.params.policyID, 0));
143154
} else {
144-
const firstApprover = approvalWorkflow?.approvers?.[0]?.email ?? '';
145155
Navigation.goBack(ROUTES.WORKSPACE_WORKFLOWS_APPROVALS_EDIT.getRoute(route.params.policyID, firstApprover));
146156
}
147-
}, [approvalWorkflow, route.params.backTo, route.params.policyID, selectedMembers]);
157+
}, [approvalWorkflow?.action, firstApprover, route.params.backTo, route.params.policyID, selectedMembers]);
148158

149159
const button = useMemo(() => {
150160
let buttonText = isInitialCreationFlow ? translate('common.next') : translate('common.save');
@@ -204,7 +214,7 @@ function WorkspaceWorkflowsApprovalsExpensesFromPage({policy, isLoadingReportDat
204214
>
205215
<HeaderWithBackButton
206216
title={translate('workflowsExpensesFromPage.title')}
207-
onBackButtonPress={() => Navigation.goBack()}
217+
onBackButtonPress={goBack}
208218
/>
209219

210220
{approvalWorkflow?.action === CONST.APPROVAL_WORKFLOW.ACTION.CREATE && !shouldShowListEmptyContent && (

0 commit comments

Comments
 (0)