From e076faaf48c39195cef79209fa443fc0d2e9c80a Mon Sep 17 00:00:00 2001 From: FitseTLT Date: Tue, 3 Jun 2025 17:36:00 +0300 Subject: [PATCH 1/2] remove transaction on deleteMoneyRequest --- src/components/MoneyRequestHeader.tsx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/components/MoneyRequestHeader.tsx b/src/components/MoneyRequestHeader.tsx index 96d8458317c1..ada43ecac44b 100644 --- a/src/components/MoneyRequestHeader.tsx +++ b/src/components/MoneyRequestHeader.tsx @@ -48,6 +48,7 @@ import * as Expensicons from './Icon/Expensicons'; import LoadingBar from './LoadingBar'; import type {MoneyRequestHeaderStatusBarProps} from './MoneyRequestHeaderStatusBar'; import MoneyRequestHeaderStatusBar from './MoneyRequestHeaderStatusBar'; +import {useMoneyRequestReportContext} from './MoneyRequestReportView/MoneyRequestReportContext'; import MoneyRequestReportTransactionsNavigation from './MoneyRequestReportView/MoneyRequestReportTransactionsNavigation'; type MoneyRequestHeaderProps = { @@ -92,6 +93,7 @@ function MoneyRequestHeader({report, parentReportAction, policy, onBackButtonPre const isDuplicate = isDuplicateTransactionUtils(transaction?.transactionID); const reportID = report?.reportID; const {isBetaEnabled} = usePermissions(); + const {removeTransaction} = useMoneyRequestReportContext(); const isReportInRHP = route.name === SCREENS.SEARCH.REPORT_RHP; const shouldDisplayTransactionNavigation = !!(reportID && isReportInRHP); @@ -331,6 +333,7 @@ function MoneyRequestHeader({report, parentReportAction, policy, onBackButtonPre } deleteMoneyRequest(transaction?.transactionID, parentReportAction, true); + removeTransaction(transaction.transactionID); onBackButtonPress(); }} onCancel={() => setIsDeleteModalVisible(false)} From 1ef35981a9b80f023ff60a0e091dacb9686c86ae Mon Sep 17 00:00:00 2001 From: FitseTLT Date: Thu, 5 Jun 2025 16:08:16 +0300 Subject: [PATCH 2/2] update to search context --- src/components/MoneyRequestHeader.tsx | 4 ++-- src/components/Search/SearchContext.tsx | 17 +++++++++++++++++ src/components/Search/types.ts | 1 + src/pages/ReportDetailsPage.tsx | 9 +-------- 4 files changed, 21 insertions(+), 10 deletions(-) diff --git a/src/components/MoneyRequestHeader.tsx b/src/components/MoneyRequestHeader.tsx index b726c9fde5e4..d98bdcfc2f2d 100644 --- a/src/components/MoneyRequestHeader.tsx +++ b/src/components/MoneyRequestHeader.tsx @@ -47,8 +47,8 @@ import * as Expensicons from './Icon/Expensicons'; import LoadingBar from './LoadingBar'; import type {MoneyRequestHeaderStatusBarProps} from './MoneyRequestHeaderStatusBar'; import MoneyRequestHeaderStatusBar from './MoneyRequestHeaderStatusBar'; -import {useMoneyRequestReportContext} from './MoneyRequestReportView/MoneyRequestReportContext'; import MoneyRequestReportTransactionsNavigation from './MoneyRequestReportView/MoneyRequestReportTransactionsNavigation'; +import {useSearchContext} from './Search/SearchContext'; type MoneyRequestHeaderProps = { /** The report currently being looked at */ @@ -92,7 +92,7 @@ function MoneyRequestHeader({report, parentReportAction, policy, onBackButtonPre const isDuplicate = isDuplicateTransactionUtils(transaction?.transactionID); const reportID = report?.reportID; const {isBetaEnabled} = usePermissions(); - const {removeTransaction} = useMoneyRequestReportContext(); + const {removeTransaction} = useSearchContext(); const isReportInRHP = route.name === SCREENS.SEARCH.REPORT_RHP; const shouldDisplayTransactionNavigation = !!(reportID && isReportInRHP); diff --git a/src/components/Search/SearchContext.tsx b/src/components/Search/SearchContext.tsx index 234aca31ffad..da4d51bd30ca 100644 --- a/src/components/Search/SearchContext.tsx +++ b/src/components/Search/SearchContext.tsx @@ -23,6 +23,7 @@ const defaultSearchContext: SearchContext = { setLastSearchType: () => {}, setCurrentSearchHash: () => {}, setSelectedTransactions: () => {}, + removeTransaction: () => {}, clearSelectedTransactions: () => {}, setShouldShowFiltersBarLoading: () => {}, setShouldShowExportModeOption: () => {}, @@ -104,9 +105,24 @@ function SearchContextProvider({children}: ChildrenProps) { [searchContextData.currentSearchHash, setSelectedTransactions], ); + const removeTransaction: SearchContext['removeTransaction'] = useCallback( + (transactionID) => { + const selectedTransactionIDs = searchContextData.selectedTransactionIDs; + if (!transactionID || !selectedTransactionIDs.length) { + return; + } + setSearchContextData((prevState) => ({ + ...prevState, + selectedTransactionIDs: selectedTransactionIDs.filter((ID) => transactionID !== ID), + })); + }, + [searchContextData.selectedTransactionIDs], + ); + const searchContext = useMemo( () => ({ ...searchContextData, + removeTransaction, setCurrentSearchHash, setSelectedTransactions, clearSelectedTransactions, @@ -130,6 +146,7 @@ function SearchContextProvider({children}: ChildrenProps) { setShouldShowExportModeOption, isExportMode, setExportMode, + removeTransaction, ], ); diff --git a/src/components/Search/types.ts b/src/components/Search/types.ts index ab24194a715e..11f492ab8015 100644 --- a/src/components/Search/types.ts +++ b/src/components/Search/types.ts @@ -87,6 +87,7 @@ type SearchContext = SearchContextData & { (hash?: number, shouldTurnOffSelectionMode?: boolean): void; (clearIDs: true, unused?: undefined): void; }; + removeTransaction: (transactionID: string | undefined) => void; shouldShowFiltersBarLoading: boolean; setShouldShowFiltersBarLoading: (shouldShow: boolean) => void; setLastSearchType: (type: string | undefined) => void; diff --git a/src/pages/ReportDetailsPage.tsx b/src/pages/ReportDetailsPage.tsx index 60596b424c97..2ad1f27fb469 100644 --- a/src/pages/ReportDetailsPage.tsx +++ b/src/pages/ReportDetailsPage.tsx @@ -157,14 +157,7 @@ function ReportDetailsPage({policies, report, route, reportMetadata}: ReportDeta const {reportActions} = usePaginatedReportActions(report.reportID); - const {setSelectedTransactions, selectedTransactionIDs} = useSearchContext(); - - const removeTransaction = useCallback( - (transactionID?: string) => { - setSelectedTransactions(selectedTransactionIDs.filter((t) => t !== transactionID)); - }, - [setSelectedTransactions, selectedTransactionIDs], - ); + const {removeTransaction} = useSearchContext(); const transactionThreadReportID = useMemo(() => getOneTransactionThreadReportID(report.reportID, reportActions ?? [], isOffline), [report.reportID, reportActions, isOffline]);