From c025336a7e4174ade880c06927246423c0c525e1 Mon Sep 17 00:00:00 2001 From: Youwes09 Date: Tue, 21 Apr 2026 11:41:02 -0500 Subject: [PATCH] Fix: Download Notifications + Control & ContextMenu Icons (#38) --- src/App.svelte | 16 ++--- .../downloads/components/Downloads.svelte | 20 ++++-- src/features/downloads/lib/downloadPoller.ts | 61 ------------------- .../downloads/store/downloadState.svelte.ts | 60 +++++++++++------- .../series/components/SeriesDetail.svelte | 29 ++++----- 5 files changed, 75 insertions(+), 111 deletions(-) delete mode 100644 src/features/downloads/lib/downloadPoller.ts diff --git a/src/App.svelte b/src/App.svelte index 876a2d2..41cfc7b 100644 --- a/src/App.svelte +++ b/src/App.svelte @@ -5,12 +5,12 @@ import { getCurrentWindow } from "@tauri-apps/api/window"; import { platform } from "@tauri-apps/plugin-os"; import { store, setActiveDownloads } from "@store/state.svelte"; + import { downloadStore } from "@features/downloads/store/downloadState.svelte"; import { boot, startProbe, stopProbe, retryBoot, bypassBoot } from "@store/boot.svelte"; import { initRpc, setIdle, clearReading, destroyRpc } from "@store/discord"; import { applyTheme } from "@core/theme"; import { applyZoom, mountZoomKey, mountIdleDetection } from "@core/ui"; import { checkForUpdateSilently } from "@core/updater"; - import { mountDownloadPoller } from "@features/downloads/lib/downloadPoller"; import Layout from "@shared/chrome/Layout.svelte"; import Reader from "@features/reader/components/Reader.svelte"; import Settings from "@features/settings/components/Settings.svelte"; @@ -72,6 +72,11 @@ if (!store.activeChapter && store.settings.discordRpc) setIdle(); }); + $effect(() => { + const next = downloadStore.queue.slice(); + downloadStore.detectTransitions(next); + }); + onMount(async () => { document.addEventListener("contextmenu", e => e.preventDefault()); (window as any).__mokuShowSplash = () => { devSplash = true; }; @@ -102,15 +107,12 @@ e => setActiveDownloads(e.payload), ); - let unmountPoller: (() => void) | undefined; - $effect(() => { - if (!appReady) return; - mountDownloadPoller().then(cleanup => { unmountPoller = cleanup; }); - return () => unmountPoller?.(); - }); + await downloadStore.poll(); + const dlInterval = setInterval(() => downloadStore.poll(), 2000); return () => { stopProbe(); + clearInterval(dlInterval); unlistenResize(); unlistenScale(); unlistenDownload(); diff --git a/src/features/downloads/components/Downloads.svelte b/src/features/downloads/components/Downloads.svelte index 20990f0..a0a0c0e 100644 --- a/src/features/downloads/components/Downloads.svelte +++ b/src/features/downloads/components/Downloads.svelte @@ -1,13 +1,12 @@