diff --git a/src/components/Search/SearchContext.tsx b/src/components/Search/SearchContext.tsx index 6e0d67e39daa4..5bf332e2c4bb8 100644 --- a/src/components/Search/SearchContext.tsx +++ b/src/components/Search/SearchContext.tsx @@ -4,7 +4,7 @@ import {isTransactionCardGroupListItemType, isTransactionListItemType, isTransac import CONST from '@src/CONST'; import type ChildrenProps from '@src/types/utils/ChildrenProps'; import {isEmptyObject} from '@src/types/utils/EmptyObject'; -import type {SearchContext, SearchContextData} from './types'; +import type {SearchContext, SearchContextData, SelectedTransactions} from './types'; const defaultSearchContextData: SearchContextData = { currentSearchHash: -1, @@ -137,16 +137,34 @@ function SearchContextProvider({children}: ChildrenProps) { const removeTransaction: SearchContext['removeTransaction'] = useCallback( (transactionID) => { - const selectedTransactionIDs = searchContextData.selectedTransactionIDs; - if (!transactionID || !selectedTransactionIDs.length) { + if (!transactionID) { return; } - setSearchContextData((prevState) => ({ - ...prevState, - selectedTransactionIDs: selectedTransactionIDs.filter((ID) => transactionID !== ID), - })); + const selectedTransactionIDs = searchContextData.selectedTransactionIDs; + + if (!isEmptyObject(searchContextData.selectedTransactions)) { + const newSelectedTransactions = Object.entries(searchContextData.selectedTransactions).reduce((acc, [key, value]) => { + if (key === transactionID) { + return acc; + } + acc[key] = value; + return acc; + }, {} as SelectedTransactions); + + setSearchContextData((prevState) => ({ + ...prevState, + selectedTransactions: newSelectedTransactions, + })); + } + + if (selectedTransactionIDs.length > 0) { + setSearchContextData((prevState) => ({ + ...prevState, + selectedTransactionIDs: selectedTransactionIDs.filter((ID) => transactionID !== ID), + })); + } }, - [searchContextData.selectedTransactionIDs], + [searchContextData.selectedTransactionIDs, searchContextData.selectedTransactions], ); const searchContext = useMemo( diff --git a/src/pages/workspace/tags/WorkspaceTagsPage.tsx b/src/pages/workspace/tags/WorkspaceTagsPage.tsx index 4c72f5ce80972..162b6a189e698 100644 --- a/src/pages/workspace/tags/WorkspaceTagsPage.tsx +++ b/src/pages/workspace/tags/WorkspaceTagsPage.tsx @@ -315,7 +315,7 @@ function WorkspaceTagsPage({route}: WorkspaceTagsPageProps) { }; const navigateToTagSettings = (tag: TagListItem) => { - if (isSmallScreenWidth && !isMobileSelectionModeEnabled) { + if (isSmallScreenWidth && isMobileSelectionModeEnabled) { toggleTag(tag); return; }