Refactor alias filter handling in Svelte components for improved clarity and performance
Publish telemt-api gateway Docker image / test (push) Successful in 26s
Publish telemt-api gateway Docker image / build-and-push (push) Successful in 2m20s

- Consolidated alias filter change logic into a single function to streamline updates and reduce redundancy.
- Removed the previous `applyAliasIfChanged` function, simplifying the alias filter handling process.
- Ensured immediate data reload upon alias filter change to maintain up-to-date information display.
This commit is contained in:
Denozordec
2026-04-10 16:35:15 +07:00
parent b68ca985d3
commit 4ee9c6805c
2 changed files with 12 additions and 41 deletions
+10 -24
View File
@@ -219,26 +219,18 @@
});
}
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
});
// Для стабильности сразу перезагружаем данные по новому фильтру.
await load();
}
async function handleAliasFilterChange(nextAlias: string) {
if (nextAlias === aliasFilter) return;
aliasFilter = nextAlias;
await applyAliasIfChanged(nextAlias);
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
});
await load();
}
let queryKey = $derived(page.url.searchParams.toString());
@@ -252,12 +244,6 @@ async function handleAliasFilterChange(nextAlias: string) {
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))
);
+2 -17
View File
@@ -117,9 +117,8 @@
});
}
async function applyAliasIfChanged(nextAlias: string) {
const currentAlias = parseAliasFilter(page.url.searchParams.get('aliases'));
if (nextAlias === currentAlias) return;
async function handleAliasFilterChange(nextAlias: string) {
aliasFilter = nextAlias;
const q = new URLSearchParams(page.url.searchParams);
if (nextAlias === 'all') q.delete('aliases');
else q.set('aliases', nextAlias);
@@ -129,17 +128,9 @@
noScroll: true,
keepFocus: true
});
// В некоторых сценариях shallow-навигации page.url обновляется не сразу,
// поэтому дополнительно перезапрашиваем данные по текущему фильтру.
await load();
}
async function handleAliasFilterChange(nextAlias: string) {
if (nextAlias === aliasFilter) return;
aliasFilter = nextAlias;
await applyAliasIfChanged(nextAlias);
}
let queryKey = $derived(page.url.searchParams.toString());
$effect(() => {
queryKey;
@@ -152,12 +143,6 @@
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))
);