From 956eee67d7df6c0e400c24044f5c732afd3de8f0 Mon Sep 17 00:00:00 2001 From: nrobi144 Date: Thu, 28 May 2026 13:01:26 +0300 Subject: [PATCH] feat(desktop): 1s debounce + auto-save search history on collapse - Increase relay query debounce from 300ms to 1000ms for inline search (reduces unnecessary relay load while typing) - Save query to SearchHistoryStore when search collapses (if non-empty) - SearchHistoryStore.addToHistory() already deduplicates by serialized query Co-Authored-By: Claude Opus 4.6 (1M context) --- .../com/vitorpamplona/amethyst/desktop/ui/FeedScreen.kt | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/FeedScreen.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/FeedScreen.kt index 033f38bf93..b730b2a08b 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/FeedScreen.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/FeedScreen.kt @@ -828,7 +828,7 @@ private fun FeedTabsHeader( val pinnedFeeds by feedRepo.pinnedFeeds.collectAsState() val sidePadding = LocalReadingSidePadding.current val scope = rememberCoroutineScope() - val searchState = remember { AdvancedSearchBarState(scope) } + val searchState = remember { AdvancedSearchBarState(scope, debounceMs = 1000L) } var searchText by remember { mutableStateOf(TextFieldValue("")) } val focusRequester = remember { FocusRequester() } val focusManager = LocalFocusManager.current @@ -841,9 +841,13 @@ private fun FeedTabsHeader( searchState.updateFromText(searchText.text) } - // Clear on collapse + // Save to history + clear on collapse LaunchedEffect(searchExpanded) { if (!searchExpanded) { + val query = searchState.query.value + if (!query.isEmpty) { + SearchHistoryStore.addToHistory(query) + } searchText = TextFieldValue("") searchState.clearSearch() }