diff --git a/src/components/ConnectToHRFlow/index.native.tsx b/src/components/ConnectToHRFlow/index.native.tsx index bb5e859d952d..db54e473fa04 100644 --- a/src/components/ConnectToHRFlow/index.native.tsx +++ b/src/components/ConnectToHRFlow/index.native.tsx @@ -1,5 +1,6 @@ import React, {useRef, useState} from 'react'; import {StyleSheet, View} from 'react-native'; +import type {WebViewNavigation} from 'react-native-webview'; import {WebView} from 'react-native-webview'; import ActivityIndicator from '@components/ActivityIndicator'; import FullPageOfflineBlockingView from '@components/BlockingViews/FullPageOfflineBlockingView'; @@ -10,6 +11,7 @@ import useOnyx from '@hooks/useOnyx'; import useThemeStyles from '@hooks/useThemeStyles'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; +import ROUTES from '@src/ROUTES'; import type ConnectToHRFlowProps from './types'; function ConnectToHRFlow({setupLink}: ConnectToHRFlowProps) { @@ -28,6 +30,13 @@ function ConnectToHRFlow({setupLink}: ConnectToHRFlowProps) { ); + const handleNavigationStateChange = (navState: WebViewNavigation) => { + if (!navState.url.includes(ROUTES.CONNECTION_COMPLETE)) { + return; + } + setIsWebViewOpen(false); + }; + const authToken = session?.authToken ?? null; return ( diff --git a/src/libs/actions/connections/Gusto.ts b/src/libs/actions/connections/Gusto.ts index 6af636c97b9b..0315b43d1f5b 100644 --- a/src/libs/actions/connections/Gusto.ts +++ b/src/libs/actions/connections/Gusto.ts @@ -1,4 +1,4 @@ -import type {OnyxEntry, OnyxUpdate} from 'react-native-onyx'; +import type {OnyxUpdate} from 'react-native-onyx'; import Onyx from 'react-native-onyx'; import type {ValueOf} from 'type-fest'; import {write} from '@libs/API'; @@ -8,7 +8,6 @@ import {getCommandURL} from '@libs/ApiUtils'; import {getMicroSecondOnyxErrorWithTranslationKey} from '@libs/ErrorUtils'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; -import type {PolicyConnectionSyncProgress} from '@src/types/onyx/Policy'; function getGustoSetupLink(policyID: string) { const params: ConnectPolicyToGustoParams = {policyID}; @@ -19,41 +18,17 @@ function getGustoSetupLink(policyID: string) { return commandURL + new URLSearchParams(params).toString(); } -function getGustoSyncProgressOptimisticData(policyID: string): OnyxUpdate { - return { - onyxMethod: Onyx.METHOD.MERGE, - key: `${ONYXKEYS.COLLECTION.POLICY_CONNECTION_SYNC_PROGRESS}${policyID}`, - value: { - stageInProgress: CONST.POLICY.CONNECTIONS.SYNC_STAGE_NAME.GUSTO_SYNC_TITLE, - connectionName: CONST.POLICY.CONNECTIONS.NAME.GUSTO, - timestamp: new Date().toISOString(), - }, - }; -} - -function getGustoSyncProgressFailureData( - policyID: string, - currentConnectionSyncProgress: OnyxEntry, -): OnyxUpdate { - return { - onyxMethod: Onyx.METHOD.SET, - key: `${ONYXKEYS.COLLECTION.POLICY_CONNECTION_SYNC_PROGRESS}${policyID}`, - value: currentConnectionSyncProgress ?? null, - }; -} - function updateGustoApprovalMode( policyID: string | undefined, approvalMode: ValueOf, currentApprovalMode?: ValueOf | null, - currentConnectionSyncProgress?: OnyxEntry, ) { if (!policyID) { return; } const previousApprovalMode = currentApprovalMode ?? null; - const optimisticData: Array> = [ + const optimisticData: Array> = [ { onyxMethod: Onyx.METHOD.MERGE, key: `${ONYXKEYS.COLLECTION.POLICY}${policyID}`, @@ -69,7 +44,6 @@ function updateGustoApprovalMode( }, }, }, - getGustoSyncProgressOptimisticData(policyID), ]; const successData: Array> = [ { @@ -87,7 +61,7 @@ function updateGustoApprovalMode( }, }, ]; - const failureData: Array> = [ + const failureData: Array> = [ { onyxMethod: Onyx.METHOD.MERGE, key: `${ONYXKEYS.COLLECTION.POLICY}${policyID}`, @@ -103,24 +77,18 @@ function updateGustoApprovalMode( }, }, }, - getGustoSyncProgressFailureData(policyID, currentConnectionSyncProgress), ]; write(WRITE_COMMANDS.UPDATE_GUSTO_APPROVAL_MODE, {policyID, approvalMode}, {optimisticData, successData, failureData}); } -function updateGustoFinalApprover( - policyID: string | undefined, - finalApprover: string | null, - currentFinalApprover?: string | null, - currentConnectionSyncProgress?: OnyxEntry, -) { +function updateGustoFinalApprover(policyID: string | undefined, finalApprover: string | null, currentFinalApprover?: string | null) { if (!policyID) { return; } const previousFinalApprover = currentFinalApprover ?? null; - const optimisticData: Array> = [ + const optimisticData: Array> = [ { onyxMethod: Onyx.METHOD.MERGE, key: `${ONYXKEYS.COLLECTION.POLICY}${policyID}`, @@ -136,7 +104,6 @@ function updateGustoFinalApprover( }, }, }, - getGustoSyncProgressOptimisticData(policyID), ]; const successData: Array> = [ { @@ -154,7 +121,7 @@ function updateGustoFinalApprover( }, }, ]; - const failureData: Array> = [ + const failureData: Array> = [ { onyxMethod: Onyx.METHOD.MERGE, key: `${ONYXKEYS.COLLECTION.POLICY}${policyID}`, @@ -170,7 +137,6 @@ function updateGustoFinalApprover( }, }, }, - getGustoSyncProgressFailureData(policyID, currentConnectionSyncProgress), ]; write(WRITE_COMMANDS.UPDATE_GUSTO_FINAL_APPROVER, {policyID, finalApprover}, {optimisticData, successData, failureData}); diff --git a/src/libs/actions/connections/Zenefits.ts b/src/libs/actions/connections/Zenefits.ts index 409353741346..d027e4eb30aa 100644 --- a/src/libs/actions/connections/Zenefits.ts +++ b/src/libs/actions/connections/Zenefits.ts @@ -1,4 +1,4 @@ -import type {OnyxEntry, OnyxUpdate} from 'react-native-onyx'; +import type {OnyxUpdate} from 'react-native-onyx'; import Onyx from 'react-native-onyx'; import type {ValueOf} from 'type-fest'; import {write} from '@libs/API'; @@ -8,7 +8,6 @@ import {getCommandURL} from '@libs/ApiUtils'; import {getMicroSecondOnyxErrorWithTranslationKey} from '@libs/ErrorUtils'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; -import type {PolicyConnectionSyncProgress} from '@src/types/onyx/Policy'; function getZenefitsSetupLink(policyID: string) { const params: ConnectPolicyToZenefitsParams = {policyID}; @@ -19,41 +18,17 @@ function getZenefitsSetupLink(policyID: string) { return commandURL + new URLSearchParams(params).toString(); } -function getZenefitsSyncProgressOptimisticData(policyID: string): OnyxUpdate { - return { - onyxMethod: Onyx.METHOD.MERGE, - key: `${ONYXKEYS.COLLECTION.POLICY_CONNECTION_SYNC_PROGRESS}${policyID}`, - value: { - stageInProgress: CONST.POLICY.CONNECTIONS.SYNC_STAGE_NAME.ZENEFITS_SYNC_TITLE, - connectionName: CONST.POLICY.CONNECTIONS.NAME.ZENEFITS, - timestamp: new Date().toISOString(), - }, - }; -} - -function getZenefitsSyncProgressFailureData( - policyID: string, - currentConnectionSyncProgress: OnyxEntry, -): OnyxUpdate { - return { - onyxMethod: Onyx.METHOD.SET, - key: `${ONYXKEYS.COLLECTION.POLICY_CONNECTION_SYNC_PROGRESS}${policyID}`, - value: currentConnectionSyncProgress ?? null, - }; -} - function updateZenefitsApprovalMode( policyID: string | undefined, approvalMode: ValueOf, currentApprovalMode?: ValueOf | null, - currentConnectionSyncProgress?: OnyxEntry, ) { if (!policyID) { return; } const previousApprovalMode = currentApprovalMode ?? null; - const optimisticData: Array> = [ + const optimisticData: Array> = [ { onyxMethod: Onyx.METHOD.MERGE, key: `${ONYXKEYS.COLLECTION.POLICY}${policyID}`, @@ -69,7 +44,6 @@ function updateZenefitsApprovalMode( }, }, }, - getZenefitsSyncProgressOptimisticData(policyID), ]; const successData: Array> = [ { @@ -87,7 +61,7 @@ function updateZenefitsApprovalMode( }, }, ]; - const failureData: Array> = [ + const failureData: Array> = [ { onyxMethod: Onyx.METHOD.MERGE, key: `${ONYXKEYS.COLLECTION.POLICY}${policyID}`, @@ -103,24 +77,18 @@ function updateZenefitsApprovalMode( }, }, }, - getZenefitsSyncProgressFailureData(policyID, currentConnectionSyncProgress), ]; write(WRITE_COMMANDS.UPDATE_ZENEFITS_APPROVAL_MODE, {policyID, approvalMode}, {optimisticData, successData, failureData}); } -function updateZenefitsFinalApprover( - policyID: string | undefined, - finalApprover: string | null, - currentFinalApprover?: string | null, - currentConnectionSyncProgress?: OnyxEntry, -) { +function updateZenefitsFinalApprover(policyID: string | undefined, finalApprover: string | null, currentFinalApprover?: string | null) { if (!policyID) { return; } const previousFinalApprover = currentFinalApprover ?? null; - const optimisticData: Array> = [ + const optimisticData: Array> = [ { onyxMethod: Onyx.METHOD.MERGE, key: `${ONYXKEYS.COLLECTION.POLICY}${policyID}`, @@ -136,7 +104,6 @@ function updateZenefitsFinalApprover( }, }, }, - getZenefitsSyncProgressOptimisticData(policyID), ]; const successData: Array> = [ { @@ -154,7 +121,7 @@ function updateZenefitsFinalApprover( }, }, ]; - const failureData: Array> = [ + const failureData: Array> = [ { onyxMethod: Onyx.METHOD.MERGE, key: `${ONYXKEYS.COLLECTION.POLICY}${policyID}`, @@ -170,7 +137,6 @@ function updateZenefitsFinalApprover( }, }, }, - getZenefitsSyncProgressFailureData(policyID, currentConnectionSyncProgress), ]; write(WRITE_COMMANDS.UPDATE_ZENEFITS_FINAL_APPROVER, {policyID, finalApprover}, {optimisticData, successData, failureData}); diff --git a/src/pages/workspace/hr/gusto/GustoApprovalModePage.tsx b/src/pages/workspace/hr/gusto/GustoApprovalModePage.tsx index 6f46f3ebbd91..de80395dd1b6 100644 --- a/src/pages/workspace/hr/gusto/GustoApprovalModePage.tsx +++ b/src/pages/workspace/hr/gusto/GustoApprovalModePage.tsx @@ -26,7 +26,7 @@ function GustoApprovalModePage({ getCurrentApprovalMode: (policy) => policy?.connections?.gusto?.config?.approvalMode ?? null, getProviderName: () => translate('workspace.hr.gusto.title'), getHeaderTitle: () => translate('workspace.hr.approvalMode'), - handleSave: ({draftApprovalMode, currentApprovalMode, connectionSyncProgress}) => updateGustoApprovalMode(policyID, draftApprovalMode, currentApprovalMode, connectionSyncProgress), + handleSave: ({draftApprovalMode, currentApprovalMode}) => updateGustoApprovalMode(policyID, draftApprovalMode, currentApprovalMode), }; return ( diff --git a/src/pages/workspace/hr/gusto/GustoFinalApproverPage.tsx b/src/pages/workspace/hr/gusto/GustoFinalApproverPage.tsx index 1a2aa8a2d4d4..0a762fad1c47 100644 --- a/src/pages/workspace/hr/gusto/GustoFinalApproverPage.tsx +++ b/src/pages/workspace/hr/gusto/GustoFinalApproverPage.tsx @@ -23,7 +23,7 @@ function GustoFinalApproverPage({ getCurrentFinalApprover: (policy) => policy?.connections?.gusto?.config?.finalApprover ?? null, getProviderName: () => translate('workspace.hr.gusto.title'), getHeaderTitle: () => translate('workspace.hr.finalApprover'), - handleSave: ({policyID: id, email, currentFinalApprover, connectionSyncProgress}) => updateGustoFinalApprover(id, email, currentFinalApprover, connectionSyncProgress), + handleSave: ({policyID: id, email, currentFinalApprover}) => updateGustoFinalApprover(id, email, currentFinalApprover), }; return ( diff --git a/src/pages/workspace/hr/zenefits/ZenefitsApprovalModePage.tsx b/src/pages/workspace/hr/zenefits/ZenefitsApprovalModePage.tsx index f91a213c3bcd..52711a9055cc 100644 --- a/src/pages/workspace/hr/zenefits/ZenefitsApprovalModePage.tsx +++ b/src/pages/workspace/hr/zenefits/ZenefitsApprovalModePage.tsx @@ -27,8 +27,7 @@ function ZenefitsApprovalModePage({ getCurrentApprovalMode: (policy) => policy?.connections?.zenefits?.config?.approvalMode ?? null, getProviderName: () => translate('workspace.hr.zenefits.title'), getHeaderTitle: () => translate('workspace.hr.approvalMode'), - handleSave: ({draftApprovalMode, currentApprovalMode, connectionSyncProgress}) => - updateZenefitsApprovalMode(policyID, draftApprovalMode, currentApprovalMode, connectionSyncProgress), + handleSave: ({draftApprovalMode, currentApprovalMode}) => updateZenefitsApprovalMode(policyID, draftApprovalMode, currentApprovalMode), }; return ( diff --git a/src/pages/workspace/hr/zenefits/ZenefitsFinalApproverPage.tsx b/src/pages/workspace/hr/zenefits/ZenefitsFinalApproverPage.tsx index b4b846d18e8b..0d90ddada070 100644 --- a/src/pages/workspace/hr/zenefits/ZenefitsFinalApproverPage.tsx +++ b/src/pages/workspace/hr/zenefits/ZenefitsFinalApproverPage.tsx @@ -25,7 +25,7 @@ function ZenefitsFinalApproverPage({ getCurrentFinalApprover: (policy) => policy?.connections?.zenefits?.config?.finalApprover ?? null, getProviderName: () => translate('workspace.hr.zenefits.title'), getHeaderTitle: () => translate('workspace.hr.finalApprover'), - handleSave: ({policyID: id, email, currentFinalApprover, connectionSyncProgress}) => updateZenefitsFinalApprover(id, email, currentFinalApprover, connectionSyncProgress), + handleSave: ({policyID: id, email, currentFinalApprover}) => updateZenefitsFinalApprover(id, email, currentFinalApprover), }; return (