Skip to content

Commit 6d98c1c

Browse files
Close confirm details screen when import succeeds, show modal on ImportedMembersPage
When importing members with missing roles, the confirmation page now navigates back when the import succeeds, letting ImportedMembersPage's existing ImportSpreadsheetConfirmModal (which has an isFocused guard) display the success modal. This matches the reviewer's expectation that the confirm details screen closes while the modal remains visible. Co-authored-by: Yauheni Horbach <ZhenjaHorbach@users.noreply.github.com>
1 parent 81f8ce7 commit 6d98c1c

File tree

1 file changed

+10
-18
lines changed

1 file changed

+10
-18
lines changed

src/pages/workspace/members/ImportedMembersConfirmationPage.tsx

Lines changed: 10 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,17 @@ import type {ValueOf} from 'type-fest';
55
import Button from '@components/Button';
66
import FixedFooter from '@components/FixedFooter';
77
import HeaderWithBackButton from '@components/HeaderWithBackButton';
8-
import ImportSpreadsheetConfirmModal from '@components/ImportSpreadsheetConfirmModal';
98
import MenuItemWithTopDescription from '@components/MenuItemWithTopDescription';
109
import {usePersonalDetails} from '@components/OnyxListItemProvider';
1110
import PressableWithoutFeedback from '@components/Pressable/PressableWithoutFeedback';
1211
import ReportActionAvatars from '@components/ReportActionAvatars';
1312
import ScreenWrapper from '@components/ScreenWrapper';
1413
import Text from '@components/Text';
15-
import useCloseImportPage from '@hooks/useCloseImportPage';
1614
import useLocalize from '@hooks/useLocalize';
1715
import useNetwork from '@hooks/useNetwork';
1816
import useOnyx from '@hooks/useOnyx';
1917
import usePolicy from '@hooks/usePolicy';
2018
import useThemeStyles from '@hooks/useThemeStyles';
21-
import {closeImportPage} from '@libs/actions/ImportSpreadsheet';
2219
import {openExternalLink} from '@libs/actions/Link';
2320
import {clearImportedSpreadsheetMemberData, importPolicyMembers} from '@libs/actions/Policy/Member';
2421
import Navigation from '@libs/Navigation/Navigation';
@@ -31,7 +28,6 @@ import WorkspaceMemberDetailsRoleSelectionModal from '@pages/workspace/Workspace
3128
import type {ListItemType} from '@pages/workspace/WorkspaceMemberRoleSelectionModal';
3229
import CONST from '@src/CONST';
3330
import ONYXKEYS from '@src/ONYXKEYS';
34-
import ROUTES from '@src/ROUTES';
3531
import type SCREENS from '@src/SCREENS';
3632

3733
type ImportedMembersConfirmationPageProps = PlatformStackScreenProps<SettingsNavigatorParamList, typeof SCREENS.WORKSPACE.MEMBERS_IMPORTED>;
@@ -49,14 +45,22 @@ function ImportedMembersConfirmationPage({route}: ImportedMembersConfirmationPag
4945
const {isOffline} = useNetwork();
5046

5147
const personalDetails = usePersonalDetails();
52-
const {setIsClosing} = useCloseImportPage();
53-
5448
useEffect(() => {
5549
return () => {
5650
clearImportedSpreadsheetMemberData();
5751
};
5852
}, []);
5953

54+
// Navigate back to ImportedMembersPage when import succeeds so the
55+
// confirm-details screen closes while the global success modal (rendered
56+
// by ImportedMembersPage's ImportSpreadsheetConfirmModal) is shown.
57+
useEffect(() => {
58+
if (!spreadsheet?.shouldFinalModalBeOpened) {
59+
return;
60+
}
61+
Navigation.goBack();
62+
}, [spreadsheet?.shouldFinalModalBeOpened]);
63+
6064
const [importedSpreadsheetMemberData] = useOnyx(ONYXKEYS.IMPORTED_SPREADSHEET_MEMBER_DATA);
6165
const newMembers = useMemo(() => {
6266
return importedSpreadsheetMemberData?.filter((member) => !isPolicyMemberWithoutPendingDelete(member.email, policy) && !member.role) ?? [];
@@ -89,13 +93,6 @@ function ImportedMembersConfirmationPage({route}: ImportedMembersConfirmationPag
8993
importPolicyMembers(policy, membersWithRole);
9094
}, [importedSpreadsheetMemberData, newMembers, policy, role]);
9195

92-
const closeImportPageAndModal = () => {
93-
setIsClosing(true);
94-
setIsImporting(false);
95-
closeImportPage();
96-
Navigation.goBack(ROUTES.WORKSPACE_MEMBERS.getRoute(policyID));
97-
};
98-
9996
const onRoleChange = (item: ListItemType) => {
10097
setRole(item.value);
10198
setIsRoleSelectionModalVisible(false);
@@ -203,11 +200,6 @@ function ImportedMembersConfirmationPage({route}: ImportedMembersConfirmationPag
203200
</View>
204201
</PressableWithoutFeedback>
205202
</FixedFooter>
206-
<ImportSpreadsheetConfirmModal
207-
isVisible={spreadsheet?.shouldFinalModalBeOpened}
208-
closeImportPageAndModal={closeImportPageAndModal}
209-
shouldHandleNavigationBack={false}
210-
/>
211203
<WorkspaceMemberDetailsRoleSelectionModal
212204
isVisible={isRoleSelectionModalVisible}
213205
items={roleItems}

0 commit comments

Comments
 (0)