From 70094b4a9602456371421732887468b8e376b1aa Mon Sep 17 00:00:00 2001 From: Abdelhafidh Belalia <16493223+s77rt@users.noreply.github.com> Date: Tue, 21 Jan 2025 10:17:31 +0100 Subject: [PATCH] pass integrationToDisconnect and shouldDisconnectIntegrationBeforeConnecting to multi connection route --- src/ROUTES.ts | 21 +++++++++++++++++-- src/libs/Navigation/types.ts | 2 ++ .../MultiConnectionSelectorPage.tsx | 12 ++++++++--- .../accounting/PolicyAccountingPage.tsx | 12 +++++++++-- .../NetSuiteTokenInputPage.tsx | 1 + 5 files changed, 41 insertions(+), 7 deletions(-) diff --git a/src/ROUTES.ts b/src/ROUTES.ts index beb7ec704baa..edd75c517063 100644 --- a/src/ROUTES.ts +++ b/src/ROUTES.ts @@ -1054,8 +1054,25 @@ const ROUTES = { }, WORKSPACE_ACCOUNTING_MULTI_CONNECTION_SELECTOR: { route: 'settings/workspaces/:policyID/accounting/:connection/connection-selector', - getRoute: (policyID: string, connection?: ValueOf) => - `settings/workspaces/${policyID}/accounting/${connection as string}/connection-selector` as const, + getRoute: ( + policyID: string, + connection: ValueOf, + integrationToDisconnect?: ConnectionName, + shouldDisconnectIntegrationBeforeConnecting?: boolean, + ) => { + const searchParams = new URLSearchParams(); + + if (integrationToDisconnect) { + searchParams.append('integrationToDisconnect', integrationToDisconnect); + } + if (shouldDisconnectIntegrationBeforeConnecting !== undefined) { + searchParams.append('shouldDisconnectIntegrationBeforeConnecting', shouldDisconnectIntegrationBeforeConnecting.toString()); + } + + const queryParams = searchParams.size ? `?${searchParams}` : ''; + + return `settings/workspaces/${policyID}/accounting/${connection}/connection-selector${queryParams}` as const; + }, }, WORKSPACE_CATEGORIES: { route: 'settings/workspaces/:policyID/categories', diff --git a/src/libs/Navigation/types.ts b/src/libs/Navigation/types.ts index 93ee22c6372e..13d5934fc0a3 100644 --- a/src/libs/Navigation/types.ts +++ b/src/libs/Navigation/types.ts @@ -790,6 +790,8 @@ type SettingsNavigatorParamList = { [SCREENS.WORKSPACE.ACCOUNTING.MULTI_CONNECTION_SELECTOR]: { policyID: string; connection: ValueOf; + integrationToDisconnect?: ConnectionName; + shouldDisconnectIntegrationBeforeConnecting?: boolean; }; [SCREENS.GET_ASSISTANCE]: { backTo: Routes; diff --git a/src/pages/workspace/accounting/MultiConnectionSelectorPage.tsx b/src/pages/workspace/accounting/MultiConnectionSelectorPage.tsx index ecf67e9e7498..00290a8d16e5 100644 --- a/src/pages/workspace/accounting/MultiConnectionSelectorPage.tsx +++ b/src/pages/workspace/accounting/MultiConnectionSelectorPage.tsx @@ -11,6 +11,7 @@ import {getConnectionNameFromRouteParam} from '@libs/AccountingUtils'; import type {WithPolicyConnectionsProps} from '@pages/workspace/withPolicyConnections'; import withPolicyConnections from '@pages/workspace/withPolicyConnections'; import CONST from '@src/CONST'; +import {ConnectionName} from '@src/types/onyx/Policy'; import AccessOrNotFoundWrapper from '../AccessOrNotFoundWrapper'; import {AccountingContextProvider, useAccountingContext} from './AccountingContext'; import {MenuItemData} from './types'; @@ -20,13 +21,19 @@ type MultiConnectionSelectorPageProps = WithPolicyConnectionsProps & { route: { params: { connection: ValueOf; + integrationToDisconnect?: ConnectionName; + shouldDisconnectIntegrationBeforeConnecting?: boolean; }; }; }; function MultiConnectionSelectorPage({policy, route}: MultiConnectionSelectorPageProps) { const policyID = policy?.id ?? '-1'; + const multiConnectionName = getConnectionNameFromRouteParam(route.params.connection); + const integrationToDisconnect = route.params.integrationToDisconnect; + const shouldDisconnectIntegrationBeforeConnecting = route.params.shouldDisconnectIntegrationBeforeConnecting; + const {translate} = useLocalize(); const styles = useThemeStyles(); @@ -51,9 +58,8 @@ function MultiConnectionSelectorPage({policy, route}: MultiConnectionSelectorPag onPress: () => { startIntegrationFlow({ name: integration, - // s77rt - //integrationToDisconnect: connectedIntegration, - //shouldDisconnectIntegrationBeforeConnecting: true, + integrationToDisconnect, + shouldDisconnectIntegrationBeforeConnecting, }); }, ref: (ref) => { diff --git a/src/pages/workspace/accounting/PolicyAccountingPage.tsx b/src/pages/workspace/accounting/PolicyAccountingPage.tsx index fc66505ca1a8..b0d11262fef8 100644 --- a/src/pages/workspace/accounting/PolicyAccountingPage.tsx +++ b/src/pages/workspace/accounting/PolicyAccountingPage.tsx @@ -456,14 +456,22 @@ function PolicyAccountingPage({policy}: PolicyAccountingPageProps) { rightComponent: (