From fc9c2ea1915accd1f6edca467e965283dff71cd7 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Wed, 17 Jun 2026 00:17:14 +0200 Subject: [PATCH] refac --- src/lib/components/admin/Functions.svelte | 6 ++++-- .../admin/Users/Groups/Users.svelte | 12 +++++++---- .../components/admin/Users/UserList.svelte | 12 +++++++---- .../channel/ChannelInfoModal/UserList.svelte | 8 ++++--- src/lib/components/notes/Notes.svelte | 6 ++++-- src/lib/components/workspace/Knowledge.svelte | 6 ++++-- .../workspace/Knowledge/KnowledgeBase.svelte | 21 +++++++------------ .../Models/Knowledge/KnowledgeSelector.svelte | 6 ++++-- src/lib/components/workspace/Prompts.svelte | 14 ++++++++----- src/lib/components/workspace/Skills.svelte | 14 ++++++++----- src/lib/components/workspace/Tools.svelte | 6 ++++-- .../workspace/common/MemberSelector.svelte | 5 +++-- src/routes/(app)/automations/+page.svelte | 16 +++++++++----- 13 files changed, 81 insertions(+), 51 deletions(-) diff --git a/src/lib/components/admin/Functions.svelte b/src/lib/components/admin/Functions.svelte index 37922ad640..3e3e69f537 100644 --- a/src/lib/components/admin/Functions.svelte +++ b/src/lib/components/admin/Functions.svelte @@ -71,12 +71,12 @@ let functions = null; let filteredItems = []; - $: if (query !== undefined) { + const handleSearchInput = () => { clearTimeout(searchDebounceTimer); searchDebounceTimer = setTimeout(() => { setFilteredItems(); }, 300); - } + }; $: if (functions && selectedType !== undefined && viewOption !== undefined) { setFilteredItems(); @@ -363,6 +363,7 @@ @@ -372,6 +373,7 @@ class="p-0.5 rounded-full hover:bg-gray-100 dark:hover:bg-gray-900 transition" on:click={() => { query = ''; + handleSearchInput(); }} > diff --git a/src/lib/components/admin/Users/Groups/Users.svelte b/src/lib/components/admin/Users/Groups/Users.svelte index ace5141a7f..b4e3c7d727 100644 --- a/src/lib/components/admin/Users/Groups/Users.svelte +++ b/src/lib/components/admin/Users/Groups/Users.svelte @@ -84,13 +84,16 @@ getUserList(); } - $: if (query !== undefined) { + const handleSearchInput = () => { clearTimeout(searchDebounceTimer); searchDebounceTimer = setTimeout(() => { - page = 1; - getUserList(); + if (page !== 1) { + page = 1; + } else { + getUserList(); + } }, 300); - } + }; onDestroy(() => { clearTimeout(searchDebounceTimer); @@ -106,6 +109,7 @@ diff --git a/src/lib/components/admin/Users/UserList.svelte b/src/lib/components/admin/Users/UserList.svelte index 40c7cffb07..2a536d56a5 100644 --- a/src/lib/components/admin/Users/UserList.svelte +++ b/src/lib/components/admin/Users/UserList.svelte @@ -100,13 +100,16 @@ } }; - $: if (query !== undefined) { + const handleSearchInput = () => { clearTimeout(searchDebounceTimer); searchDebounceTimer = setTimeout(() => { - page = 1; - getUserList(); + if (page !== 1) { + page = 1; + } else { + getUserList(); + } }, 300); - } + }; $: if (page !== null && orderBy !== null && direction !== null) { getUserList(); @@ -210,6 +213,7 @@ diff --git a/src/lib/components/channel/ChannelInfoModal/UserList.svelte b/src/lib/components/channel/ChannelInfoModal/UserList.svelte index 80fc7cf45f..a72473ee82 100644 --- a/src/lib/components/channel/ChannelInfoModal/UserList.svelte +++ b/src/lib/components/channel/ChannelInfoModal/UserList.svelte @@ -78,13 +78,14 @@ } }; - // Debounce only query changes - $: if (query !== undefined && channel !== null) { + const handleSearchInput = () => { + if (channel === null) return; + clearTimeout(debounceTimer); debounceTimer = setTimeout(() => { getUserList(); }, 300); - } + }; // Immediate response to page/sort changes $: if (channel !== null && page && orderBy && direction) { @@ -142,6 +143,7 @@ diff --git a/src/lib/components/notes/Notes.svelte b/src/lib/components/notes/Notes.svelte index e7762cf258..64ffaee183 100644 --- a/src/lib/components/notes/Notes.svelte +++ b/src/lib/components/notes/Notes.svelte @@ -180,14 +180,14 @@ await getItemsPage(); }; - $: if (query !== undefined) { + const handleSearchInput = () => { clearTimeout(searchDebounceTimer); searchDebounceTimer = setTimeout(() => { if (loaded) { init(); } }, 300); - } + }; $: if (loaded && sortKey !== undefined && permission !== undefined && viewOption !== undefined) { init(); @@ -380,6 +380,7 @@ @@ -389,6 +390,7 @@ class="p-0.5 rounded-full hover:bg-gray-100 dark:hover:bg-gray-900 transition" on:click={() => { query = ''; + handleSearchInput(); }} > diff --git a/src/lib/components/workspace/Knowledge.svelte b/src/lib/components/workspace/Knowledge.svelte index b2e1179124..b4c3488977 100644 --- a/src/lib/components/workspace/Knowledge.svelte +++ b/src/lib/components/workspace/Knowledge.svelte @@ -45,12 +45,12 @@ let allItemsLoaded = false; let itemsLoading = false; - $: if (query !== undefined) { + const handleSearchInput = () => { clearTimeout(searchDebounceTimer); searchDebounceTimer = setTimeout(() => { init(); }, 300); - } + }; onDestroy(() => { clearTimeout(searchDebounceTimer); @@ -199,6 +199,7 @@ @@ -209,6 +210,7 @@ aria-label={$i18n.t('Clear search')} on:click={() => { query = ''; + handleSearchInput(); }} > diff --git a/src/lib/components/workspace/Knowledge/KnowledgeBase.svelte b/src/lib/components/workspace/Knowledge/KnowledgeBase.svelte index 1cdadd05ce..82935f2080 100644 --- a/src/lib/components/workspace/Knowledge/KnowledgeBase.svelte +++ b/src/lib/components/workspace/Knowledge/KnowledgeBase.svelte @@ -142,14 +142,17 @@ await getItemsPage(); }; - // Debounce only query changes - $: if (query !== undefined) { + const handleSearchInput = () => { clearTimeout(searchDebounceTimer); searchDebounceTimer = setTimeout(() => { - getItemsPage(); + if (currentPage !== 1) { + currentPage = 1; + } else { + getItemsPage(); + } }, 300); - } + }; // Immediate response to filter/pagination changes $: if ( @@ -163,15 +166,6 @@ getItemsPage(); } - $: if ( - query !== undefined && - viewOption !== undefined && - sortKey !== undefined && - direction !== undefined - ) { - reset(); - } - const getItemsPage = async () => { if (knowledgeId === null) return; @@ -1313,6 +1307,7 @@ { diff --git a/src/lib/components/workspace/Models/Knowledge/KnowledgeSelector.svelte b/src/lib/components/workspace/Models/Knowledge/KnowledgeSelector.svelte index 5677eae8c4..9e8d7d3d1e 100644 --- a/src/lib/components/workspace/Models/Knowledge/KnowledgeSelector.svelte +++ b/src/lib/components/workspace/Models/Knowledge/KnowledgeSelector.svelte @@ -34,12 +34,12 @@ $: items = [...noteItems, ...knowledgeItems, ...fileItems]; - $: if (query !== undefined) { + const handleSearchInput = () => { clearTimeout(searchDebounceTimer); searchDebounceTimer = setTimeout(() => { getItems(); }, 300); - } + }; onDestroy(() => { clearTimeout(searchDebounceTimer); @@ -111,6 +111,7 @@ if (e.detail === false) { onClose(); query = ''; + handleSearchInput(); } }} > @@ -128,6 +129,7 @@ diff --git a/src/lib/components/workspace/Prompts.svelte b/src/lib/components/workspace/Prompts.svelte index 7974ee8ed3..f9deed219c 100644 --- a/src/lib/components/workspace/Prompts.svelte +++ b/src/lib/components/workspace/Prompts.svelte @@ -59,15 +59,17 @@ let page = 1; - // Debounce only query changes - $: if (query !== undefined) { + const handleSearchInput = () => { loading = true; clearTimeout(searchDebounceTimer); searchDebounceTimer = setTimeout(() => { - page = 1; - getPromptList(); + if (page !== 1) { + page = 1; + } else { + getPromptList(); + } }, 300); - } + }; // Immediate response to page/filter changes $: if (page && selectedTag !== undefined && viewOption !== undefined) { @@ -332,6 +334,7 @@ @@ -343,6 +346,7 @@ aria-label={$i18n.t('Clear search')} on:click={() => { query = ''; + handleSearchInput(); }} > diff --git a/src/lib/components/workspace/Skills.svelte b/src/lib/components/workspace/Skills.svelte index 96ab15a49b..ffb9b534af 100644 --- a/src/lib/components/workspace/Skills.svelte +++ b/src/lib/components/workspace/Skills.svelte @@ -78,15 +78,17 @@ } }; - // Debounce only query changes - $: if (query !== undefined) { + const handleSearchInput = () => { loading = true; clearTimeout(searchDebounceTimer); searchDebounceTimer = setTimeout(() => { - page = 1; - loadSkillItems(); + if (page !== 1) { + page = 1; + } else { + loadSkillItems(); + } }, 300); - } + }; // Immediate response to page/filter changes $: if (page && viewOption !== undefined) { @@ -321,6 +323,7 @@ @@ -331,6 +334,7 @@ aria-label={$i18n.t('Clear search')} on:click={() => { query = ''; + handleSearchInput(); }} > diff --git a/src/lib/components/workspace/Tools.svelte b/src/lib/components/workspace/Tools.svelte index 50462c1cb4..d68a32211d 100644 --- a/src/lib/components/workspace/Tools.svelte +++ b/src/lib/components/workspace/Tools.svelte @@ -63,12 +63,12 @@ let showImportModal = false; - $: if (query !== undefined) { + const handleSearchInput = () => { clearTimeout(searchDebounceTimer); searchDebounceTimer = setTimeout(() => { setFilteredItems(); }, 300); - } + }; $: if (tools && viewOption !== undefined) { setFilteredItems(); @@ -325,6 +325,7 @@ @@ -335,6 +336,7 @@ aria-label={$i18n.t('Clear search')} on:click={() => { query = ''; + handleSearchInput(); }} > diff --git a/src/lib/components/workspace/common/MemberSelector.svelte b/src/lib/components/workspace/common/MemberSelector.svelte index f4acad13f7..26ed4c4b9a 100644 --- a/src/lib/components/workspace/common/MemberSelector.svelte +++ b/src/lib/components/workspace/common/MemberSelector.svelte @@ -63,12 +63,12 @@ } }; - $: if (query !== undefined) { + const handleSearchInput = () => { clearTimeout(searchDebounceTimer); searchDebounceTimer = setTimeout(() => { getUserList(); }, 300); - } + }; onDestroy(() => { clearTimeout(searchDebounceTimer); @@ -187,6 +187,7 @@ diff --git a/src/routes/(app)/automations/+page.svelte b/src/routes/(app)/automations/+page.svelte index 0fef27bd3e..7ef8246eb4 100644 --- a/src/routes/(app)/automations/+page.svelte +++ b/src/routes/(app)/automations/+page.svelte @@ -50,15 +50,19 @@ let page = 1; - // Debounce only query changes (gate behind loaded to prevent double-fetch on mount) - $: if (loaded && query !== undefined) { + const handleSearchInput = () => { + if (!loaded) return; + loading = true; clearTimeout(searchDebounceTimer); searchDebounceTimer = setTimeout(() => { - page = 1; - getAutomationList(); + if (page !== 1) { + page = 1; + } else { + getAutomationList(); + } }, 300); - } + }; // Immediate response to page/filter changes (gate behind loaded) $: if (loaded && page && statusFilter !== undefined) { @@ -296,6 +300,7 @@ { query = ''; + handleSearchInput(); }} >