From 18b510423a07c793fdd70fac466abf7c68fcea71 Mon Sep 17 00:00:00 2001 From: Olgierd Date: Mon, 24 Nov 2025 18:06:23 +0100 Subject: [PATCH 1/4] Make NetSuiteCustomListSelectorModal use new SelectionList --- .../NetSuiteCustomListSelectorModal.tsx | 37 +++++++++---------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/src/pages/workspace/accounting/netsuite/import/NetSuiteImportCustomFieldNew/NetSuiteCustomListSelectorModal.tsx b/src/pages/workspace/accounting/netsuite/import/NetSuiteImportCustomFieldNew/NetSuiteCustomListSelectorModal.tsx index 9849ec967a11..cf9a3450642e 100644 --- a/src/pages/workspace/accounting/netsuite/import/NetSuiteImportCustomFieldNew/NetSuiteCustomListSelectorModal.tsx +++ b/src/pages/workspace/accounting/netsuite/import/NetSuiteImportCustomFieldNew/NetSuiteCustomListSelectorModal.tsx @@ -3,8 +3,8 @@ import React, {useMemo} from 'react'; import HeaderWithBackButton from '@components/HeaderWithBackButton'; import Modal from '@components/Modal'; import ScreenWrapper from '@components/ScreenWrapper'; -import SelectionList from '@components/SelectionListWithSections'; -import RadioListItem from '@components/SelectionListWithSections/RadioListItem'; +import SelectionList from '@components/SelectionList'; +import RadioListItem from '@components/SelectionList/ListItem/RadioListItem'; import useDebouncedState from '@hooks/useDebouncedState'; import useLocalize from '@hooks/useLocalize'; import type {CustomListSelectorType} from '@pages/workspace/accounting/netsuite/types'; @@ -37,7 +37,7 @@ function NetSuiteCustomListSelectorModal({isVisible, currentCustomListValue, onC const {translate} = useLocalize(); const [searchValue, debouncedSearchValue, setSearchValue] = useDebouncedState(''); - const {sections, headerMessage, showTextInput} = useMemo(() => { + const {options, showTextInput} = useMemo(() => { const customLists = policy?.connections?.netsuite?.options?.data?.customLists ?? []; const customListData = customLists.map((customListRecord) => ({ text: customListRecord.name, @@ -52,17 +52,20 @@ function NetSuiteCustomListSelectorModal({isVisible, currentCustomListValue, onC const isEmpty = debouncedSearchValue.trim() && !filteredCustomLists.length; return { - sections: isEmpty - ? [] - : [ - { - data: filteredCustomLists, - }, - ], - headerMessage: isEmpty ? translate('common.noResultsFound') : '', + options: isEmpty ? [] : [...filteredCustomLists], showTextInput: customListData.length > CONST.STANDARD_LIST_ITEM_LIMIT, }; - }, [debouncedSearchValue, policy?.connections?.netsuite?.options?.data?.customLists, translate, currentCustomListValue]); + }, [debouncedSearchValue, policy?.connections?.netsuite?.options?.data?.customLists, currentCustomListValue]); + + const textInputOptions = useMemo( + () => ({ + value: searchValue, + label: showTextInput ? translate('common.search') : undefined, + onChangeText: setSearchValue, + headerMessage: options.length === 0 ? '' : translate('common.noResultsFound'), + }), + [searchValue, showTextInput, translate, setSearchValue, options.length], + ); return ( From 15d4f57f2f9bd0238f91de79f260dc28a5f8a67a Mon Sep 17 00:00:00 2001 From: Olgierd Date: Wed, 26 Nov 2025 11:02:05 +0100 Subject: [PATCH 2/4] Remove unnecessary use of spreading an array --- .../NetSuiteCustomListSelectorModal.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/workspace/accounting/netsuite/import/NetSuiteImportCustomFieldNew/NetSuiteCustomListSelectorModal.tsx b/src/pages/workspace/accounting/netsuite/import/NetSuiteImportCustomFieldNew/NetSuiteCustomListSelectorModal.tsx index cf9a3450642e..912a3081b337 100644 --- a/src/pages/workspace/accounting/netsuite/import/NetSuiteImportCustomFieldNew/NetSuiteCustomListSelectorModal.tsx +++ b/src/pages/workspace/accounting/netsuite/import/NetSuiteImportCustomFieldNew/NetSuiteCustomListSelectorModal.tsx @@ -52,7 +52,7 @@ function NetSuiteCustomListSelectorModal({isVisible, currentCustomListValue, onC const isEmpty = debouncedSearchValue.trim() && !filteredCustomLists.length; return { - options: isEmpty ? [] : [...filteredCustomLists], + options: isEmpty ? [] : filteredCustomLists, showTextInput: customListData.length > CONST.STANDARD_LIST_ITEM_LIMIT, }; }, [debouncedSearchValue, policy?.connections?.netsuite?.options?.data?.customLists, currentCustomListValue]); From 9a9fbc0bda542cf03eb45443f9dfb5cacb47840d Mon Sep 17 00:00:00 2001 From: Olgierd Date: Wed, 26 Nov 2025 11:38:58 +0100 Subject: [PATCH 3/4] Applied suggested fix of the inverted headerMessage logic bug --- .../NetSuiteCustomListSelectorModal.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pages/workspace/accounting/netsuite/import/NetSuiteImportCustomFieldNew/NetSuiteCustomListSelectorModal.tsx b/src/pages/workspace/accounting/netsuite/import/NetSuiteImportCustomFieldNew/NetSuiteCustomListSelectorModal.tsx index 912a3081b337..e7d0cfd6c501 100644 --- a/src/pages/workspace/accounting/netsuite/import/NetSuiteImportCustomFieldNew/NetSuiteCustomListSelectorModal.tsx +++ b/src/pages/workspace/accounting/netsuite/import/NetSuiteImportCustomFieldNew/NetSuiteCustomListSelectorModal.tsx @@ -62,9 +62,9 @@ function NetSuiteCustomListSelectorModal({isVisible, currentCustomListValue, onC value: searchValue, label: showTextInput ? translate('common.search') : undefined, onChangeText: setSearchValue, - headerMessage: options.length === 0 ? '' : translate('common.noResultsFound'), + headerMessage: debouncedSearchValue.trim() && options.length === 0 ? translate('common.noResultsFound') : '', }), - [searchValue, showTextInput, translate, setSearchValue, options.length], + [searchValue, showTextInput, translate, setSearchValue, debouncedSearchValue, options.length], ); return ( From 4bcbb21584e76ef7614a5b81b029be545dc5704a Mon Sep 17 00:00:00 2001 From: Olgierd Date: Wed, 26 Nov 2025 12:07:43 +0100 Subject: [PATCH 4/4] Extract the rawCustomLists variable outside the useMemo --- .../NetSuiteCustomListSelectorModal.tsx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/pages/workspace/accounting/netsuite/import/NetSuiteImportCustomFieldNew/NetSuiteCustomListSelectorModal.tsx b/src/pages/workspace/accounting/netsuite/import/NetSuiteImportCustomFieldNew/NetSuiteCustomListSelectorModal.tsx index e7d0cfd6c501..2a3a71730144 100644 --- a/src/pages/workspace/accounting/netsuite/import/NetSuiteImportCustomFieldNew/NetSuiteCustomListSelectorModal.tsx +++ b/src/pages/workspace/accounting/netsuite/import/NetSuiteImportCustomFieldNew/NetSuiteCustomListSelectorModal.tsx @@ -37,8 +37,10 @@ function NetSuiteCustomListSelectorModal({isVisible, currentCustomListValue, onC const {translate} = useLocalize(); const [searchValue, debouncedSearchValue, setSearchValue] = useDebouncedState(''); + const rawCustomLists = policy?.connections?.netsuite?.options?.data?.customLists; + const {options, showTextInput} = useMemo(() => { - const customLists = policy?.connections?.netsuite?.options?.data?.customLists ?? []; + const customLists = rawCustomLists ?? []; const customListData = customLists.map((customListRecord) => ({ text: customListRecord.name, value: customListRecord.name, @@ -55,7 +57,7 @@ function NetSuiteCustomListSelectorModal({isVisible, currentCustomListValue, onC options: isEmpty ? [] : filteredCustomLists, showTextInput: customListData.length > CONST.STANDARD_LIST_ITEM_LIMIT, }; - }, [debouncedSearchValue, policy?.connections?.netsuite?.options?.data?.customLists, currentCustomListValue]); + }, [debouncedSearchValue, rawCustomLists, currentCustomListValue]); const textInputOptions = useMemo( () => ({