From 2fad108b424c9d4a6f603904f846a65db9940e6d Mon Sep 17 00:00:00 2001 From: nkdengineer Date: Tue, 25 Feb 2025 16:43:30 +0700 Subject: [PATCH 1/3] fix: Wrong navigation with RHP back button on Settlement account page --- src/ROUTES.ts | 2 +- src/libs/Navigation/types.ts | 1 + .../workspace/expensifyCard/WorkspaceCardSettingsPage.tsx | 2 +- .../expensifyCard/WorkspaceSettlementAccountPage.tsx | 8 +++++++- 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/ROUTES.ts b/src/ROUTES.ts index e7d6990db8d5..6b7c281909bc 100644 --- a/src/ROUTES.ts +++ b/src/ROUTES.ts @@ -1473,7 +1473,7 @@ const ROUTES = { }, WORKSPACE_EXPENSIFY_CARD_SETTINGS_ACCOUNT: { route: 'settings/workspaces/:policyID/expensify-card/settings/account', - getRoute: (policyID: string) => `settings/workspaces/${policyID}/expensify-card/settings/account` as const, + getRoute: (policyID: string, backTo?: string) => getUrlWithBackToParam(`settings/workspaces/${policyID}/expensify-card/settings/account`, backTo), }, WORKSPACE_EXPENSIFY_CARD_SETTINGS_FREQUENCY: { route: 'settings/workspaces/:policyID/expensify-card/settings/frequency', diff --git a/src/libs/Navigation/types.ts b/src/libs/Navigation/types.ts index f76f935014d5..5080c6c612dd 100644 --- a/src/libs/Navigation/types.ts +++ b/src/libs/Navigation/types.ts @@ -858,6 +858,7 @@ type SettingsNavigatorParamList = { }; [SCREENS.WORKSPACE.EXPENSIFY_CARD_SETTINGS_ACCOUNT]: { policyID: string; + backTo?: Routes; }; [SCREENS.WORKSPACE.EXPENSIFY_CARD_SETTINGS_FREQUENCY]: { policyID: string; diff --git a/src/pages/workspace/expensifyCard/WorkspaceCardSettingsPage.tsx b/src/pages/workspace/expensifyCard/WorkspaceCardSettingsPage.tsx index f05ba655a1fd..86f0c39f3e48 100644 --- a/src/pages/workspace/expensifyCard/WorkspaceCardSettingsPage.tsx +++ b/src/pages/workspace/expensifyCard/WorkspaceCardSettingsPage.tsx @@ -56,7 +56,7 @@ function WorkspaceCardSettingsPage({route}: WorkspaceCardSettingsPageProps) { description={translate('workspace.expensifyCard.settlementAccount')} title={bankAccountNumber ? `${CONST.MASKED_PAN_PREFIX}${getLastFourDigits(bankAccountNumber)}` : ''} shouldShowRightIcon - onPress={() => Navigation.navigate(ROUTES.WORKSPACE_EXPENSIFY_CARD_SETTINGS_ACCOUNT.getRoute(policyID))} + onPress={() => Navigation.navigate(ROUTES.WORKSPACE_EXPENSIFY_CARD_SETTINGS_ACCOUNT.getRoute(policyID, Navigation.getActiveRoute()))} /> diff --git a/src/pages/workspace/expensifyCard/WorkspaceSettlementAccountPage.tsx b/src/pages/workspace/expensifyCard/WorkspaceSettlementAccountPage.tsx index 6ba68ba25fa7..4086a25e362b 100644 --- a/src/pages/workspace/expensifyCard/WorkspaceSettlementAccountPage.tsx +++ b/src/pages/workspace/expensifyCard/WorkspaceSettlementAccountPage.tsx @@ -95,7 +95,13 @@ function WorkspaceSettlementAccountPage({route}: WorkspaceSettlementAccountPageP > Navigation.goBack(ROUTES.WORKSPACE_EXPENSIFY_CARD_SETTINGS.getRoute(policyID))} + onBackButtonPress={() => { + if (route.params?.backTo) { + Navigation.goBack(route.params.backTo); + return; + } + Navigation.goBack(ROUTES.WORKSPACE_EXPENSIFY_CARD_SETTINGS.getRoute(policyID)); + }} /> Date: Tue, 25 Feb 2025 16:57:42 +0700 Subject: [PATCH 2/3] fix lint --- .../WorkspaceCardSettingsPage.tsx | 8 +++---- .../WorkspaceSettlementAccountPage.tsx | 24 +++++++++---------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/pages/workspace/expensifyCard/WorkspaceCardSettingsPage.tsx b/src/pages/workspace/expensifyCard/WorkspaceCardSettingsPage.tsx index 86f0c39f3e48..58b2e4cc7f15 100644 --- a/src/pages/workspace/expensifyCard/WorkspaceCardSettingsPage.tsx +++ b/src/pages/workspace/expensifyCard/WorkspaceCardSettingsPage.tsx @@ -11,7 +11,7 @@ import useLocalize from '@hooks/useLocalize'; import useThemeStyles from '@hooks/useThemeStyles'; import {getLastFourDigits} from '@libs/BankAccountUtils'; import type {PlatformStackScreenProps} from '@libs/Navigation/PlatformStackNavigation/types'; -import * as PolicyUtils from '@libs/PolicyUtils'; +import {getWorkspaceAccountID} from '@libs/PolicyUtils'; import Navigation from '@navigation/Navigation'; import type {SettingsNavigatorParamList} from '@navigation/types'; import AccessOrNotFoundWrapper from '@pages/workspace/AccessOrNotFoundWrapper'; @@ -26,16 +26,16 @@ function WorkspaceCardSettingsPage({route}: WorkspaceCardSettingsPageProps) { const styles = useThemeStyles(); const {translate} = useLocalize(); const policyID = route.params?.policyID; - const workspaceAccountID = PolicyUtils.getWorkspaceAccountID(policyID); + const workspaceAccountID = getWorkspaceAccountID(policyID); const [bankAccountList] = useOnyx(ONYXKEYS.BANK_ACCOUNT_LIST); const [cardSettings] = useOnyx(`${ONYXKEYS.COLLECTION.PRIVATE_EXPENSIFY_CARD_SETTINGS}${workspaceAccountID}`); - const paymentBankAccountID = cardSettings?.paymentBankAccountID ?? 0; + const paymentBankAccountID = cardSettings?.paymentBankAccountID; const isMonthlySettlementAllowed = cardSettings?.isMonthlySettlementAllowed ?? false; const settlementFrequency = cardSettings?.monthlySettlementDate ? CONST.EXPENSIFY_CARD.FREQUENCY_SETTING.MONTHLY : CONST.EXPENSIFY_CARD.FREQUENCY_SETTING.DAILY; const isSettlementFrequencyBlocked = !isMonthlySettlementAllowed && settlementFrequency === CONST.EXPENSIFY_CARD.FREQUENCY_SETTING.DAILY; - const bankAccountNumber = bankAccountList?.[paymentBankAccountID.toString()]?.accountData?.accountNumber ?? ''; + const bankAccountNumber = paymentBankAccountID ? bankAccountList?.[paymentBankAccountID.toString()]?.accountData?.accountNumber ?? '' : ''; return ( { const options = eligibleBankAccounts.map((bankAccount) => { @@ -78,7 +78,7 @@ function WorkspaceSettlementAccountPage({route}: WorkspaceSettlementAccountPageP }, [eligibleBankAccounts, paymentBankAccountID, styles, translate]); const updateSettlementAccount = (value: number) => { - Card.updateSettlementAccount(workspaceAccountID, policyID, value, paymentBankAccountID); + updateSettlementAccountCard(workspaceAccountID, policyID, value, paymentBankAccountID); Navigation.goBack(); }; @@ -108,7 +108,7 @@ function WorkspaceSettlementAccountPage({route}: WorkspaceSettlementAccountPageP ListItem={RadioListItem} onSelectRow={({value}) => updateSettlementAccount(value ?? 0)} shouldSingleExecuteRowSelect - initiallyFocusedOptionKey={paymentBankAccountID.toString()} + initiallyFocusedOptionKey={paymentBankAccountID ? paymentBankAccountID.toString() : ''} listHeaderContent={ <> {translate('workspace.expensifyCard.settlementAccountDescription')} From 246a0ecf719b90e80ab4928a656c362e25e6e567 Mon Sep 17 00:00:00 2001 From: nkdengineer Date: Wed, 26 Feb 2025 16:44:24 +0700 Subject: [PATCH 3/3] fix lint and some minor change --- .../ReconciliationAccountSettingsPage.tsx | 24 +++++++++---------- .../WorkspaceSettlementAccountPage.tsx | 2 +- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/pages/workspace/accounting/reconciliation/ReconciliationAccountSettingsPage.tsx b/src/pages/workspace/accounting/reconciliation/ReconciliationAccountSettingsPage.tsx index 9fb208fae402..e4538e80ae5a 100644 --- a/src/pages/workspace/accounting/reconciliation/ReconciliationAccountSettingsPage.tsx +++ b/src/pages/workspace/accounting/reconciliation/ReconciliationAccountSettingsPage.tsx @@ -7,14 +7,14 @@ import Text from '@components/Text'; import TextLink from '@components/TextLink'; import useLocalize from '@hooks/useLocalize'; import useThemeStyles from '@hooks/useThemeStyles'; -import * as AccountingUtils from '@libs/AccountingUtils'; +import {getConnectionNameFromRouteParam} from '@libs/AccountingUtils'; import {getLastFourDigits} from '@libs/BankAccountUtils'; -import * as CardUtils from '@libs/CardUtils'; +import {getEligibleBankAccountsForCard} from '@libs/CardUtils'; import type {PlatformStackScreenProps} from '@libs/Navigation/PlatformStackNavigation/types'; -import * as PolicyUtils from '@libs/PolicyUtils'; +import {getWorkspaceAccountID} from '@libs/PolicyUtils'; import Navigation from '@navigation/Navigation'; import type {SettingsNavigatorParamList} from '@navigation/types'; -import * as Card from '@userActions/Card'; +import {updateSettlementAccount} from '@userActions/Card'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; import ROUTES from '@src/ROUTES'; @@ -29,14 +29,14 @@ function ReconciliationAccountSettingsPage({route}: ReconciliationAccountSetting const styles = useThemeStyles(); const {translate} = useLocalize(); - const workspaceAccountID = PolicyUtils.getWorkspaceAccountID(policyID); - const connectionName = AccountingUtils.getConnectionNameFromRouteParam(connection); + const workspaceAccountID = getWorkspaceAccountID(policyID); + const connectionName = getConnectionNameFromRouteParam(connection); const [bankAccountList] = useOnyx(ONYXKEYS.BANK_ACCOUNT_LIST); const [cardSettings] = useOnyx(`${ONYXKEYS.COLLECTION.PRIVATE_EXPENSIFY_CARD_SETTINGS}${workspaceAccountID}`); - const paymentBankAccountID = cardSettings?.paymentBankAccountID ?? 0; + const paymentBankAccountID = cardSettings?.paymentBankAccountID; - const selectedBankAccount = useMemo(() => bankAccountList?.[paymentBankAccountID.toString()], [paymentBankAccountID, bankAccountList]); + const selectedBankAccount = useMemo(() => bankAccountList?.[paymentBankAccountID?.toString() ?? ''], [paymentBankAccountID, bankAccountList]); const bankAccountNumber = useMemo(() => selectedBankAccount?.accountData?.accountNumber ?? '', [selectedBankAccount]); const settlementAccountEnding = getLastFourDigits(bankAccountNumber); @@ -44,7 +44,7 @@ function ReconciliationAccountSettingsPage({route}: ReconciliationAccountSetting if (!bankAccountList || isEmptyObject(bankAccountList)) { return []; } - const eligibleBankAccounts = CardUtils.getEligibleBankAccountsForCard(bankAccountList); + const eligibleBankAccounts = getEligibleBankAccountsForCard(bankAccountList); const data = eligibleBankAccounts.map((bankAccount) => ({ text: bankAccount.title, @@ -56,7 +56,7 @@ function ReconciliationAccountSettingsPage({route}: ReconciliationAccountSetting }, [bankAccountList, paymentBankAccountID]); const selectBankAccount = (newBankAccountID?: number) => { - Card.updateSettlementAccount(workspaceAccountID, policyID, newBankAccountID, paymentBankAccountID); + updateSettlementAccount(workspaceAccountID, policyID, newBankAccountID, paymentBankAccountID); Navigation.goBack(ROUTES.WORKSPACE_ACCOUNTING_CARD_RECONCILIATION.getRoute(policyID, connection)); }; @@ -75,7 +75,7 @@ function ReconciliationAccountSettingsPage({route}: ReconciliationAccountSetting {translate('workspace.accounting.chooseReconciliationAccount.chooseBankAccount')} {translate('workspace.accounting.chooseReconciliationAccount.accountMatches')} - Navigation.navigate(ROUTES.WORKSPACE_EXPENSIFY_CARD_SETTINGS_ACCOUNT.getRoute(policyID))}> + Navigation.navigate(ROUTES.WORKSPACE_EXPENSIFY_CARD_SETTINGS_ACCOUNT.getRoute(policyID, Navigation.getActiveRoute()))}> {translate('workspace.accounting.chooseReconciliationAccount.settlementAccount')} {translate('workspace.accounting.chooseReconciliationAccount.reconciliationWorks', {lastFourPAN: settlementAccountEnding})} @@ -85,7 +85,7 @@ function ReconciliationAccountSettingsPage({route}: ReconciliationAccountSetting sections={sections} onSelectRow={({value}) => selectBankAccount(value)} ListItem={RadioListItem} - initiallyFocusedOptionKey={paymentBankAccountID.toString()} + initiallyFocusedOptionKey={paymentBankAccountID?.toString()} /> ); diff --git a/src/pages/workspace/expensifyCard/WorkspaceSettlementAccountPage.tsx b/src/pages/workspace/expensifyCard/WorkspaceSettlementAccountPage.tsx index 523cdee34c38..3290ee8b3ce6 100644 --- a/src/pages/workspace/expensifyCard/WorkspaceSettlementAccountPage.tsx +++ b/src/pages/workspace/expensifyCard/WorkspaceSettlementAccountPage.tsx @@ -108,7 +108,7 @@ function WorkspaceSettlementAccountPage({route}: WorkspaceSettlementAccountPageP ListItem={RadioListItem} onSelectRow={({value}) => updateSettlementAccount(value ?? 0)} shouldSingleExecuteRowSelect - initiallyFocusedOptionKey={paymentBankAccountID ? paymentBankAccountID.toString() : ''} + initiallyFocusedOptionKey={paymentBankAccountID?.toString()} listHeaderContent={ <> {translate('workspace.expensifyCard.settlementAccountDescription')}