From 0f549a56e43b939b9470b6d9622605c08a77e3ca Mon Sep 17 00:00:00 2001 From: JB Date: Mon, 13 Oct 2025 12:58:57 -0700 Subject: [PATCH] feat: Improve EPUB loading status messaging and error handling --- abogen/web/templates/reader_embed.html | 27 +++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/abogen/web/templates/reader_embed.html b/abogen/web/templates/reader_embed.html index effd268..91c7adf 100644 --- a/abogen/web/templates/reader_embed.html +++ b/abogen/web/templates/reader_embed.html @@ -811,8 +811,28 @@ return; } + setStatus('Fetching EPUB…'); + book = window.ePub({ + replacements: 'view', + requestCredentials: 'same-origin', + }); + + const preloadTimeout = setTimeout(() => { + setStatus('Still fetching EPUB… this may take a moment for large books.'); + }, 4000); + + try { + await book.open(epubUrl, 'epub'); + } catch (error) { + console.error('Failed to fetch EPUB payload', error); + clearTimeout(preloadTimeout); + setStatus('Unable to fetch the EPUB asset for this job.'); + return; + } + + clearTimeout(preloadTimeout); setStatus('Loading book…'); - book = window.ePub(epubUrl, { openAs: 'epub' }); + rendition = book.renderTo('reader-view', { flow: 'scrolled-doc', width: '100%', @@ -821,6 +841,11 @@ allowScriptedContent: false, }); + book.on('book:loadFailed', (error) => { + console.error('EPUB engine reported a load failure', error); + setStatus('EPUB content could not be loaded.'); + }); + registerRenditionHooks(); let navigation = null;