diff --git a/src/pages/AddUnreportedExpense.tsx b/src/pages/AddUnreportedExpense.tsx index e5143d40e3d7..c1c18f55be9d 100644 --- a/src/pages/AddUnreportedExpense.tsx +++ b/src/pages/AddUnreportedExpense.tsx @@ -1,6 +1,7 @@ import React, {useCallback, useEffect, useMemo, useRef, useState} from 'react'; import {InteractionManager} from 'react-native'; import type {OnyxCollection} from 'react-native-onyx'; +import Button from '@components/Button'; import EmptyStateComponent from '@components/EmptyStateComponent'; import FormHelpMessage from '@components/FormHelpMessage'; import HeaderWithBackButton from '@components/HeaderWithBackButton'; @@ -110,8 +111,13 @@ function AddUnreportedExpense({route}: AddUnreportedExpensePageType) { const styles = useThemeStyles(); const selectionListRef = useRef(null); + + const shouldShowTextInput = useMemo(() => { + return transactions.length >= CONST.SEARCH_ITEM_LIMIT; + }, [transactions.length]); + const filteredTransactions = useMemo(() => { - if (!debouncedSearchValue.trim()) { + if (!debouncedSearchValue.trim() || !shouldShowTextInput) { return transactions; } @@ -135,13 +141,58 @@ function AddUnreportedExpense({route}: AddUnreportedExpensePageType) { return searchableFields; }); - }, [transactions, debouncedSearchValue]); + }, [debouncedSearchValue, shouldShowTextInput, transactions]); const sections: Array> = useMemo(() => createUnreportedExpenseSections(filteredTransactions), [filteredTransactions]); - const shouldShowTextInput = useMemo(() => { - return transactions.length >= CONST.SEARCH_ITEM_LIMIT; - }, [transactions.length]); + const handleConfirm = useCallback(() => { + if (selectedIds.size === 0) { + setErrorMessage(translate('iou.selectUnreportedExpense')); + return; + } + Navigation.dismissModal(); + // eslint-disable-next-line deprecation/deprecation + InteractionManager.runAfterInteractions(() => { + if (report && isIOUReport(report)) { + convertBulkTrackedExpensesToIOU([...selectedIds], report.reportID); + } else { + changeTransactionsReport( + [...selectedIds], + report?.reportID ?? CONST.REPORT.UNREPORTED_REPORT_ID, + isASAPSubmitBetaEnabled, + session?.accountID ?? CONST.DEFAULT_NUMBER_ID, + session?.email ?? '', + policy, + reportNextStep, + policyCategories, + ); + } + }); + setErrorMessage(''); + }, [selectedIds, translate, report, isASAPSubmitBetaEnabled, session?.accountID, session?.email, policy, reportNextStep, policyCategories]); + + const footerContent = useMemo(() => { + return ( + <> + {!!errorMessage && ( + + )} +