diff --git a/web/src/lib/components/alias-filter-select.svelte b/web/src/lib/components/alias-filter-select.svelte index ce2c4aa..a9f0567 100644 --- a/web/src/lib/components/alias-filter-select.svelte +++ b/web/src/lib/components/alias-filter-select.svelte @@ -36,7 +36,7 @@ {selectedLabel} - + {allLabel} {#each availableAliases as alias (alias)} {alias} diff --git a/web/src/routes/ips/+page.svelte b/web/src/routes/ips/+page.svelte index c589a33..341744f 100644 --- a/web/src/routes/ips/+page.svelte +++ b/web/src/routes/ips/+page.svelte @@ -349,6 +349,20 @@ }); } + async function applyAliasIfChanged(nextAlias: string) { + const currentAlias = parseAliasFilter(page.url.searchParams.get('aliases')); + if (nextAlias === currentAlias) return; + const q = new URLSearchParams(page.url.searchParams); + if (nextAlias === 'all') q.delete('aliases'); + else q.set('aliases', nextAlias); + const qs = q.toString(); + await goto(`${page.url.pathname}${qs ? `?${qs}` : ''}`, { + replaceState: true, + noScroll: true, + keepFocus: true + }); + } + let queryKey = $derived(page.url.searchParams.toString()); $effect(() => { queryKey; @@ -361,6 +375,12 @@ void load(); }); + $effect(() => { + if (typeof window === 'undefined') return; + const nextAlias = aliasFilter; + void applyAliasIfChanged(nextAlias); + }); + let staleSeconds = $derived.by(() => lastSuccessAtMs == null ? null : Math.max(0, Math.floor((nowMs - lastSuccessAtMs) / 1000)) ); @@ -427,11 +447,9 @@ max="300" class="mt-1 h-9 w-28 rounded-md border bg-background px-2 text-sm" bind:value={refreshInput} + onchange={() => void applyControls()} /> - {#if partial}