Save reader settings per book in localStorage
All checks were successful
Build and push Docker image / build (push) Successful in 14s
Test / test (push) Successful in 17s

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 <noreply@anthropic.com>
This commit is contained in:
marwin 2026-04-05 13:53:38 +02:00
parent 916e8a568b
commit 6b419c6fe0

View file

@ -3099,7 +3099,7 @@ async function openBook(bookId) {
overlay.style.display = ''; overlay.style.display = '';
try { try {
loadReaderSettings(); loadReaderSettings(bookId);
const key = await getOrCreateEncKey(); const key = await getOrCreateEncKey();
let data_ct, data_iv; let data_ct, data_iv;
const cached = await _getCachedBook(bookId); const cached = await _getCachedBook(bookId);
@ -3533,11 +3533,13 @@ function jumpToTocEntry(href) {
// Reader Settings // 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 { try {
const saved = JSON.parse(localStorage.getItem('diora_reader_settings') || '{}'); const saved = JSON.parse(localStorage.getItem(`diora_reader_settings_${bookId}`) || '{}');
Object.assign(readerSettings, saved); Object.assign(readerSettings, saved);
// Auto-paginate on mobile if not explicitly set
if (saved.pdfPaginated === undefined) { if (saved.pdfPaginated === undefined) {
readerSettings.pdfPaginated = window.innerWidth < 768; readerSettings.pdfPaginated = window.innerWidth < 768;
} }
@ -3545,7 +3547,9 @@ function loadReaderSettings() {
} }
function saveReaderSettings() { function saveReaderSettings() {
localStorage.setItem('diora_reader_settings', JSON.stringify(readerSettings)); if (currentBookId) {
localStorage.setItem(`diora_reader_settings_${currentBookId}`, JSON.stringify(readerSettings));
}
} }
function applyReaderSettings(isPdf) { function applyReaderSettings(isPdf) {