From 04cb952df2f8a0d3dfc7c9bd1ed9285670911f50 Mon Sep 17 00:00:00 2001 From: shahid Date: Thu, 26 Jun 2025 11:53:13 +0530 Subject: [PATCH 1/3] Redirect to multi-level tag import after workspace upgrade --- .../workspace/tags/ImportTagsOptionsPage.tsx | 38 +++++++++++++------ 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/src/pages/workspace/tags/ImportTagsOptionsPage.tsx b/src/pages/workspace/tags/ImportTagsOptionsPage.tsx index 2166657ca518..4c43e0b7e16c 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)], @@ -70,6 +72,27 @@ function ImportTagsOptionsPage({route}: ImportTagsOptionsPageProps) { if (hasAccountingConnections) { return ; } + const startMultiLevelTagImportFlow = () => { + setImportedSpreadsheetIsImportingMultiLevelTags(true); + if (hasVisibleTags) { + setIsSwitchSingleToMultipleLevelTagWarningModalVisible(true); + } else { + cleanPolicyTags(policyID); + Navigation.navigate( + isQuickSettingsFlow ? ROUTES.SETTINGS_TAGS_IMPORT.getRoute(policyID, ROUTES.SETTINGS_TAGS_ROOT.getRoute(policyID, backTo)) : ROUTES.WORKSPACE_TAGS_IMPORT.getRoute(policyID), + ); + } + }; + + useFocusEffect( + useCallback(() => { + if (!shouldRunPostUpgradeFlow || !isControlPolicy(policy)) { + return; + } + startMultiLevelTagImportFlow(); + setShouldRunPostUpgradeFlow(false); + }, [shouldRunPostUpgradeFlow, policy, hasVisibleTags, policyID, isQuickSettingsFlow, backTo]), + ); return ( { 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 { - cleanPolicyTags(policyID); - Navigation.navigate( - isQuickSettingsFlow - ? ROUTES.SETTINGS_TAGS_IMPORT.getRoute(policyID, ROUTES.SETTINGS_TAGS_ROOT.getRoute(policyID, backTo)) - : ROUTES.WORKSPACE_TAGS_IMPORT.getRoute(policyID), - ); - } + startMultiLevelTagImportFlow(); }} /> From 98f1ddb2045c247512eabb89fd3504c3dceb1466 Mon Sep 17 00:00:00 2001 From: shahid Date: Thu, 26 Jun 2025 12:15:14 +0530 Subject: [PATCH 2/3] fix linting errors --- src/pages/workspace/tags/ImportTagsOptionsPage.tsx | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/pages/workspace/tags/ImportTagsOptionsPage.tsx b/src/pages/workspace/tags/ImportTagsOptionsPage.tsx index 4c43e0b7e16c..0775c518b54a 100644 --- a/src/pages/workspace/tags/ImportTagsOptionsPage.tsx +++ b/src/pages/workspace/tags/ImportTagsOptionsPage.tsx @@ -72,7 +72,7 @@ function ImportTagsOptionsPage({route}: ImportTagsOptionsPageProps) { if (hasAccountingConnections) { return ; } - const startMultiLevelTagImportFlow = () => { + const startMultiLevelTagImportFlow = useCallback(() => { setImportedSpreadsheetIsImportingMultiLevelTags(true); if (hasVisibleTags) { setIsSwitchSingleToMultipleLevelTagWarningModalVisible(true); @@ -82,17 +82,22 @@ function ImportTagsOptionsPage({route}: ImportTagsOptionsPageProps) { 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, hasVisibleTags, policyID, isQuickSettingsFlow, backTo]), + }, [shouldRunPostUpgradeFlow, policy, startMultiLevelTagImportFlow]), ); + + if (hasAccountingConnections) { + return ; + } return ( Date: Thu, 26 Jun 2025 12:20:05 +0530 Subject: [PATCH 3/3] fix linting errors --- src/pages/workspace/tags/ImportTagsOptionsPage.tsx | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/pages/workspace/tags/ImportTagsOptionsPage.tsx b/src/pages/workspace/tags/ImportTagsOptionsPage.tsx index 0775c518b54a..da7defbbb5d6 100644 --- a/src/pages/workspace/tags/ImportTagsOptionsPage.tsx +++ b/src/pages/workspace/tags/ImportTagsOptionsPage.tsx @@ -69,9 +69,6 @@ function ImportTagsOptionsPage({route}: ImportTagsOptionsPageProps) { return Object.values(singleLevelTags).some((tag) => tag.pendingAction !== CONST.RED_BRICK_ROAD_PENDING_ACTION.DELETE); }, [isMultiLevelTags, policyTagLists]); - if (hasAccountingConnections) { - return ; - } const startMultiLevelTagImportFlow = useCallback(() => { setImportedSpreadsheetIsImportingMultiLevelTags(true); if (hasVisibleTags) { @@ -94,7 +91,7 @@ function ImportTagsOptionsPage({route}: ImportTagsOptionsPageProps) { setShouldRunPostUpgradeFlow(false); }, [shouldRunPostUpgradeFlow, policy, startMultiLevelTagImportFlow]), ); - + if (hasAccountingConnections) { return ; }