From b21dfcad24d1efc24aa01ad489129769c585790d Mon Sep 17 00:00:00 2001 From: lifegpc Date: Thu, 13 Jun 2024 14:45:33 +0800 Subject: [PATCH] Use better way to reload --- page/GalleryPage.ts | 3 +-- page/MPVPage.ts | 3 +-- tasks/download.ts | 6 +++++- 3 files changed, 7 insertions(+), 5 deletions(-) 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);