Skip to content

Commit d5dbaab

Browse files
committed
Merge remote-tracking branch 'upstream/main' into bump-react-native-onyx-2.0.117
2 parents 72881a6 + 3892d45 commit d5dbaab

1 file changed

Lines changed: 27 additions & 11 deletions

File tree

src/pages/workspace/tags/ImportTagsOptionsPage.tsx

Lines changed: 27 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
import React, {useMemo, useState} from 'react';
1+
import {useFocusEffect} from '@react-navigation/native';
2+
import React, {useCallback, useMemo, useState} from 'react';
23
import {useOnyx} from 'react-native-onyx';
34
import FullPageOfflineBlockingView from '@components/BlockingViews/FullPageOfflineBlockingView';
45
import 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

Comments
 (0)