This commit is contained in:
parent
17eef2e5de
commit
17bd1c941c
|
|
@ -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<WebSocket | null>(null); // ✅ 引用存 WebSocket 实例
|
||||
const [statusLoaded, setStatusLoaded] = useState(false); // 👈 状态是否加载完成
|
||||
const [statusLoaded, setStatusLoaded] = useState(false);
|
||||
const socketRef = useRef<WebSocket | null>(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();
|
||||
|
|
|
|||
Loading…
Reference in New Issue