From ca22bb6ceba89bacd9f32862679d1e254cce6bfa Mon Sep 17 00:00:00 2001 From: Grisha Kruglov Date: Tue, 23 Nov 2021 21:44:35 -0800 Subject: [PATCH] [fenix] Closes https://github.com/mozilla-mobile/fenix/issues/22499: Emit search group disband action on history group removal This is needed to prevent removed search groups from coming back after user interacts with the tab. E.g. if we don't fire this action, upon interaction with the tab after a corresponding search group was removed we will end up creating metadat with the deleted 'searchTerms' (they'll be read from the 'historyMetadata' state on the tab). At this point we probably want to start encapsulating all of this in a use case - let's do that separately in https://github.com/mozilla-mobile/android-components/issues/11309, and just fix the bug for now. --- .../fenix/components/history/PagedHistoryProvider.kt | 2 +- .../org/mozilla/fenix/library/history/HistoryFragment.kt | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/mozilla/fenix/components/history/PagedHistoryProvider.kt b/app/src/main/java/org/mozilla/fenix/components/history/PagedHistoryProvider.kt index efd7540b2f..e94b1989f6 100644 --- a/app/src/main/java/org/mozilla/fenix/components/history/PagedHistoryProvider.kt +++ b/app/src/main/java/org/mozilla/fenix/components/history/PagedHistoryProvider.kt @@ -108,7 +108,7 @@ class DefaultPagedHistoryProvider( /** * Removes [group] and any corresponding history visits. */ - suspend fun deleteHistoryGroup(group: History.Group) { + suspend fun deleteMetadataSearchGroup(group: History.Group) { for (historyMetadata in group.items) { getMatchingHistory(historyMetadata)?.let { historyStorage.deleteVisit( diff --git a/app/src/main/java/org/mozilla/fenix/library/history/HistoryFragment.kt b/app/src/main/java/org/mozilla/fenix/library/history/HistoryFragment.kt index 26197a3eae..fa24a045be 100644 --- a/app/src/main/java/org/mozilla/fenix/library/history/HistoryFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/library/history/HistoryFragment.kt @@ -22,6 +22,7 @@ import kotlinx.coroutines.Dispatchers.IO import kotlinx.coroutines.Dispatchers.Main import kotlinx.coroutines.launch import mozilla.components.browser.state.action.EngineAction +import mozilla.components.browser.state.action.HistoryMetadataAction import mozilla.components.browser.state.action.RecentlyClosedAction import mozilla.components.browser.state.store.BrowserStore import mozilla.components.concept.engine.prompt.ShareData @@ -357,7 +358,13 @@ class HistoryFragment : LibraryPageFragment(), UserInteractionHandler { when (item) { is History.Regular -> core.historyStorage.deleteVisit(item.url, item.visitedAt) - is History.Group -> historyProvider.deleteHistoryGroup(item) + is History.Group -> { + // NB: If we have non-search groups, this logic needs to be updated. + historyProvider.deleteMetadataSearchGroup(item) + core.store.dispatch( + HistoryMetadataAction.DisbandSearchGroupAction(searchTerm = item.title) + ) + } // We won't encounter individual metadata entries outside of groups. is History.Metadata -> {} }