diff --git a/page/GalleryPage.ts b/page/GalleryPage.ts index 07d18b3..f02d5b3 100644 --- a/page/GalleryPage.ts +++ b/page/GalleryPage.ts @@ -122,8 +122,7 @@ class Image { return re; } async load_image(reload = true) { - if (!reload) return; - await this.load(); + if (reload || !this.data) await this.load(); const src2 = this.src; if (src2) return await this.#load_image(src2); } diff --git a/page/MPVPage.ts b/page/MPVPage.ts index 124c764..9cd5eda 100644 --- a/page/MPVPage.ts +++ b/page/MPVPage.ts @@ -172,8 +172,7 @@ class MPVImage { return re; } async load_image(reload = true) { - if (!reload) return; - await this.load(); + if (reload || !this.data) await this.load(); const src2 = this.src; if (src2) return await this.#load_image(src2); } diff --git a/tasks/download.ts b/tasks/download.ts index 7e0ea7a..ea2b5f2 100644 --- a/tasks/download.ts +++ b/tasks/download.ts @@ -287,6 +287,7 @@ export async function download_task( } } let load_times = 0; + let reload = false; function load() { return new Promise((resolve, reject) => { const errors: unknown[] = []; @@ -343,10 +344,11 @@ export async function download_task( async function download() { const re = await (download_original ? i.load_original_image() - : i.load_image()); + : i.load_image(reload)); if (re === undefined) { throw Error("Failed to fetch image."); } + reload = false; m.set_details_started(i.index); const len = re.headers.get("Content-Length"); if (len) { @@ -440,6 +442,7 @@ export async function download_task( if (e.name == "AbortError") { m.remove_details(i.index); reject(new TimeoutError()); + reload = true; return; } } @@ -449,6 +452,7 @@ export async function download_task( ) { m.remove_details(i.index); reject(e); + reload = true; return; } errors.push(e);