From 04db5e7b0be8b9494d090a2ec4e037ca3b139dfa Mon Sep 17 00:00:00 2001 From: hailin Date: Tue, 24 Jun 2025 16:38:52 +0800 Subject: [PATCH] . --- apps/blogai/components/header.tsx | 96 +++++++++++++++++++++++++++---- 1 file changed, 84 insertions(+), 12 deletions(-) diff --git a/apps/blogai/components/header.tsx b/apps/blogai/components/header.tsx index e736d99..38ae4c0 100644 --- a/apps/blogai/components/header.tsx +++ b/apps/blogai/components/header.tsx @@ -169,6 +169,8 @@ export function DetailPageHeader({ data }: { data: any }) { const [downloadPercent, setDownloadPercent] = useState("0"); // 下载百分比(0 ~ 100) const [showDownloadBar, setShowDownloadBar] = useState(false); + const [newVersionLoading, setNewVersionLoading] = useState(false); + const socketRef = useRef(null); const { t } = useTranslation(); @@ -443,6 +445,57 @@ export function DetailPageHeader({ data }: { data: any }) { }; + const handleDownloadNewVersion = async () => { + const download_url = data?.extra_data?.download_url; + const callback_url = data?.extra_data?.callback_url; + const digest = data?.extra_data?.digest; + const version = data?.extra_data?.version; + const size = data?.extra_data?.size; + const date1 = data?.extra_data?.date; + const id = data?.org_id; + + if (!download_url || !size || !id) { + message.warning("缺少必要的下载参数"); + return; + } + + setNewVersionLoading(true); + setShowDownloadBar(true); // 复用原进度条 + + try { + const res = await fetch("https://ai.szaiai.com/api/v1/cloud/newversion", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + date: date1, + url: download_url, + callback_url, + digest, + version, + size, + id, + }), + }); + + const result = await res.json(); + + if (result?.header?.code === 0) { + const percent = (parseFloat(result?.data?.percent ?? "0") * 100).toFixed(1); + setDownloadPercent(percent); + message.success(`📦 更新进度:${percent}%`); + if (percent === "100.0") message.success("🎉 新版本下载完成!"); + } else { + message.warning(`❌ 更新失败:${result?.header?.message || "未知错误"}`); + } + } catch (err) { + console.error(err); + message.error("请求出错,无法更新"); + } finally { + setNewVersionLoading(false); + } + }; + + useEffect(() => { fetchDeployStatus(); }, [data?.id]); @@ -516,18 +569,37 @@ export function DetailPageHeader({ data }: { data: any }) { )} {statusLoaded && (currentStatus === "running" || currentStatus === "stopped") && ( - + // +
+ + + {showDownloadBar && ( +
+
+
+ )} +
)} {statusLoaded && showDelete && (