diff --git a/src/pages/workspace/tags/ImportTagsOptionsPage.tsx b/src/pages/workspace/tags/ImportTagsOptionsPage.tsx index acc0b44aa487..ae1a2d0c3f44 100644 --- a/src/pages/workspace/tags/ImportTagsOptionsPage.tsx +++ b/src/pages/workspace/tags/ImportTagsOptionsPage.tsx @@ -1,4 +1,5 @@ -import React, {useMemo, useState} from 'react'; +import {useFocusEffect} from '@react-navigation/native'; +import React, {useCallback, useMemo, useState} from 'react'; import {useOnyx} from 'react-native-onyx'; import FullPageOfflineBlockingView from '@components/BlockingViews/FullPageOfflineBlockingView'; import ConfirmModal from '@components/ConfirmModal'; @@ -52,6 +53,7 @@ function ImportTagsOptionsPage({route}: ImportTagsOptionsPageProps) { const [isSwitchSingleToMultipleLevelTagWarningModalVisible, setIsSwitchSingleToMultipleLevelTagWarningModalVisible] = useState(false); const [isDownloadFailureModalVisible, setIsDownloadFailureModalVisible] = useState(false); + const [shouldRunPostUpgradeFlow, setShouldRunPostUpgradeFlow] = useState(false); const [policyTags] = useOnyx(`${ONYXKEYS.COLLECTION.POLICY_TAGS}${policyID}`, {canBeMissing: true}); const [policyTagLists, isMultiLevelTags, hasDependentTags, hasIndependentTags] = useMemo( () => [getTagLists(policyTags), isMultiLevelTagsPolicyUtils(policyTags), hasDependentTagsPolicyUtils(policy, policyTags), hasIndependentTagsPolicyUtils(policy, policyTags)], @@ -67,6 +69,28 @@ function ImportTagsOptionsPage({route}: ImportTagsOptionsPageProps) { return Object.values(singleLevelTags).some((tag) => tag.pendingAction !== CONST.RED_BRICK_ROAD_PENDING_ACTION.DELETE); }, [isMultiLevelTags, policyTagLists]); + const startMultiLevelTagImportFlow = useCallback(() => { + setImportedSpreadsheetIsImportingMultiLevelTags(true); + if (hasVisibleTags) { + setIsSwitchSingleToMultipleLevelTagWarningModalVisible(true); + } else { + Navigation.navigate( + isQuickSettingsFlow ? ROUTES.SETTINGS_TAGS_IMPORT.getRoute(policyID, ROUTES.SETTINGS_TAGS_ROOT.getRoute(policyID, backTo)) : ROUTES.WORKSPACE_TAGS_IMPORT.getRoute(policyID), + ); + } + }, [hasVisibleTags, policyID, isQuickSettingsFlow, backTo]); + + useFocusEffect( + useCallback(() => { + if (!shouldRunPostUpgradeFlow || !isControlPolicy(policy)) { + return; + } + + startMultiLevelTagImportFlow(); + setShouldRunPostUpgradeFlow(false); + }, [shouldRunPostUpgradeFlow, policy, startMultiLevelTagImportFlow]), + ); + if (hasAccountingConnections) { return ; } @@ -114,19 +138,11 @@ function ImportTagsOptionsPage({route}: ImportTagsOptionsPageProps) { shouldShowRightIcon onPress={() => { if (!isControlPolicy(policy)) { + setShouldRunPostUpgradeFlow(true); Navigation.navigate(ROUTES.WORKSPACE_UPGRADE.getRoute(policyID, CONST.UPGRADE_FEATURE_INTRO_MAPPING.multiLevelTags.alias, Navigation.getActiveRoute())); return; } - setImportedSpreadsheetIsImportingMultiLevelTags(true); - if (hasVisibleTags) { - setIsSwitchSingleToMultipleLevelTagWarningModalVisible(true); - } else { - Navigation.navigate( - isQuickSettingsFlow - ? ROUTES.SETTINGS_TAGS_IMPORT.getRoute(policyID, ROUTES.SETTINGS_TAGS_ROOT.getRoute(policyID, backTo)) - : ROUTES.WORKSPACE_TAGS_IMPORT.getRoute(policyID), - ); - } + startMultiLevelTagImportFlow(); }} />