From 4bd2ca01692d10ad3b9162bdc8b0225ffe2496f1 Mon Sep 17 00:00:00 2001 From: Shubham Agrawal Date: Sun, 26 Oct 2025 11:50:25 +0530 Subject: [PATCH 1/5] Refactored spreadsheet modal code to make it translate free --- src/components/ImportSpreadsheetModal.tsx | 45 +++++++++++++++++++ src/libs/actions/Policy/Category.ts | 17 +++---- src/libs/actions/Policy/Member.ts | 18 ++++---- src/libs/actions/Policy/PerDiem.ts | 17 +++---- src/libs/actions/Policy/Tag.ts | 29 +++++++----- .../categories/ImportedCategoriesPage.tsx | 12 ++--- .../ImportedMembersConfirmationPage.tsx | 12 ++--- .../workspace/members/ImportedMembersPage.tsx | 12 ++--- .../workspace/perDiem/ImportedPerDiemPage.tsx | 11 ++--- .../tags/ImportMultiLevelTagsSettingsPage.tsx | 12 ++--- .../tags/ImportedMultiLevelTagsPage.tsx | 12 ++--- src/pages/workspace/tags/ImportedTagsPage.tsx | 12 ++--- src/types/onyx/ImportedSpreadsheet.ts | 35 ++++++++++++--- tests/actions/PolicyMemberTest.ts | 21 ++++++--- 14 files changed, 153 insertions(+), 112 deletions(-) create mode 100644 src/components/ImportSpreadsheetModal.tsx diff --git a/src/components/ImportSpreadsheetModal.tsx b/src/components/ImportSpreadsheetModal.tsx new file mode 100644 index 000000000000..1507ff29d2c0 --- /dev/null +++ b/src/components/ImportSpreadsheetModal.tsx @@ -0,0 +1,45 @@ +import React from 'react'; +import useLocalize from '@hooks/useLocalize'; +import useOnyx from '@hooks/useOnyx'; +import type {TranslationParameters} from '@src/languages/types'; +import ONYXKEYS from '@src/ONYXKEYS'; +import ConfirmModal from './ConfirmModal'; + +type ImportSpreadsheetModalProps = { + /** Modal visibility */ + isVisible: boolean; + + /** A function to close both the import page and the modal. */ + closeImportPageAndModal: () => void; + + /** Callback method fired when the modal is hidden */ + onModalHide?: () => void; +}; + +function ImportSpreadsheetModal({isVisible, closeImportPageAndModal, onModalHide}: ImportSpreadsheetModalProps) { + const {translate} = useLocalize(); + const [spreadsheet] = useOnyx(ONYXKEYS.IMPORTED_SPREADSHEET, {canBeMissing: true}); + + const titleText = spreadsheet?.importFinalModal?.title ? translate(spreadsheet.importFinalModal.title) : ''; + const promptText = spreadsheet?.importFinalModal?.prompt + ? translate(spreadsheet.importFinalModal.prompt, spreadsheet.importFinalModal.params as TranslationParameters[0]) + : ''; + + return ( + + ); +} + +ImportSpreadsheetModal.displayName = 'ImportSpreadsheetModal'; + +export default ImportSpreadsheetModal; diff --git a/src/libs/actions/Policy/Category.ts b/src/libs/actions/Policy/Category.ts index f23f4297f9fa..ff1a132f0aef 100644 --- a/src/libs/actions/Policy/Category.ts +++ b/src/libs/actions/Policy/Category.ts @@ -23,8 +23,6 @@ import * as CurrencyUtils from '@libs/CurrencyUtils'; import * as ErrorUtils from '@libs/ErrorUtils'; import fileDownload from '@libs/fileDownload'; import getIsNarrowLayout from '@libs/getIsNarrowLayout'; -// eslint-disable-next-line @typescript-eslint/no-deprecated -import {translateLocal} from '@libs/Localize'; import Log from '@libs/Log'; import enhanceParameters from '@libs/Network/enhanceParameters'; import {hasEnabledOptions} from '@libs/OptionsListUtils'; @@ -260,10 +258,11 @@ function updateImportSpreadsheetData(categoriesLength: number) { value: { shouldFinalModalBeOpened: true, importFinalModal: { - // eslint-disable-next-line @typescript-eslint/no-deprecated - title: translateLocal('spreadsheet.importSuccessfulTitle'), - // eslint-disable-next-line @typescript-eslint/no-deprecated - prompt: translateLocal('spreadsheet.importCategoriesSuccessfulDescription', {categories: categoriesLength}), + title: 'spreadsheet.importSuccessfulTitle', + prompt: 'spreadsheet.importCategoriesSuccessfulDescription', + params: { + categories: categoriesLength, + }, }, }, }, @@ -275,8 +274,10 @@ function updateImportSpreadsheetData(categoriesLength: number) { key: ONYXKEYS.IMPORTED_SPREADSHEET, value: { shouldFinalModalBeOpened: true, - // eslint-disable-next-line @typescript-eslint/no-deprecated - importFinalModal: {title: translateLocal('spreadsheet.importFailedTitle'), prompt: translateLocal('spreadsheet.importFailedDescription')}, + importFinalModal: { + title: 'spreadsheet.importFailedTitle', + prompt: 'spreadsheet.importFailedDescription', + }, }, }, ], diff --git a/src/libs/actions/Policy/Member.ts b/src/libs/actions/Policy/Member.ts index ab9a40eccf46..2017b9896be8 100644 --- a/src/libs/actions/Policy/Member.ts +++ b/src/libs/actions/Policy/Member.ts @@ -16,8 +16,6 @@ import * as ApiUtils from '@libs/ApiUtils'; import DateUtils from '@libs/DateUtils'; import * as ErrorUtils from '@libs/ErrorUtils'; import fileDownload from '@libs/fileDownload'; -// eslint-disable-next-line @typescript-eslint/no-deprecated -import {translateLocal} from '@libs/Localize'; import Log from '@libs/Log'; import enhanceParameters from '@libs/Network/enhanceParameters'; import Parser from '@libs/Parser'; @@ -231,10 +229,12 @@ function updateImportSpreadsheetData(addedMembersLength: number, updatedMembersL value: { shouldFinalModalBeOpened: true, importFinalModal: { - // eslint-disable-next-line @typescript-eslint/no-deprecated - title: translateLocal('spreadsheet.importSuccessfulTitle'), - // eslint-disable-next-line @typescript-eslint/no-deprecated - prompt: translateLocal('spreadsheet.importMembersSuccessfulDescription', {added: addedMembersLength, updated: updatedMembersLength}), + title: 'spreadsheet.importSuccessfulTitle', + prompt: 'spreadsheet.importMembersSuccessfulDescription', + params: { + added: addedMembersLength, + updated: updatedMembersLength, + }, }, }, }, @@ -246,8 +246,10 @@ function updateImportSpreadsheetData(addedMembersLength: number, updatedMembersL key: ONYXKEYS.IMPORTED_SPREADSHEET, value: { shouldFinalModalBeOpened: true, - // eslint-disable-next-line @typescript-eslint/no-deprecated - importFinalModal: {title: translateLocal('spreadsheet.importFailedTitle'), prompt: translateLocal('spreadsheet.importFailedDescription')}, + importFinalModal: { + title: 'spreadsheet.importFailedTitle', + prompt: 'spreadsheet.importFailedDescription', + }, }, }, ], diff --git a/src/libs/actions/Policy/PerDiem.ts b/src/libs/actions/Policy/PerDiem.ts index 36d5bddf89c2..c45df23f5419 100644 --- a/src/libs/actions/Policy/PerDiem.ts +++ b/src/libs/actions/Policy/PerDiem.ts @@ -6,8 +6,6 @@ import {READ_COMMANDS, WRITE_COMMANDS} from '@libs/API/types'; import {getCommandURL} from '@libs/ApiUtils'; import fileDownload from '@libs/fileDownload'; import getIsNarrowLayout from '@libs/getIsNarrowLayout'; -// eslint-disable-next-line @typescript-eslint/no-deprecated -import {translateLocal} from '@libs/Localize'; import enhanceParameters from '@libs/Network/enhanceParameters'; import {generateHexadecimalValue} from '@libs/NumberUtils'; import {goBackWhenEnableFeature} from '@libs/PolicyUtils'; @@ -112,10 +110,11 @@ function updateImportSpreadsheetData(ratesLength: number) { value: { shouldFinalModalBeOpened: true, importFinalModal: { - // eslint-disable-next-line @typescript-eslint/no-deprecated - title: translateLocal('spreadsheet.importSuccessfulTitle'), - // eslint-disable-next-line @typescript-eslint/no-deprecated - prompt: translateLocal('spreadsheet.importPerDiemRatesSuccessfulDescription', {rates: ratesLength}), + title: 'spreadsheet.importSuccessfulTitle', + prompt: 'spreadsheet.importPerDiemRatesSuccessfulDescription', + params: { + rates: ratesLength, + }, }, }, }, @@ -127,8 +126,10 @@ function updateImportSpreadsheetData(ratesLength: number) { key: ONYXKEYS.IMPORTED_SPREADSHEET, value: { shouldFinalModalBeOpened: true, - // eslint-disable-next-line @typescript-eslint/no-deprecated - importFinalModal: {title: translateLocal('spreadsheet.importFailedTitle'), prompt: translateLocal('spreadsheet.importFailedDescription')}, + importFinalModal: { + title: 'spreadsheet.importFailedTitle', + prompt: 'spreadsheet.importFailedDescription', + }, }, }, ], diff --git a/src/libs/actions/Policy/Tag.ts b/src/libs/actions/Policy/Tag.ts index 0e671b077e67..9a7d3c8c599a 100644 --- a/src/libs/actions/Policy/Tag.ts +++ b/src/libs/actions/Policy/Tag.ts @@ -20,8 +20,6 @@ import * as ErrorUtils from '@libs/ErrorUtils'; import fileDownload from '@libs/fileDownload'; import {readFileAsync} from '@libs/fileDownload/FileUtils'; import getIsNarrowLayout from '@libs/getIsNarrowLayout'; -// eslint-disable-next-line @typescript-eslint/no-deprecated -import {translateLocal} from '@libs/Localize'; import Log from '@libs/Log'; import enhanceParameters from '@libs/Network/enhanceParameters'; import * as PolicyUtils from '@libs/PolicyUtils'; @@ -97,10 +95,11 @@ function updateImportSpreadsheetData(tagsLength: number): OnyxData { value: { shouldFinalModalBeOpened: true, importFinalModal: { - // eslint-disable-next-line @typescript-eslint/no-deprecated - title: translateLocal('spreadsheet.importSuccessfulTitle'), - // eslint-disable-next-line @typescript-eslint/no-deprecated - prompt: translateLocal('spreadsheet.importTagsSuccessfulDescription', {tags: tagsLength}), + title: 'spreadsheet.importSuccessfulTitle', + prompt: 'spreadsheet.importTagsSuccessfulDescription', + params: { + tags: tagsLength, + }, }, }, }, @@ -112,8 +111,10 @@ function updateImportSpreadsheetData(tagsLength: number): OnyxData { key: ONYXKEYS.IMPORTED_SPREADSHEET, value: { shouldFinalModalBeOpened: true, - // eslint-disable-next-line @typescript-eslint/no-deprecated - importFinalModal: {title: translateLocal('spreadsheet.importFailedTitle'), prompt: translateLocal('spreadsheet.importFailedDescription')}, + importFinalModal: { + title: 'spreadsheet.importFailedTitle', + prompt: 'spreadsheet.importFailedDescription', + }, }, }, ], @@ -809,8 +810,10 @@ function importMultiLevelTags(policyID: string, spreadsheet: ImportedSpreadsheet key: ONYXKEYS.IMPORTED_SPREADSHEET, value: { shouldFinalModalBeOpened: true, - // eslint-disable-next-line @typescript-eslint/no-deprecated - importFinalModal: {title: translateLocal('spreadsheet.importSuccessfulTitle'), prompt: translateLocal('spreadsheet.importMultiLevelTagsSuccessfulDescription')}, + importFinalModal: { + title: 'spreadsheet.importSuccessfulTitle', + prompt: 'spreadsheet.importMultiLevelTagsSuccessfulDescription', + }, }, }, ], @@ -827,8 +830,10 @@ function importMultiLevelTags(policyID: string, spreadsheet: ImportedSpreadsheet key: ONYXKEYS.IMPORTED_SPREADSHEET, value: { shouldFinalModalBeOpened: true, - // eslint-disable-next-line @typescript-eslint/no-deprecated - importFinalModal: {title: translateLocal('spreadsheet.importFailedTitle'), prompt: translateLocal('spreadsheet.importFailedDescription')}, + importFinalModal: { + title: 'spreadsheet.importFailedTitle', + prompt: 'spreadsheet.importFailedDescription', + }, }, }, ], diff --git a/src/pages/workspace/categories/ImportedCategoriesPage.tsx b/src/pages/workspace/categories/ImportedCategoriesPage.tsx index f258196567e8..9ca6547f5287 100644 --- a/src/pages/workspace/categories/ImportedCategoriesPage.tsx +++ b/src/pages/workspace/categories/ImportedCategoriesPage.tsx @@ -1,8 +1,8 @@ import React, {useCallback, useState} from 'react'; -import ConfirmModal from '@components/ConfirmModal'; import HeaderWithBackButton from '@components/HeaderWithBackButton'; import type {ColumnRole} from '@components/ImportColumn'; import ImportSpreadsheetColumns from '@components/ImportSpreadsheetColumns'; +import ImportSpreadsheetModal from '@components/ImportSpreadsheetModal'; import ScreenWrapper from '@components/ScreenWrapper'; import useCloseImportPage from '@hooks/useCloseImportPage'; import useLocalize from '@hooks/useLocalize'; @@ -156,15 +156,9 @@ function ImportedCategoriesPage({route}: ImportedCategoriesPageProps) { learnMoreLink={CONST.IMPORT_SPREADSHEET.CATEGORIES_ARTICLE_LINK} /> - ); diff --git a/src/pages/workspace/members/ImportedMembersConfirmationPage.tsx b/src/pages/workspace/members/ImportedMembersConfirmationPage.tsx index ebae5ede3e9b..d04e17d2e91d 100644 --- a/src/pages/workspace/members/ImportedMembersConfirmationPage.tsx +++ b/src/pages/workspace/members/ImportedMembersConfirmationPage.tsx @@ -3,9 +3,9 @@ import {View} from 'react-native'; import type {GestureResponderEvent} from 'react-native/Libraries/Types/CoreEventTypes'; import type {ValueOf} from 'type-fest'; import Button from '@components/Button'; -import ConfirmModal from '@components/ConfirmModal'; import FixedFooter from '@components/FixedFooter'; import HeaderWithBackButton from '@components/HeaderWithBackButton'; +import ImportSpreadsheetModal from '@components/ImportSpreadsheetModal'; import MenuItemWithTopDescription from '@components/MenuItemWithTopDescription'; import {usePersonalDetails} from '@components/OnyxListItemProvider'; import PressableWithoutFeedback from '@components/Pressable/PressableWithoutFeedback'; @@ -194,15 +194,9 @@ function ImportedMembersConfirmationPage({route}: ImportedMembersConfirmationPag - - { // eslint-disable-next-line @typescript-eslint/no-deprecated InteractionManager.runAfterInteractions(() => Navigation.goBack(ROUTES.WORKSPACE_MEMBERS.getRoute(policyID))); diff --git a/src/pages/workspace/perDiem/ImportedPerDiemPage.tsx b/src/pages/workspace/perDiem/ImportedPerDiemPage.tsx index b1bc01e03eb4..5864f76f0d91 100644 --- a/src/pages/workspace/perDiem/ImportedPerDiemPage.tsx +++ b/src/pages/workspace/perDiem/ImportedPerDiemPage.tsx @@ -1,8 +1,8 @@ import React, {useCallback, useState} from 'react'; -import ConfirmModal from '@components/ConfirmModal'; import HeaderWithBackButton from '@components/HeaderWithBackButton'; import type {ColumnRole} from '@components/ImportColumn'; import ImportSpreadsheetColumns from '@components/ImportSpreadsheetColumns'; +import ImportSpreadsheetModal from '@components/ImportSpreadsheetModal'; import ScreenWrapper from '@components/ScreenWrapper'; import useCloseImportPage from '@hooks/useCloseImportPage'; import useLocalize from '@hooks/useLocalize'; @@ -161,14 +161,9 @@ function ImportedPerDiemPage({route}: ImportedPerDiemPageProps) { learnMoreLink={CONST.IMPORT_SPREADSHEET.CATEGORIES_ARTICLE_LINK} /> - ); diff --git a/src/pages/workspace/tags/ImportMultiLevelTagsSettingsPage.tsx b/src/pages/workspace/tags/ImportMultiLevelTagsSettingsPage.tsx index 3e2b709f0e71..07f8cf42ff21 100644 --- a/src/pages/workspace/tags/ImportMultiLevelTagsSettingsPage.tsx +++ b/src/pages/workspace/tags/ImportMultiLevelTagsSettingsPage.tsx @@ -3,10 +3,10 @@ import React, {useEffect, useState} from 'react'; import {View} from 'react-native'; import FullPageOfflineBlockingView from '@components/BlockingViews/FullPageOfflineBlockingView'; import Button from '@components/Button'; -import ConfirmModal from '@components/ConfirmModal'; import FixedFooter from '@components/FixedFooter'; import HeaderWithBackButton from '@components/HeaderWithBackButton'; import ImportSpreadsheet from '@components/ImportSpreadsheet'; +import ImportSpreadsheetModal from '@components/ImportSpreadsheetModal'; import ScreenWrapper from '@components/ScreenWrapper'; import Switch from '@components/Switch'; import Text from '@components/Text'; @@ -146,15 +146,9 @@ function ImportMultiLevelTagsSettingsPage({route}: ImportMultiLevelTagsSettingsP large /> - diff --git a/src/pages/workspace/tags/ImportedMultiLevelTagsPage.tsx b/src/pages/workspace/tags/ImportedMultiLevelTagsPage.tsx index cd51b2ede359..cad70bff23df 100644 --- a/src/pages/workspace/tags/ImportedMultiLevelTagsPage.tsx +++ b/src/pages/workspace/tags/ImportedMultiLevelTagsPage.tsx @@ -1,7 +1,7 @@ import React, {useCallback, useState} from 'react'; -import ConfirmModal from '@components/ConfirmModal'; import HeaderWithBackButton from '@components/HeaderWithBackButton'; import ImportSpreadsheetColumns from '@components/ImportSpreadsheetColumns'; +import ImportSpreadsheetModal from '@components/ImportSpreadsheetModal'; import ScreenWrapper from '@components/ScreenWrapper'; import useCloseImportPage from '@hooks/useCloseImportPage'; import useLocalize from '@hooks/useLocalize'; @@ -69,15 +69,9 @@ function ImportedMultiLevelTagsPage({route}: ImportedMultiLevelTagsPageProps) { customHeaderText={translate('workspace.tags.importMultiLevelTagsSupportingText')} /> - ); diff --git a/src/pages/workspace/tags/ImportedTagsPage.tsx b/src/pages/workspace/tags/ImportedTagsPage.tsx index a7e249ab958b..cc23e27bfb44 100644 --- a/src/pages/workspace/tags/ImportedTagsPage.tsx +++ b/src/pages/workspace/tags/ImportedTagsPage.tsx @@ -1,8 +1,8 @@ import React, {useCallback, useMemo, useState} from 'react'; -import ConfirmModal from '@components/ConfirmModal'; import HeaderWithBackButton from '@components/HeaderWithBackButton'; import type {ColumnRole} from '@components/ImportColumn'; import ImportSpreadsheetColumns from '@components/ImportSpreadsheetColumns'; +import ImportSpreadsheetModal from '@components/ImportSpreadsheetModal'; import ScreenWrapper from '@components/ScreenWrapper'; import useCloseImportPage from '@hooks/useCloseImportPage'; import useLocalize from '@hooks/useLocalize'; @@ -152,15 +152,9 @@ function ImportedTagsPage({route}: ImportedTagsPageProps) { learnMoreLink={CONST.IMPORT_SPREADSHEET.TAGS_ARTICLE_LINK} /> - ); diff --git a/src/types/onyx/ImportedSpreadsheet.ts b/src/types/onyx/ImportedSpreadsheet.ts index 5a0e8085b6f9..481f59010e99 100644 --- a/src/types/onyx/ImportedSpreadsheet.ts +++ b/src/types/onyx/ImportedSpreadsheet.ts @@ -1,3 +1,30 @@ +import type {TranslationParameters, TranslationPaths} from '@src/languages/types'; + +/** + * Filter translation paths that start with a specific prefix + */ +type PathsStartingWith = Extract; + +/** Texts to display depending on request success/failure */ +type ImportFinalModal> = { + /** Title of the modal */ + title: PathsStartingWith<'spreadsheet'>; + + /** Message to display */ + prompt: TPath; + + /** Parameters for the translation */ + params: TranslationParameters[0]; +}; + +/** + * Union type of all possible ImportFinalModal configurations + * Each translation path gets its own properly typed variant + */ +type ImportFinalModalUnion = { + [K in PathsStartingWith<'spreadsheet'>]: ImportFinalModal; +}[PathsStartingWith<'spreadsheet'>]; + /** Model of imported spreadsheet data */ type ImportedSpreadsheet = { /** Data of the imported spreadsheet */ @@ -10,13 +37,7 @@ type ImportedSpreadsheet = { shouldFinalModalBeOpened: boolean; /** Texts to display depending on request success/failure */ - importFinalModal: { - /** Title of the modal */ - title: string; - - /** Message to display */ - prompt: string; - }; + importFinalModal: ImportFinalModalUnion; /** Whether the first row of the spreadsheet contains headers */ containsHeader: boolean; diff --git a/tests/actions/PolicyMemberTest.ts b/tests/actions/PolicyMemberTest.ts index 6b1183ab9723..b144bed55a35 100644 --- a/tests/actions/PolicyMemberTest.ts +++ b/tests/actions/PolicyMemberTest.ts @@ -569,7 +569,8 @@ describe('actions/PolicyMember', () => { }); // Then it should show the singular member added success message - expect(importedSpreadsheet?.importFinalModal.prompt).toBe(TestHelper.translateLocal('spreadsheet.importMembersSuccessfulDescription', {added: 1, updated: 0})); + expect(importedSpreadsheet?.importFinalModal.prompt).toBe('spreadsheet.importMembersSuccessfulDescription'); + expect(importedSpreadsheet?.importFinalModal.params).toStrictEqual({added: 1, updated: 0}); }); it('should show a "multiple members added message" when multiple new members are added', async () => { @@ -598,7 +599,8 @@ describe('actions/PolicyMember', () => { }); // Then it should show the plural member added success message - expect(importedSpreadsheet?.importFinalModal.prompt).toBe(TestHelper.translateLocal('spreadsheet.importMembersSuccessfulDescription', {added: 2, updated: 0})); + expect(importedSpreadsheet?.importFinalModal.prompt).toBe('spreadsheet.importMembersSuccessfulDescription'); + expect(importedSpreadsheet?.importFinalModal.params).toStrictEqual({added: 2, updated: 0}); }); it('should show a "no members added/updated message" when no new members are added or updated', async () => { @@ -631,7 +633,8 @@ describe('actions/PolicyMember', () => { }); // Then it should show the no member added/updated message - expect(importedSpreadsheet?.importFinalModal.prompt).toBe(TestHelper.translateLocal('spreadsheet.importMembersSuccessfulDescription', {added: 0, updated: 0})); + expect(importedSpreadsheet?.importFinalModal.prompt).toBe('spreadsheet.importMembersSuccessfulDescription'); + expect(importedSpreadsheet?.importFinalModal.params).toStrictEqual({added: 0, updated: 0}); }); it('should show a "single member updated message" when a member is updated', async () => { @@ -664,7 +667,8 @@ describe('actions/PolicyMember', () => { }); // Then it should show the singular member updated success message - expect(importedSpreadsheet?.importFinalModal.prompt).toBe(TestHelper.translateLocal('spreadsheet.importMembersSuccessfulDescription', {added: 0, updated: 1})); + expect(importedSpreadsheet?.importFinalModal.prompt).toBe('spreadsheet.importMembersSuccessfulDescription'); + expect(importedSpreadsheet?.importFinalModal.params).toStrictEqual({added: 0, updated: 1}); }); it('should show a "multiple members updated message" when multiple members are updated', async () => { @@ -705,7 +709,8 @@ describe('actions/PolicyMember', () => { }); // Then it should show the plural member updated success message - expect(importedSpreadsheet?.importFinalModal.prompt).toBe(TestHelper.translateLocal('spreadsheet.importMembersSuccessfulDescription', {added: 0, updated: 2})); + expect(importedSpreadsheet?.importFinalModal.prompt).toBe('spreadsheet.importMembersSuccessfulDescription'); + expect(importedSpreadsheet?.importFinalModal.params).toStrictEqual({added: 0, updated: 2}); }); it('should show a "single member added and updated message" when a member is both added and updated', async () => { @@ -741,7 +746,8 @@ describe('actions/PolicyMember', () => { }); // Then it should show the singular member added and updated success message - expect(importedSpreadsheet?.importFinalModal.prompt).toBe(TestHelper.translateLocal('spreadsheet.importMembersSuccessfulDescription', {added: 1, updated: 1})); + expect(importedSpreadsheet?.importFinalModal.prompt).toBe('spreadsheet.importMembersSuccessfulDescription'); + expect(importedSpreadsheet?.importFinalModal.params).toStrictEqual({added: 1, updated: 1}); }); it('should show a "multiple members added and updated message" when multiple members are both added and updated', async () => { @@ -784,7 +790,8 @@ describe('actions/PolicyMember', () => { }); // Then it should show the plural member added and updated success message - expect(importedSpreadsheet?.importFinalModal.prompt).toBe(TestHelper.translateLocal('spreadsheet.importMembersSuccessfulDescription', {added: 2, updated: 2})); + expect(importedSpreadsheet?.importFinalModal.prompt).toBe('spreadsheet.importMembersSuccessfulDescription'); + expect(importedSpreadsheet?.importFinalModal.params).toStrictEqual({added: 2, updated: 2}); }); }); }); From e403b928e1b198ab70feae007ca98d07b338c84c Mon Sep 17 00:00:00 2001 From: Shubham Agrawal Date: Wed, 29 Oct 2025 18:11:23 +0530 Subject: [PATCH 2/5] Addressed comments --- src/components/ImportSpreadsheetModal.tsx | 6 +++--- src/libs/actions/Policy/Category.ts | 10 +++++----- src/libs/actions/Policy/Member.ts | 10 +++++----- src/libs/actions/Policy/PerDiem.ts | 10 +++++----- src/libs/actions/Policy/Tag.ts | 18 +++++++++--------- src/types/onyx/ImportedSpreadsheet.ts | 6 +++--- 6 files changed, 30 insertions(+), 30 deletions(-) diff --git a/src/components/ImportSpreadsheetModal.tsx b/src/components/ImportSpreadsheetModal.tsx index 1507ff29d2c0..02b0d8b656da 100644 --- a/src/components/ImportSpreadsheetModal.tsx +++ b/src/components/ImportSpreadsheetModal.tsx @@ -20,9 +20,9 @@ function ImportSpreadsheetModal({isVisible, closeImportPageAndModal, onModalHide const {translate} = useLocalize(); const [spreadsheet] = useOnyx(ONYXKEYS.IMPORTED_SPREADSHEET, {canBeMissing: true}); - const titleText = spreadsheet?.importFinalModal?.title ? translate(spreadsheet.importFinalModal.title) : ''; - const promptText = spreadsheet?.importFinalModal?.prompt - ? translate(spreadsheet.importFinalModal.prompt, spreadsheet.importFinalModal.params as TranslationParameters[0]) + const titleText = spreadsheet?.importFinalModal?.titleKey ? translate(spreadsheet.importFinalModal.titleKey) : ''; + const promptText = spreadsheet?.importFinalModal?.promptKey + ? translate(spreadsheet.importFinalModal.promptKey, spreadsheet.importFinalModal.promptKeyParams as TranslationParameters[0]) : ''; return ( diff --git a/src/libs/actions/Policy/Category.ts b/src/libs/actions/Policy/Category.ts index ff1a132f0aef..b2302a346f57 100644 --- a/src/libs/actions/Policy/Category.ts +++ b/src/libs/actions/Policy/Category.ts @@ -258,9 +258,9 @@ function updateImportSpreadsheetData(categoriesLength: number) { value: { shouldFinalModalBeOpened: true, importFinalModal: { - title: 'spreadsheet.importSuccessfulTitle', - prompt: 'spreadsheet.importCategoriesSuccessfulDescription', - params: { + titleKey: 'spreadsheet.importSuccessfulTitle', + promptKey: 'spreadsheet.importCategoriesSuccessfulDescription', + promptKeyParams: { categories: categoriesLength, }, }, @@ -275,8 +275,8 @@ function updateImportSpreadsheetData(categoriesLength: number) { value: { shouldFinalModalBeOpened: true, importFinalModal: { - title: 'spreadsheet.importFailedTitle', - prompt: 'spreadsheet.importFailedDescription', + titleKey: 'spreadsheet.importFailedTitle', + promptKey: 'spreadsheet.importFailedDescription', }, }, }, diff --git a/src/libs/actions/Policy/Member.ts b/src/libs/actions/Policy/Member.ts index 2017b9896be8..6953ad8447da 100644 --- a/src/libs/actions/Policy/Member.ts +++ b/src/libs/actions/Policy/Member.ts @@ -229,9 +229,9 @@ function updateImportSpreadsheetData(addedMembersLength: number, updatedMembersL value: { shouldFinalModalBeOpened: true, importFinalModal: { - title: 'spreadsheet.importSuccessfulTitle', - prompt: 'spreadsheet.importMembersSuccessfulDescription', - params: { + titleKey: 'spreadsheet.importSuccessfulTitle', + promptKey: 'spreadsheet.importMembersSuccessfulDescription', + promptKeyParams: { added: addedMembersLength, updated: updatedMembersLength, }, @@ -247,8 +247,8 @@ function updateImportSpreadsheetData(addedMembersLength: number, updatedMembersL value: { shouldFinalModalBeOpened: true, importFinalModal: { - title: 'spreadsheet.importFailedTitle', - prompt: 'spreadsheet.importFailedDescription', + titleKey: 'spreadsheet.importFailedTitle', + promptKey: 'spreadsheet.importFailedDescription', }, }, }, diff --git a/src/libs/actions/Policy/PerDiem.ts b/src/libs/actions/Policy/PerDiem.ts index c45df23f5419..eda1c0f67030 100644 --- a/src/libs/actions/Policy/PerDiem.ts +++ b/src/libs/actions/Policy/PerDiem.ts @@ -110,9 +110,9 @@ function updateImportSpreadsheetData(ratesLength: number) { value: { shouldFinalModalBeOpened: true, importFinalModal: { - title: 'spreadsheet.importSuccessfulTitle', - prompt: 'spreadsheet.importPerDiemRatesSuccessfulDescription', - params: { + titleKey: 'spreadsheet.importSuccessfulTitle', + promptKey: 'spreadsheet.importPerDiemRatesSuccessfulDescription', + promptKeyParams: { rates: ratesLength, }, }, @@ -127,8 +127,8 @@ function updateImportSpreadsheetData(ratesLength: number) { value: { shouldFinalModalBeOpened: true, importFinalModal: { - title: 'spreadsheet.importFailedTitle', - prompt: 'spreadsheet.importFailedDescription', + titleKey: 'spreadsheet.importFailedTitle', + promptKey: 'spreadsheet.importFailedDescription', }, }, }, diff --git a/src/libs/actions/Policy/Tag.ts b/src/libs/actions/Policy/Tag.ts index 3a82d13a51c0..6ef1e50675eb 100644 --- a/src/libs/actions/Policy/Tag.ts +++ b/src/libs/actions/Policy/Tag.ts @@ -95,9 +95,9 @@ function updateImportSpreadsheetData(tagsLength: number): OnyxData { value: { shouldFinalModalBeOpened: true, importFinalModal: { - title: 'spreadsheet.importSuccessfulTitle', - prompt: 'spreadsheet.importTagsSuccessfulDescription', - params: { + titleKey: 'spreadsheet.importSuccessfulTitle', + promptKey: 'spreadsheet.importTagsSuccessfulDescription', + promptKeyParams: { tags: tagsLength, }, }, @@ -112,8 +112,8 @@ function updateImportSpreadsheetData(tagsLength: number): OnyxData { value: { shouldFinalModalBeOpened: true, importFinalModal: { - title: 'spreadsheet.importFailedTitle', - prompt: 'spreadsheet.importFailedDescription', + titleKey: 'spreadsheet.importFailedTitle', + promptKey: 'spreadsheet.importFailedDescription', }, }, }, @@ -811,8 +811,8 @@ function importMultiLevelTags(policyID: string, spreadsheet: ImportedSpreadsheet value: { shouldFinalModalBeOpened: true, importFinalModal: { - title: 'spreadsheet.importSuccessfulTitle', - prompt: 'spreadsheet.importMultiLevelTagsSuccessfulDescription', + titleKey: 'spreadsheet.importSuccessfulTitle', + promptKey: 'spreadsheet.importMultiLevelTagsSuccessfulDescription', }, }, }, @@ -831,8 +831,8 @@ function importMultiLevelTags(policyID: string, spreadsheet: ImportedSpreadsheet value: { shouldFinalModalBeOpened: true, importFinalModal: { - title: 'spreadsheet.importFailedTitle', - prompt: 'spreadsheet.importFailedDescription', + titleKey: 'spreadsheet.importFailedTitle', + promptKey: 'spreadsheet.importFailedDescription', }, }, }, diff --git a/src/types/onyx/ImportedSpreadsheet.ts b/src/types/onyx/ImportedSpreadsheet.ts index 481f59010e99..1926b3599526 100644 --- a/src/types/onyx/ImportedSpreadsheet.ts +++ b/src/types/onyx/ImportedSpreadsheet.ts @@ -8,13 +8,13 @@ type PathsStartingWith = Extract> = { /** Title of the modal */ - title: PathsStartingWith<'spreadsheet'>; + titleKey: PathsStartingWith<'spreadsheet'>; /** Message to display */ - prompt: TPath; + promptKey: TPath; /** Parameters for the translation */ - params: TranslationParameters[0]; + promptKeyParams: TranslationParameters[0]; }; /** From c5936906b64a1dfc8b5022d5402172287842a1da Mon Sep 17 00:00:00 2001 From: Shubham Agrawal Date: Wed, 29 Oct 2025 18:13:45 +0530 Subject: [PATCH 3/5] Addressed comments p2 --- src/types/onyx/ImportedSpreadsheet.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/types/onyx/ImportedSpreadsheet.ts b/src/types/onyx/ImportedSpreadsheet.ts index 1926b3599526..393109dbab58 100644 --- a/src/types/onyx/ImportedSpreadsheet.ts +++ b/src/types/onyx/ImportedSpreadsheet.ts @@ -1,14 +1,14 @@ import type {TranslationParameters, TranslationPaths} from '@src/languages/types'; /** - * Filter translation paths that start with a specific prefix + * Filter translation paths that start with spreadsheet prefix */ -type PathsStartingWith = Extract; +type SpreadsheetTranslationPaths = Extract; /** Texts to display depending on request success/failure */ -type ImportFinalModal> = { +type ImportFinalModal = { /** Title of the modal */ - titleKey: PathsStartingWith<'spreadsheet'>; + titleKey: SpreadsheetTranslationPaths; /** Message to display */ promptKey: TPath; @@ -22,8 +22,8 @@ type ImportFinalModal> = { * Each translation path gets its own properly typed variant */ type ImportFinalModalUnion = { - [K in PathsStartingWith<'spreadsheet'>]: ImportFinalModal; -}[PathsStartingWith<'spreadsheet'>]; + [K in SpreadsheetTranslationPaths]: ImportFinalModal; +}[SpreadsheetTranslationPaths]; /** Model of imported spreadsheet data */ type ImportedSpreadsheet = { From 34e923cce71ecb2e6a48df8e02cd24c2458b3b70 Mon Sep 17 00:00:00 2001 From: Shubham Agrawal Date: Wed, 29 Oct 2025 18:18:38 +0530 Subject: [PATCH 4/5] Fixed ts --- tests/actions/PolicyMemberTest.ts | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/tests/actions/PolicyMemberTest.ts b/tests/actions/PolicyMemberTest.ts index b144bed55a35..31ed02109089 100644 --- a/tests/actions/PolicyMemberTest.ts +++ b/tests/actions/PolicyMemberTest.ts @@ -569,8 +569,8 @@ describe('actions/PolicyMember', () => { }); // Then it should show the singular member added success message - expect(importedSpreadsheet?.importFinalModal.prompt).toBe('spreadsheet.importMembersSuccessfulDescription'); - expect(importedSpreadsheet?.importFinalModal.params).toStrictEqual({added: 1, updated: 0}); + expect(importedSpreadsheet?.importFinalModal.promptKey).toBe('spreadsheet.importMembersSuccessfulDescription'); + expect(importedSpreadsheet?.importFinalModal.promptKeyParams).toStrictEqual({added: 1, updated: 0}); }); it('should show a "multiple members added message" when multiple new members are added', async () => { @@ -599,8 +599,8 @@ describe('actions/PolicyMember', () => { }); // Then it should show the plural member added success message - expect(importedSpreadsheet?.importFinalModal.prompt).toBe('spreadsheet.importMembersSuccessfulDescription'); - expect(importedSpreadsheet?.importFinalModal.params).toStrictEqual({added: 2, updated: 0}); + expect(importedSpreadsheet?.importFinalModal.promptKey).toBe('spreadsheet.importMembersSuccessfulDescription'); + expect(importedSpreadsheet?.importFinalModal.promptKeyParams).toStrictEqual({added: 2, updated: 0}); }); it('should show a "no members added/updated message" when no new members are added or updated', async () => { @@ -633,8 +633,8 @@ describe('actions/PolicyMember', () => { }); // Then it should show the no member added/updated message - expect(importedSpreadsheet?.importFinalModal.prompt).toBe('spreadsheet.importMembersSuccessfulDescription'); - expect(importedSpreadsheet?.importFinalModal.params).toStrictEqual({added: 0, updated: 0}); + expect(importedSpreadsheet?.importFinalModal.promptKey).toBe('spreadsheet.importMembersSuccessfulDescription'); + expect(importedSpreadsheet?.importFinalModal.promptKeyParams).toStrictEqual({added: 0, updated: 0}); }); it('should show a "single member updated message" when a member is updated', async () => { @@ -667,8 +667,8 @@ describe('actions/PolicyMember', () => { }); // Then it should show the singular member updated success message - expect(importedSpreadsheet?.importFinalModal.prompt).toBe('spreadsheet.importMembersSuccessfulDescription'); - expect(importedSpreadsheet?.importFinalModal.params).toStrictEqual({added: 0, updated: 1}); + expect(importedSpreadsheet?.importFinalModal.promptKey).toBe('spreadsheet.importMembersSuccessfulDescription'); + expect(importedSpreadsheet?.importFinalModal.promptKeyParams).toStrictEqual({added: 0, updated: 1}); }); it('should show a "multiple members updated message" when multiple members are updated', async () => { @@ -709,8 +709,8 @@ describe('actions/PolicyMember', () => { }); // Then it should show the plural member updated success message - expect(importedSpreadsheet?.importFinalModal.prompt).toBe('spreadsheet.importMembersSuccessfulDescription'); - expect(importedSpreadsheet?.importFinalModal.params).toStrictEqual({added: 0, updated: 2}); + expect(importedSpreadsheet?.importFinalModal.promptKey).toBe('spreadsheet.importMembersSuccessfulDescription'); + expect(importedSpreadsheet?.importFinalModal.promptKeyParams).toStrictEqual({added: 0, updated: 2}); }); it('should show a "single member added and updated message" when a member is both added and updated', async () => { @@ -746,8 +746,8 @@ describe('actions/PolicyMember', () => { }); // Then it should show the singular member added and updated success message - expect(importedSpreadsheet?.importFinalModal.prompt).toBe('spreadsheet.importMembersSuccessfulDescription'); - expect(importedSpreadsheet?.importFinalModal.params).toStrictEqual({added: 1, updated: 1}); + expect(importedSpreadsheet?.importFinalModal.promptKey).toBe('spreadsheet.importMembersSuccessfulDescription'); + expect(importedSpreadsheet?.importFinalModal.promptKeyParams).toStrictEqual({added: 1, updated: 1}); }); it('should show a "multiple members added and updated message" when multiple members are both added and updated', async () => { @@ -790,8 +790,8 @@ describe('actions/PolicyMember', () => { }); // Then it should show the plural member added and updated success message - expect(importedSpreadsheet?.importFinalModal.prompt).toBe('spreadsheet.importMembersSuccessfulDescription'); - expect(importedSpreadsheet?.importFinalModal.params).toStrictEqual({added: 2, updated: 2}); + expect(importedSpreadsheet?.importFinalModal.promptKey).toBe('spreadsheet.importMembersSuccessfulDescription'); + expect(importedSpreadsheet?.importFinalModal.promptKeyParams).toStrictEqual({added: 2, updated: 2}); }); }); }); From 7248a08ddf4991445bc4138a02fc3d6aefec6feb Mon Sep 17 00:00:00 2001 From: Shubham Agrawal Date: Wed, 29 Oct 2025 22:09:55 +0530 Subject: [PATCH 5/5] Addressed comments p3 --- ...adsheetModal.tsx => ImportSpreadsheetConfirmModal.tsx} | 8 ++++---- src/pages/workspace/categories/ImportedCategoriesPage.tsx | 4 ++-- .../workspace/members/ImportedMembersConfirmationPage.tsx | 4 ++-- src/pages/workspace/members/ImportedMembersPage.tsx | 4 ++-- src/pages/workspace/perDiem/ImportedPerDiemPage.tsx | 4 ++-- .../workspace/tags/ImportMultiLevelTagsSettingsPage.tsx | 4 ++-- src/pages/workspace/tags/ImportedMultiLevelTagsPage.tsx | 4 ++-- src/pages/workspace/tags/ImportedTagsPage.tsx | 4 ++-- 8 files changed, 18 insertions(+), 18 deletions(-) rename src/components/{ImportSpreadsheetModal.tsx => ImportSpreadsheetConfirmModal.tsx} (83%) diff --git a/src/components/ImportSpreadsheetModal.tsx b/src/components/ImportSpreadsheetConfirmModal.tsx similarity index 83% rename from src/components/ImportSpreadsheetModal.tsx rename to src/components/ImportSpreadsheetConfirmModal.tsx index 02b0d8b656da..ea87d28b6322 100644 --- a/src/components/ImportSpreadsheetModal.tsx +++ b/src/components/ImportSpreadsheetConfirmModal.tsx @@ -5,7 +5,7 @@ import type {TranslationParameters} from '@src/languages/types'; import ONYXKEYS from '@src/ONYXKEYS'; import ConfirmModal from './ConfirmModal'; -type ImportSpreadsheetModalProps = { +type ImportSpreadsheetConfirmModalProps = { /** Modal visibility */ isVisible: boolean; @@ -16,7 +16,7 @@ type ImportSpreadsheetModalProps = { onModalHide?: () => void; }; -function ImportSpreadsheetModal({isVisible, closeImportPageAndModal, onModalHide}: ImportSpreadsheetModalProps) { +function ImportSpreadsheetConfirmModal({isVisible, closeImportPageAndModal, onModalHide}: ImportSpreadsheetConfirmModalProps) { const {translate} = useLocalize(); const [spreadsheet] = useOnyx(ONYXKEYS.IMPORTED_SPREADSHEET, {canBeMissing: true}); @@ -40,6 +40,6 @@ function ImportSpreadsheetModal({isVisible, closeImportPageAndModal, onModalHide ); } -ImportSpreadsheetModal.displayName = 'ImportSpreadsheetModal'; +ImportSpreadsheetConfirmModal.displayName = 'ImportSpreadsheetConfirmModal'; -export default ImportSpreadsheetModal; +export default ImportSpreadsheetConfirmModal; diff --git a/src/pages/workspace/categories/ImportedCategoriesPage.tsx b/src/pages/workspace/categories/ImportedCategoriesPage.tsx index 9ca6547f5287..d0b9e751f10c 100644 --- a/src/pages/workspace/categories/ImportedCategoriesPage.tsx +++ b/src/pages/workspace/categories/ImportedCategoriesPage.tsx @@ -2,7 +2,7 @@ import React, {useCallback, useState} from 'react'; import HeaderWithBackButton from '@components/HeaderWithBackButton'; import type {ColumnRole} from '@components/ImportColumn'; import ImportSpreadsheetColumns from '@components/ImportSpreadsheetColumns'; -import ImportSpreadsheetModal from '@components/ImportSpreadsheetModal'; +import ImportSpreadsheetConfirmModal from '@components/ImportSpreadsheetConfirmModal'; import ScreenWrapper from '@components/ScreenWrapper'; import useCloseImportPage from '@hooks/useCloseImportPage'; import useLocalize from '@hooks/useLocalize'; @@ -156,7 +156,7 @@ function ImportedCategoriesPage({route}: ImportedCategoriesPageProps) { learnMoreLink={CONST.IMPORT_SPREADSHEET.CATEGORIES_ARTICLE_LINK} /> - diff --git a/src/pages/workspace/members/ImportedMembersConfirmationPage.tsx b/src/pages/workspace/members/ImportedMembersConfirmationPage.tsx index d04e17d2e91d..f8dc85c81d3e 100644 --- a/src/pages/workspace/members/ImportedMembersConfirmationPage.tsx +++ b/src/pages/workspace/members/ImportedMembersConfirmationPage.tsx @@ -5,7 +5,7 @@ import type {ValueOf} from 'type-fest'; import Button from '@components/Button'; import FixedFooter from '@components/FixedFooter'; import HeaderWithBackButton from '@components/HeaderWithBackButton'; -import ImportSpreadsheetModal from '@components/ImportSpreadsheetModal'; +import ImportSpreadsheetConfirmModal from '@components/ImportSpreadsheetConfirmModal'; import MenuItemWithTopDescription from '@components/MenuItemWithTopDescription'; import {usePersonalDetails} from '@components/OnyxListItemProvider'; import PressableWithoutFeedback from '@components/Pressable/PressableWithoutFeedback'; @@ -194,7 +194,7 @@ function ImportedMembersConfirmationPage({route}: ImportedMembersConfirmationPag - diff --git a/src/pages/workspace/members/ImportedMembersPage.tsx b/src/pages/workspace/members/ImportedMembersPage.tsx index 04d3ecc8454b..f9dd78dbd5e2 100644 --- a/src/pages/workspace/members/ImportedMembersPage.tsx +++ b/src/pages/workspace/members/ImportedMembersPage.tsx @@ -3,7 +3,7 @@ import {InteractionManager} from 'react-native'; import HeaderWithBackButton from '@components/HeaderWithBackButton'; import type {ColumnRole} from '@components/ImportColumn'; import ImportSpreadsheetColumns from '@components/ImportSpreadsheetColumns'; -import ImportSpreadsheetModal from '@components/ImportSpreadsheetModal'; +import ImportSpreadsheetConfirmModal from '@components/ImportSpreadsheetConfirmModal'; import ScreenWrapper from '@components/ScreenWrapper'; import useCloseImportPage from '@hooks/useCloseImportPage'; import useLocalize from '@hooks/useLocalize'; @@ -188,7 +188,7 @@ function ImportedMembersPage({route}: ImportedMembersPageProps) { isButtonLoading={isImporting} learnMoreLink={CONST.IMPORT_SPREADSHEET.MEMBERS_ARTICLE_LINK} /> - { diff --git a/src/pages/workspace/perDiem/ImportedPerDiemPage.tsx b/src/pages/workspace/perDiem/ImportedPerDiemPage.tsx index 5864f76f0d91..bb11060e458f 100644 --- a/src/pages/workspace/perDiem/ImportedPerDiemPage.tsx +++ b/src/pages/workspace/perDiem/ImportedPerDiemPage.tsx @@ -2,7 +2,7 @@ import React, {useCallback, useState} from 'react'; import HeaderWithBackButton from '@components/HeaderWithBackButton'; import type {ColumnRole} from '@components/ImportColumn'; import ImportSpreadsheetColumns from '@components/ImportSpreadsheetColumns'; -import ImportSpreadsheetModal from '@components/ImportSpreadsheetModal'; +import ImportSpreadsheetConfirmModal from '@components/ImportSpreadsheetConfirmModal'; import ScreenWrapper from '@components/ScreenWrapper'; import useCloseImportPage from '@hooks/useCloseImportPage'; import useLocalize from '@hooks/useLocalize'; @@ -161,7 +161,7 @@ function ImportedPerDiemPage({route}: ImportedPerDiemPageProps) { learnMoreLink={CONST.IMPORT_SPREADSHEET.CATEGORIES_ARTICLE_LINK} /> - diff --git a/src/pages/workspace/tags/ImportMultiLevelTagsSettingsPage.tsx b/src/pages/workspace/tags/ImportMultiLevelTagsSettingsPage.tsx index 07f8cf42ff21..12dd2a438fa6 100644 --- a/src/pages/workspace/tags/ImportMultiLevelTagsSettingsPage.tsx +++ b/src/pages/workspace/tags/ImportMultiLevelTagsSettingsPage.tsx @@ -6,7 +6,7 @@ import Button from '@components/Button'; import FixedFooter from '@components/FixedFooter'; import HeaderWithBackButton from '@components/HeaderWithBackButton'; import ImportSpreadsheet from '@components/ImportSpreadsheet'; -import ImportSpreadsheetModal from '@components/ImportSpreadsheetModal'; +import ImportSpreadsheetConfirmModal from '@components/ImportSpreadsheetConfirmModal'; import ScreenWrapper from '@components/ScreenWrapper'; import Switch from '@components/Switch'; import Text from '@components/Text'; @@ -146,7 +146,7 @@ function ImportMultiLevelTagsSettingsPage({route}: ImportMultiLevelTagsSettingsP large /> - diff --git a/src/pages/workspace/tags/ImportedMultiLevelTagsPage.tsx b/src/pages/workspace/tags/ImportedMultiLevelTagsPage.tsx index cad70bff23df..5a282bab63f6 100644 --- a/src/pages/workspace/tags/ImportedMultiLevelTagsPage.tsx +++ b/src/pages/workspace/tags/ImportedMultiLevelTagsPage.tsx @@ -1,7 +1,7 @@ import React, {useCallback, useState} from 'react'; import HeaderWithBackButton from '@components/HeaderWithBackButton'; import ImportSpreadsheetColumns from '@components/ImportSpreadsheetColumns'; -import ImportSpreadsheetModal from '@components/ImportSpreadsheetModal'; +import ImportSpreadsheetConfirmModal from '@components/ImportSpreadsheetConfirmModal'; import ScreenWrapper from '@components/ScreenWrapper'; import useCloseImportPage from '@hooks/useCloseImportPage'; import useLocalize from '@hooks/useLocalize'; @@ -69,7 +69,7 @@ function ImportedMultiLevelTagsPage({route}: ImportedMultiLevelTagsPageProps) { customHeaderText={translate('workspace.tags.importMultiLevelTagsSupportingText')} /> - diff --git a/src/pages/workspace/tags/ImportedTagsPage.tsx b/src/pages/workspace/tags/ImportedTagsPage.tsx index cc23e27bfb44..ffab9cb2d4c3 100644 --- a/src/pages/workspace/tags/ImportedTagsPage.tsx +++ b/src/pages/workspace/tags/ImportedTagsPage.tsx @@ -2,7 +2,7 @@ import React, {useCallback, useMemo, useState} from 'react'; import HeaderWithBackButton from '@components/HeaderWithBackButton'; import type {ColumnRole} from '@components/ImportColumn'; import ImportSpreadsheetColumns from '@components/ImportSpreadsheetColumns'; -import ImportSpreadsheetModal from '@components/ImportSpreadsheetModal'; +import ImportSpreadsheetConfirmModal from '@components/ImportSpreadsheetConfirmModal'; import ScreenWrapper from '@components/ScreenWrapper'; import useCloseImportPage from '@hooks/useCloseImportPage'; import useLocalize from '@hooks/useLocalize'; @@ -152,7 +152,7 @@ function ImportedTagsPage({route}: ImportedTagsPageProps) { learnMoreLink={CONST.IMPORT_SPREADSHEET.TAGS_ARTICLE_LINK} /> -