From cb63254b2fbc983e8b09e179f425e6358a62b132 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BD=D1=82=D0=BE=D0=BD=20=D0=A2=D1=80=D0=BE=D1=88?= =?UTF-8?q?=D0=B8=D0=BD?= Date: Tue, 4 Aug 2026 04:23:10 +0300 Subject: [PATCH] fix: save and restore last used Bible version across sessions --- src/ui/app.ts | 3 ++- src/ui/bible-view.ts | 1 + src/ui/settings-view.ts | 23 +++-------------------- 3 files changed, 6 insertions(+), 21 deletions(-) diff --git a/src/ui/app.ts b/src/ui/app.ts index 0f61a7f..e01f6f6 100644 --- a/src/ui/app.ts +++ b/src/ui/app.ts @@ -248,7 +248,8 @@ export class App { const biblePassage = bp[3] || ''; let bibleVersion: string; if (!versionSpec) { - bibleVersion = this.resolveBibleVersion(this.settings.defaultBibleVersion, lang); + const lastVersion = localStorage.getItem('ponomar-last-bible-version'); + bibleVersion = lastVersion || this.resolveBibleVersion(this.settings.defaultBibleVersion, lang); } else if (versionSpec.includes('~')) { // Format: lang~short e.g. "en~kjv" → "en/bible/kjv" const [vl, vs] = versionSpec.split('~'); diff --git a/src/ui/bible-view.ts b/src/ui/bible-view.ts index 73d58ca..e156f0b 100644 --- a/src/ui/bible-view.ts +++ b/src/ui/bible-view.ts @@ -298,5 +298,6 @@ export class BibleView { } saveBibleState(this.currentVersion, this.currentBook, this.currentPassage); + localStorage.setItem('ponomar-last-bible-version', this.currentVersion); } } \ No newline at end of file diff --git a/src/ui/settings-view.ts b/src/ui/settings-view.ts index 4c13a5f..ae15fad 100644 --- a/src/ui/settings-view.ts +++ b/src/ui/settings-view.ts @@ -58,12 +58,6 @@ function defaultBibleForLanguage(lang: string): string { return map[lang] || 'kjv'; } -const LANG_LABELS: Record = { - en: 'English', ru: 'Русский', cu: 'Церковнославянский', - el: 'Ἑλληνικά', fr: 'Français', la: 'Latina', - zh: '中文', ar: 'العربية', -}; - function versionPriority(lang: string, userLang: string): number { if (lang === userLang) return 0; if ((userLang === 'ru' || userLang === 'cu') && (lang === 'ru' || lang === 'cu')) return 1; @@ -339,26 +333,15 @@ export class SettingsView { return pa - pb || a.name.localeCompare(b.name); }); - // Group by language - const groups: Record = {}; - for (const v of versions) { - if (!groups[v.language]) groups[v.language] = []; - groups[v.language].push(v); - } - - // Build optgroups in priority order - const orderedLangs = [...new Set(versions.map((v: any) => v.language))] as string[]; + // Build options in priority order const select = document.getElementById('default-bible') as HTMLSelectElement; if (select) { - select.innerHTML = orderedLangs.map((lang: string) => { - const items = groups[lang]; - return `${items.map((v: any) => { + select.innerHTML = versions.map((v: any) => { const shortId = v.id.split('/').pop(); const size = OfflineManager.getBibleSize(v.id); const comment = size ? ` (${size})` : ''; return ``; - }).join('')}`; - }).join(''); + }).join(''); } } catch {} })();