From 32bdeb92ff9356660b2df4435e78c31f4dfef476 Mon Sep 17 00:00:00 2001 From: frozenKelp Date: Tue, 9 Jun 2026 20:13:41 +0530 Subject: [PATCH] fix: set rpc to idle when idle --- src/lib/components/reader/Reader.svelte | 13 +++++++++++-- src/routes/+layout.svelte | 4 ++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/lib/components/reader/Reader.svelte b/src/lib/components/reader/Reader.svelte index ea7126a..c697ea8 100644 --- a/src/lib/components/reader/Reader.svelte +++ b/src/lib/components/reader/Reader.svelte @@ -2,7 +2,7 @@ import { onMount, untrack, tick } from "svelte"; import { readerState, PAGE_STYLES } from "$lib/state/reader.svelte"; import { settingsState, updateSettings } from "$lib/state/settings.svelte"; - import { app } from "$lib/state/app.svelte"; + import { app, appState } from "$lib/state/app.svelte"; import { DEFAULT_KEYBINDS } from "$lib/core/keybinds/defaultBinds"; import { fetchPages, resolveUrl, preloadImage, measureAspect, buildPageGroups } from "$lib/components/reader/lib/pageLoader"; import { setupScrollTracking, appendNextChapter } from "$lib/components/reader/lib/scrollHandler"; @@ -321,11 +321,20 @@ ch.id, ch.name, readerState.pageNumber, ); loadChapter(ch.id, useBlob, abortCtrl, startAtLastPageRef, markedRead, adjacent); - setReading(manga, ch).catch(() => {}); // update Discord presence to show current chapter }); } }); + // Separate from chapter load: also re-fires when idle splash dismisses so presence is restored. + $effect(() => { + const ch = readerState.activeChapter; + const manga = readerState.activeManga; + const idle = appState.idleSplash; + if (ch && manga && !idle) { + untrack(() => setReading(manga, ch).catch(() => {})); + } + }); + $effect(() => { const page = readerState.pageNumber; const chId = style === "longstrip" diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index dd4cf07..6163767 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -154,6 +154,10 @@ if (appState.status === 'ready') resetIdleTimer() }) + $effect(() => { + if (appState.idleSplash && settingsState.settings.discordRpc) setIdle().catch(() => {}) + }) + $effect(() => { if (appState.status !== 'ready') return // capture phase so events from any component — including modals — reset the timer