From 610cdca3add950dedceeff73898ee72f505eff77 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: Sat, 22 Aug 2026 00:18:15 +0300 Subject: [PATCH] fix: eliminate guaranteed 404s (ru menaion-bundle, unmapped commemorations) - loadMenaionBundle: ru resolves to cu bundle (no RU liturgical texts by design) - autoPreload: fetch cu bundle once; keep ru+cu lives for current month - calendar view: fetch shared commemorations only for mapped feast CIds --- src/ui/app.ts | 7 +++++-- src/ui/calendar-view.ts | 5 +++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/ui/app.ts b/src/ui/app.ts index bc4a432..130f622 100644 --- a/src/ui/app.ts +++ b/src/ui/app.ts @@ -109,9 +109,12 @@ export class App { const key = 'ponomar-preloaded'; if (localStorage.getItem(key)) return; const lang = this.settings.language as LanguageCode; - const languages = lang === 'ru' ? ['ru', 'cu'] : [lang]; - for (const l of languages) { + const liturgicalLangs = lang === 'ru' || lang === 'cu' ? ['cu'] : [lang]; + for (const l of liturgicalLangs) { await DataCache.fetch(`/data/${l}/menaion-bundle.json`).catch(() => {}); + } + const livesLangs = lang === 'ru' ? ['ru', 'cu'] : [lang]; + for (const l of livesLangs) { const mm = String(JDate.today().getMonth()).padStart(2, '0'); await DataCache.fetch(`/data/${l}/lives/${mm}.json`).catch(() => {}); } diff --git a/src/ui/calendar-view.ts b/src/ui/calendar-view.ts index 25d693a..c443f10 100644 --- a/src/ui/calendar-view.ts +++ b/src/ui/calendar-view.ts @@ -108,7 +108,7 @@ async function loadSharedScriptureIndex(): Promise | n } async function loadMenaionBundle(lang: string): Promise | null> { - const key = lang === 'cu' ? 'cu' : lang; + const key = lang === 'ru' || lang === 'cu' ? 'cu' : lang; if (menaionBundles.has(key)) return menaionBundles.get(key)!; try { const bundle = await DataCache.fetch>(`/data/${key}/menaion-bundle.json`); @@ -698,9 +698,10 @@ export class CalendarView { const sharedComms: Map = new Map(); for (const cid of cids.slice(0, 30)) { + const sharedId = CID_TO_SHARED_COMM[cid]; const [life, shared] = await Promise.all([ loadLife(this.language, cid), - loadCommemoration(CID_TO_SHARED_COMM[cid] || cid), + sharedId ? loadCommemoration(sharedId) : Promise.resolve(null), ]); if (life) livesData.set(cid, life); if (shared) sharedComms.set(cid, shared);