1- import React , { useMemo , useState } from 'react' ;
1+ import { useFocusEffect } from '@react-navigation/native' ;
2+ import React , { useCallback , useMemo , useState } from 'react' ;
23import { useOnyx } from 'react-native-onyx' ;
34import FullPageOfflineBlockingView from '@components/BlockingViews/FullPageOfflineBlockingView' ;
45import ConfirmModal from '@components/ConfirmModal' ;
@@ -52,6 +53,7 @@ function ImportTagsOptionsPage({route}: ImportTagsOptionsPageProps) {
5253 const [ isSwitchSingleToMultipleLevelTagWarningModalVisible , setIsSwitchSingleToMultipleLevelTagWarningModalVisible ] = useState ( false ) ;
5354
5455 const [ isDownloadFailureModalVisible , setIsDownloadFailureModalVisible ] = useState ( false ) ;
56+ const [ shouldRunPostUpgradeFlow , setShouldRunPostUpgradeFlow ] = useState ( false ) ;
5557 const [ policyTags ] = useOnyx ( `${ ONYXKEYS . COLLECTION . POLICY_TAGS } ${ policyID } ` , { canBeMissing : true } ) ;
5658 const [ policyTagLists , isMultiLevelTags , hasDependentTags , hasIndependentTags ] = useMemo (
5759 ( ) => [ getTagLists ( policyTags ) , isMultiLevelTagsPolicyUtils ( policyTags ) , hasDependentTagsPolicyUtils ( policy , policyTags ) , hasIndependentTagsPolicyUtils ( policy , policyTags ) ] ,
@@ -67,6 +69,28 @@ function ImportTagsOptionsPage({route}: ImportTagsOptionsPageProps) {
6769 return Object . values ( singleLevelTags ) . some ( ( tag ) => tag . pendingAction !== CONST . RED_BRICK_ROAD_PENDING_ACTION . DELETE ) ;
6870 } , [ isMultiLevelTags , policyTagLists ] ) ;
6971
72+ const startMultiLevelTagImportFlow = useCallback ( ( ) => {
73+ setImportedSpreadsheetIsImportingMultiLevelTags ( true ) ;
74+ if ( hasVisibleTags ) {
75+ setIsSwitchSingleToMultipleLevelTagWarningModalVisible ( true ) ;
76+ } else {
77+ Navigation . navigate (
78+ isQuickSettingsFlow ? ROUTES . SETTINGS_TAGS_IMPORT . getRoute ( policyID , ROUTES . SETTINGS_TAGS_ROOT . getRoute ( policyID , backTo ) ) : ROUTES . WORKSPACE_TAGS_IMPORT . getRoute ( policyID ) ,
79+ ) ;
80+ }
81+ } , [ hasVisibleTags , policyID , isQuickSettingsFlow , backTo ] ) ;
82+
83+ useFocusEffect (
84+ useCallback ( ( ) => {
85+ if ( ! shouldRunPostUpgradeFlow || ! isControlPolicy ( policy ) ) {
86+ return ;
87+ }
88+
89+ startMultiLevelTagImportFlow ( ) ;
90+ setShouldRunPostUpgradeFlow ( false ) ;
91+ } , [ shouldRunPostUpgradeFlow , policy , startMultiLevelTagImportFlow ] ) ,
92+ ) ;
93+
7094 if ( hasAccountingConnections ) {
7195 return < NotFoundPage /> ;
7296 }
@@ -114,19 +138,11 @@ function ImportTagsOptionsPage({route}: ImportTagsOptionsPageProps) {
114138 shouldShowRightIcon
115139 onPress = { ( ) => {
116140 if ( ! isControlPolicy ( policy ) ) {
141+ setShouldRunPostUpgradeFlow ( true ) ;
117142 Navigation . navigate ( ROUTES . WORKSPACE_UPGRADE . getRoute ( policyID , CONST . UPGRADE_FEATURE_INTRO_MAPPING . multiLevelTags . alias , Navigation . getActiveRoute ( ) ) ) ;
118143 return ;
119144 }
120- setImportedSpreadsheetIsImportingMultiLevelTags ( true ) ;
121- if ( hasVisibleTags ) {
122- setIsSwitchSingleToMultipleLevelTagWarningModalVisible ( true ) ;
123- } else {
124- Navigation . navigate (
125- isQuickSettingsFlow
126- ? ROUTES . SETTINGS_TAGS_IMPORT . getRoute ( policyID , ROUTES . SETTINGS_TAGS_ROOT . getRoute ( policyID , backTo ) )
127- : ROUTES . WORKSPACE_TAGS_IMPORT . getRoute ( policyID ) ,
128- ) ;
129- }
145+ startMultiLevelTagImportFlow ( ) ;
130146 } }
131147 />
132148 </ FullPageOfflineBlockingView >
0 commit comments