From 1615cf3acf810ac1440c13d4c3396c257a7566d5 Mon Sep 17 00:00:00 2001 From: not-nullptr <62841684+not-nullptr@users.noreply.github.com> Date: Sun, 9 Feb 2025 02:56:29 +0000 Subject: [PATCH] feat: abort controller on vertd --- src/lib/sections/settings/Vertd.svelte | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/src/lib/sections/settings/Vertd.svelte b/src/lib/sections/settings/Vertd.svelte index 185269e..9e2f054 100644 --- a/src/lib/sections/settings/Vertd.svelte +++ b/src/lib/sections/settings/Vertd.svelte @@ -8,25 +8,30 @@ import clsx from "clsx"; let vertdCommit = $state(null); + let abortController: AbortController | null = null; + const { settings }: { settings: Settings } = $props(); $effect(() => { if (settings.settings.vertdURL) { + if (abortController) abortController.abort(); + abortController = new AbortController(); + const { signal } = abortController; + vertdCommit = "loading"; - fetch(`${settings.settings.vertdURL}/api/version`) + fetch(`${settings.settings.vertdURL}/api/version`, { signal }) .then((res) => { - if (res.ok) { - res.json().then((data) => { - vertdCommit = data.data; - }); - } else { - vertdCommit = null; - } + if (!res.ok) throw new Error("bad response"); + return res.json(); }) - .catch(() => { - vertdCommit = null; + .then((data) => { + vertdCommit = data.data; + }) + .catch((err) => { + if (err.name !== "AbortError") vertdCommit = null; }); } else { + if (abortController) abortController.abort(); vertdCommit = null; } });