From 17bd1c941c3879c2f42dde6472b41e0701f7d310 Mon Sep 17 00:00:00 2001 From: hailin Date: Wed, 2 Apr 2025 22:47:27 +0800 Subject: [PATCH] . --- apps/blogai/components/header.tsx | 31 ++++++++++++++----------------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/apps/blogai/components/header.tsx b/apps/blogai/components/header.tsx index 16e0a4c..3a28fee 100644 --- a/apps/blogai/components/header.tsx +++ b/apps/blogai/components/header.tsx @@ -403,21 +403,18 @@ export function Header() { - export function DetailPageHeader({ data }: { data: any }) { const [loading, setLoading] = useState(false); const [statusText, setStatusText] = useState(data?.statusText || "加载中..."); const [progress, setProgress] = useState(data?.progress || "0%"); - const [showDelete, setShowDelete] = useState(true); + const [showDelete, setShowDelete] = useState(false); // 默认隐藏避免闪烁 const [hasWSConnected, setHasWSConnected] = useState(false); - const socketRef = useRef(null); // ✅ 引用存 WebSocket 实例 - const [statusLoaded, setStatusLoaded] = useState(false); // 👈 状态是否加载完成 + const [statusLoaded, setStatusLoaded] = useState(false); + const socketRef = useRef(null); - // ✅ 提取 WebSocket 初始化逻辑 + // ✅ 初始化 WebSocket const initWebSocket = (userName: string, id: number) => { - if (socketRef.current) { - socketRef.current.close(); // 关闭旧连接 - } + if (socketRef.current) socketRef.current.close(); const wsBase = process.env.NEXT_PUBLIC_CLIENT_BASE_WS; const socket = new WebSocket(`${wsBase}/status/${userName}/${id}`); @@ -453,7 +450,6 @@ export function DetailPageHeader({ data }: { data: any }) { setHasWSConnected(true); }; - // ✅ 部署请求 const handleClick = async (source: "icon" | "info") => { setLoading(true); setStatusText(source === "icon" ? "正在处理图标操作..." : "正在处理信息操作..."); @@ -506,7 +502,7 @@ export function DetailPageHeader({ data }: { data: any }) { } }; - // ✅ 页面加载时自动拉状态 & 触发 WebSocket(如 status 为 deploying) + // ✅ 拉取部署状态 useEffect(() => { const fetchDeployStatus = async () => { try { @@ -516,14 +512,14 @@ export function DetailPageHeader({ data }: { data: any }) { body: JSON.stringify({ id: data?.id }), }).then((res) => res.json()); - console.log("==================>result:", result); + console.log("====> deploy status result:", result); - const status = result?.data?.status; + const status = result?.data?.data?.status; const userData = JSON.parse(localStorage.getItem("UserData") || "null"); const userName = userData?.user_name; const id = data?.id; - setStatusLoaded(true); // 在 fetch 成功最后加这句 + setStatusLoaded(true); if (status === "deploying" && userName && id && !hasWSConnected) { setStatusText("检测到正在部署,连接中..."); @@ -537,14 +533,13 @@ export function DetailPageHeader({ data }: { data: any }) { } setStatusText(result.header.message || "部署成功"); - // ✅ 只在 running / stopped 状态下显示删除按钮 + + // ✅ 只在 running / stopped 显示删除按钮 if (status === "running" || status === "stopped") { setShowDelete(true); } else { setShowDelete(false); } - - setProgress(result.data?.progress || "0%"); } catch (err) { console.error("请求部署状态失败:", err); setStatusText("请求失败"); @@ -555,7 +550,7 @@ export function DetailPageHeader({ data }: { data: any }) { fetchDeployStatus(); }, [data?.id]); - // ✅ 页面卸载时关闭 WebSocket + // ✅ 卸载时关闭 WebSocket useEffect(() => { return () => { if (socketRef.current) { @@ -638,6 +633,8 @@ export function DetailPageHeader({ data }: { data: any }) { } + + // export function Header() { // const router = useRouter();