web/DownloadButton: refactor & add haptic feedback

This commit is contained in:
wukko 2025-03-05 22:05:11 +06:00
parent bf0b9f55e5
commit a2e08b9ccb
No known key found for this signature in database
GPG Key ID: 3E30B3F26C7B4AA2

View File

@ -3,6 +3,7 @@
import { onDestroy } from "svelte";
import { t } from "$lib/i18n/translations";
import { hapticSwitch } from "$lib/haptics";
import { savingHandler } from "$lib/api/saving-handler";
import { downloadButtonState } from "$lib/state/omnibox";
@ -17,7 +18,8 @@
type DownloadButtonState = "idle" | "think" | "check" | "done" | "error";
const unsubscribe = downloadButtonState.subscribe((state: CobaltDownloadButtonState) => {
const unsubscribe = downloadButtonState.subscribe(
(state: CobaltDownloadButtonState) => {
disabled = state !== "idle";
loading = state === "think" || state === "check";
@ -45,7 +47,8 @@
if (final.includes(state)) {
setTimeout(() => downloadButtonState.set("idle"), 1500);
}
});
}
);
onDestroy(() => unsubscribe());
</script>
@ -53,7 +56,10 @@
<button
id="download-button"
{disabled}
on:click={() => savingHandler(url)}
on:click={() => {
hapticSwitch();
savingHandler(url);
}}
aria-label={buttonAltText}
>
<span id="download-state">{buttonText}</span>