From 6b419c6fe0ead9c1c8854a27f4b027836655b911 Mon Sep 17 00:00:00 2001 From: marwin Date: Sun, 5 Apr 2026 13:53:38 +0200 Subject: [PATCH] Save reader settings per book in localStorage Each book gets its own key (diora_reader_settings_{bookId}). Opening a book resets to defaults then applies book-specific overrides, so zoom, spread, invert, theme etc. are remembered independently per book. Co-Authored-By: Claude Sonnet 4.6 --- static/js/app.js | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/static/js/app.js b/static/js/app.js index 1dcb443..a48d300 100644 --- a/static/js/app.js +++ b/static/js/app.js @@ -3099,7 +3099,7 @@ async function openBook(bookId) { overlay.style.display = ''; try { - loadReaderSettings(); + loadReaderSettings(bookId); const key = await getOrCreateEncKey(); let data_ct, data_iv; const cached = await _getCachedBook(bookId); @@ -3533,11 +3533,13 @@ function jumpToTocEntry(href) { // Reader Settings // --------------------------------------------------------------------------- -function loadReaderSettings() { +function loadReaderSettings(bookId) { + // Reset to defaults, then apply per-book overrides + Object.assign(readerSettings, { fontSize: 16, lineHeight: 1.8, maxWidth: 65, theme: 'dark', + pdfZoom: 100, pdfInverted: false, pdfPaginated: false, pdfSpread: false }); try { - const saved = JSON.parse(localStorage.getItem('diora_reader_settings') || '{}'); + const saved = JSON.parse(localStorage.getItem(`diora_reader_settings_${bookId}`) || '{}'); Object.assign(readerSettings, saved); - // Auto-paginate on mobile if not explicitly set if (saved.pdfPaginated === undefined) { readerSettings.pdfPaginated = window.innerWidth < 768; } @@ -3545,7 +3547,9 @@ function loadReaderSettings() { } function saveReaderSettings() { - localStorage.setItem('diora_reader_settings', JSON.stringify(readerSettings)); + if (currentBookId) { + localStorage.setItem(`diora_reader_settings_${currentBookId}`, JSON.stringify(readerSettings)); + } } function applyReaderSettings(isPdf) {