diff --git a/.github/workflows/build-linux.yml b/.github/workflows/build-linux.yml index fad0b95..06b9c7f 100644 --- a/.github/workflows/build-linux.yml +++ b/.github/workflows/build-linux.yml @@ -88,10 +88,10 @@ jobs: - name: Download Suwayomi (Linux x64) run: | curl -fsSL \ - "https://github.com/Suwayomi/Suwayomi-Server-preview/releases/download/v2.1.2087/Suwayomi-Server-v2.1.2087-linux-x64.tar.gz" \ + "https://github.com/Suwayomi/Suwayomi-Server-preview/releases/download/v2.2.2196/Suwayomi-Server-v2.2.2196-linux-x64.tar.gz" \ -o suwayomi-linux.tar.gz - echo "888bee202649ce7e3e3468a729c4084fb465f024b4033cab3f8ab98b0c66fe76 suwayomi-linux.tar.gz" | sha256sum -c - + echo "e13d63ceb7e2b15e83d0a78281e8c1c04ac4a833caa73e5a2b68fbaf0cb20c1f suwayomi-linux.tar.gz" | sha256sum -c - mkdir -p suwayomi-extracted tar -xzf suwayomi-linux.tar.gz -C suwayomi-extracted --strip-components=1 diff --git a/.github/workflows/build-macos.yml b/.github/workflows/build-macos.yml index f9db446..2e0d621 100644 --- a/.github/workflows/build-macos.yml +++ b/.github/workflows/build-macos.yml @@ -79,7 +79,7 @@ jobs: download_suwayomi() { local asset="$1" sha="$2" outdir="$3" curl -fsSL \ - "https://github.com/Suwayomi/Suwayomi-Server-preview/releases/download/v2.1.2087/${asset}" \ + "https://github.com/Suwayomi/Suwayomi-Server-preview/releases/download/v2.2.2196/${asset}" \ -o "${outdir}.tar.gz" echo "${sha} ${outdir}.tar.gz" | shasum -a 256 -c - mkdir -p "${outdir}" @@ -87,13 +87,13 @@ jobs: } download_suwayomi \ - "Suwayomi-Server-v2.1.2087-macOS-arm64.tar.gz" \ - "59f73a53a139d5d843e16cab4f3ac425a410add6bee0a60920fa26eb0a4b8a5c" \ + "Suwayomi-Server-v2.2.2196-macOS-arm64.tar.gz" \ + "9e3dbebc7475707e8d11c56a473385c00b09bde0103d013bc1cb3d06c89e5c43" \ "suwayomi-arm64" download_suwayomi \ - "Suwayomi-Server-v2.1.2087-macOS-x64.tar.gz" \ - "da7e664e4c2615a0b9eac09ee38fe979feee1d6c0b266e19dba1ceea8ae3795c" \ + "Suwayomi-Server-v2.2.2196-macOS-x64.tar.gz" \ + "eadee02060b780a5febfb8dada2f89c7bd7db5905cfd20d47eaca02fcde8c9c5" \ "suwayomi-x64" - name: Stage Suwayomi sidecars diff --git a/.github/workflows/build-windows.yml b/.github/workflows/build-windows.yml index c592761..fd40f80 100644 --- a/.github/workflows/build-windows.yml +++ b/.github/workflows/build-windows.yml @@ -79,9 +79,9 @@ jobs: shell: bash run: | curl -fsSL \ - "https://github.com/Suwayomi/Suwayomi-Server-preview/releases/download/v2.1.2087/Suwayomi-Server-v2.1.2087-windows-x64.zip" \ + "https://github.com/Suwayomi/Suwayomi-Server-preview/releases/download/v2.2.2196/Suwayomi-Server-v2.2.2196-windows-x64.zip" \ -o suwayomi-windows.zip - echo "65c3ec544190bc4e52f8ba05b49c87448421d9825aaaeb902cb4e34e69ff7207 suwayomi-windows.zip" | sha256sum -c - + echo "457ca4a64a57e0d274a87203d25e962103bcb456ee30ada3ea47328a3093329d suwayomi-windows.zip" | sha256sum -c - unzip -q suwayomi-windows.zip -d suwayomi-raw - name: Extract Suwayomi bundle diff --git a/io.github.moku_project.Moku.yml b/io.github.moku_project.Moku.yml index 9a3e20e..7ef3068 100644 --- a/io.github.moku_project.Moku.yml +++ b/io.github.moku_project.Moku.yml @@ -220,8 +220,8 @@ modules: sources: - type: file - url: https://github.com/Suwayomi/Suwayomi-Server-preview/releases/download/v2.1.2087/Suwayomi-Server-v2.1.2087.jar - sha256: f589a422674252394c13b289a9c8be691905bf583efb7f4d5f1501ae5e91e6b3 + url: https://github.com/Suwayomi/Suwayomi-Server-preview/releases/download/v2.2.2196/Suwayomi-Server-v2.2.2196.jar + sha256: 8e7244c269456661a87705f746f0d87275770aa976bab7c6920e4d513e97c3f6 dest-filename: Suwayomi-Server.jar - name: moku diff --git a/nix/versions.nix b/nix/versions.nix index 29d895e..c84a271 100644 --- a/nix/versions.nix +++ b/nix/versions.nix @@ -2,8 +2,8 @@ moku = "0.9.4"; suwayomi = { - version = "2.1.2087"; - hash = "sha256-9YmkImdCUjlME7KJqci+aRkFv1g++39NXxUBrl6R5rM="; + version = "2.2.2196"; + hash = "sha256-jnJEwmlFZmGodwX3RvDYcnV3Cql2urfGkg5NUT6Xw/Y="; }; frontend = { diff --git a/src/lib/components/reader/Reader.svelte b/src/lib/components/reader/Reader.svelte index c82e1b5..326654f 100644 --- a/src/lib/components/reader/Reader.svelte +++ b/src/lib/components/reader/Reader.svelte @@ -144,7 +144,8 @@ let startAtLastPageRef = { current: false }; let cleanupScroll: () => void = () => {}; let stripChaptersRef = readerState.stripChapters; - let tickTimer: ReturnType | null = null; + let tickTimer: ReturnType | null = null; + let progressTimer: ReturnType | null = null; $effect(() => { stripChaptersRef = readerState.stripChapters; }); @@ -514,6 +515,14 @@ readerState.addBookmark({ mangaId, mangaTitle, thumbnailUrl: thumb, chapterId, chapterName, pageNumber: pageNum }); } if (style !== "longstrip" && (settingsState.settings.autoMarkRead ?? true) && atLast) markChapterRead(chapterId, markedRead); + + if (pageNum > 1 && !markedRead.has(chapterId)) { + if (progressTimer) clearTimeout(progressTimer); + progressTimer = setTimeout(() => { + getAdapter().updateChaptersProgress([String(chapterId)], { lastPageRead: pageNum }).catch(console.error); + progressTimer = null; + }, 2_000); + } }); } }); @@ -547,6 +556,7 @@ abortCtrl.current?.abort(); if (hideTimer) clearTimeout(hideTimer); if (roTimer) clearTimeout(roTimer); + if (progressTimer) clearTimeout(progressTimer); window.removeEventListener("keydown", onKey); window.removeEventListener("mousemove", pageViewRef.onInspectMouseMove); window.removeEventListener("mouseup", pageViewRef.onInspectMouseUp); diff --git a/src/lib/state/reader.svelte.ts b/src/lib/state/reader.svelte.ts index 090a5b1..a979389 100644 --- a/src/lib/state/reader.svelte.ts +++ b/src/lib/state/reader.svelte.ts @@ -145,7 +145,7 @@ class ReaderState { addBookmark(entry: Omit) { this.bookmarks = [ { ...entry, savedAt: Date.now() }, - ...this.bookmarks.filter(b => b.chapterId !== entry.chapterId), + ...this.bookmarks.filter(b => b.mangaId !== entry.mangaId), ].slice(0, 200); }