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 ) ] ,
@@ -70,6 +72,27 @@ function ImportTagsOptionsPage({route}: ImportTagsOptionsPageProps) {
7072 if ( hasAccountingConnections ) {
7173 return < NotFoundPage /> ;
7274 }
75+ const startMultiLevelTagImportFlow = ( ) => {
76+ setImportedSpreadsheetIsImportingMultiLevelTags ( true ) ;
77+ if ( hasVisibleTags ) {
78+ setIsSwitchSingleToMultipleLevelTagWarningModalVisible ( true ) ;
79+ } else {
80+ cleanPolicyTags ( policyID ) ;
81+ Navigation . navigate (
82+ isQuickSettingsFlow ? ROUTES . SETTINGS_TAGS_IMPORT . getRoute ( policyID , ROUTES . SETTINGS_TAGS_ROOT . getRoute ( policyID , backTo ) ) : ROUTES . WORKSPACE_TAGS_IMPORT . getRoute ( policyID ) ,
83+ ) ;
84+ }
85+ } ;
86+
87+ useFocusEffect (
88+ useCallback ( ( ) => {
89+ if ( ! shouldRunPostUpgradeFlow || ! isControlPolicy ( policy ) ) {
90+ return ;
91+ }
92+ startMultiLevelTagImportFlow ( ) ;
93+ setShouldRunPostUpgradeFlow ( false ) ;
94+ } , [ shouldRunPostUpgradeFlow , policy , hasVisibleTags , policyID , isQuickSettingsFlow , backTo ] ) ,
95+ ) ;
7396
7497 return (
7598 < AccessOrNotFoundWrapper
@@ -115,20 +138,11 @@ function ImportTagsOptionsPage({route}: ImportTagsOptionsPageProps) {
115138 shouldShowRightIcon
116139 onPress = { ( ) => {
117140 if ( ! isControlPolicy ( policy ) ) {
141+ setShouldRunPostUpgradeFlow ( true ) ;
118142 Navigation . navigate ( ROUTES . WORKSPACE_UPGRADE . getRoute ( policyID , CONST . UPGRADE_FEATURE_INTRO_MAPPING . multiLevelTags . alias , Navigation . getActiveRoute ( ) ) ) ;
119143 return ;
120144 }
121- setImportedSpreadsheetIsImportingMultiLevelTags ( true ) ;
122- if ( hasVisibleTags ) {
123- setIsSwitchSingleToMultipleLevelTagWarningModalVisible ( true ) ;
124- } else {
125- cleanPolicyTags ( policyID ) ;
126- Navigation . navigate (
127- isQuickSettingsFlow
128- ? ROUTES . SETTINGS_TAGS_IMPORT . getRoute ( policyID , ROUTES . SETTINGS_TAGS_ROOT . getRoute ( policyID , backTo ) )
129- : ROUTES . WORKSPACE_TAGS_IMPORT . getRoute ( policyID ) ,
130- ) ;
131- }
145+ startMultiLevelTagImportFlow ( ) ;
132146 } }
133147 />
134148 </ FullPageOfflineBlockingView >
0 commit comments