From 4e42b3e1c16237211d4586c9005a230dd5b437b5 Mon Sep 17 00:00:00 2001 From: Your Name Date: Sat, 31 Jan 2026 21:27:45 +0800 Subject: [PATCH] fix: use xhr.upload.onloadend to correctly show compressing stage Co-authored-by: Cursor --- app/(admin)/settings/admin-settings-client.tsx | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/app/(admin)/settings/admin-settings-client.tsx b/app/(admin)/settings/admin-settings-client.tsx index 7a39cf6..2147b71 100644 --- a/app/(admin)/settings/admin-settings-client.tsx +++ b/app/(admin)/settings/admin-settings-client.tsx @@ -2748,15 +2748,17 @@ export function AdminSettingsClient() { if (event.lengthComputable) { const percent = Math.round((event.loaded / event.total) * 100); setVideoUploadPercent(percent); - if (percent < 100) { - setVideoUploadProgress(`上传中 ${percent}%`); - } else { - setVideoUploadStage("compressing"); - setVideoUploadProgress("压缩处理中..."); - } + setVideoUploadProgress(`上传中 ${percent}%`); } }; + // 上传完成后,切换到压缩阶段 + xhr.upload.onloadend = () => { + setVideoUploadPercent(100); + setVideoUploadStage("compressing"); + setVideoUploadProgress("压缩处理中..."); + }; + xhr.onload = () => { if (xhr.status >= 200 && xhr.status < 300) { try { @@ -2765,6 +2767,7 @@ export function AdminSettingsClient() { reject(new Error(response.error)); } else { setVideoUploadStage("done"); + setVideoUploadProgress("完成!"); resolve(response); } } catch {