From ffd1db45fcc7dd0fa41c629651fe49be09717bd6 Mon Sep 17 00:00:00 2001
From: "tao.chen" <93983997+taochen-ct@users.noreply.github.com>
Date: Fri, 7 Aug 2026 13:12:07 +0800
Subject: [PATCH] fix: workspace refresh
---
frontend/app/features/admin/SystemAdminRoute.tsx | 4 ++++
frontend/app/features/schedules/SchedulesPageRoute.tsx | 4 ++++
frontend/app/routes/platform.tsx | 9 ++++++---
3 files changed, 14 insertions(+), 3 deletions(-)
diff --git a/frontend/app/features/admin/SystemAdminRoute.tsx b/frontend/app/features/admin/SystemAdminRoute.tsx
index e70ea5b..4fb9cd6 100644
--- a/frontend/app/features/admin/SystemAdminRoute.tsx
+++ b/frontend/app/features/admin/SystemAdminRoute.tsx
@@ -1,13 +1,17 @@
+import { useAuth } from "../../context/AuthContext";
import { useScriptWorkspaceStore } from "../platform/state/scriptWorkspaceStore";
import { useUiStore } from "../platform/state/uiStore";
import { SystemAdminPage } from "./SystemAdminPage";
export default function SystemAdminRoute() {
+ const { currentWorkspace, user } = useAuth();
const setApiOnline = useScriptWorkspaceStore((s) => s.setApiOnline);
const pushToast = useUiStore((s) => s.pushToast);
return (
diff --git a/frontend/app/features/schedules/SchedulesPageRoute.tsx b/frontend/app/features/schedules/SchedulesPageRoute.tsx
index 854819c..dcd6129 100644
--- a/frontend/app/features/schedules/SchedulesPageRoute.tsx
+++ b/frontend/app/features/schedules/SchedulesPageRoute.tsx
@@ -1,13 +1,17 @@
+import { useAuth } from "../../context/AuthContext";
import { useScriptWorkspaceStore } from "../platform/state/scriptWorkspaceStore";
import { useUiStore } from "../platform/state/uiStore";
import SchedulePage from "./SchedulePage";
export default function SchedulesPageRoute() {
+ const { currentWorkspace, user } = useAuth();
const setApiOnline = useScriptWorkspaceStore((s) => s.setApiOnline);
const pushToast = useUiStore((s) => s.pushToast);
return (
diff --git a/frontend/app/routes/platform.tsx b/frontend/app/routes/platform.tsx
index ac20865..6ba81f5 100644
--- a/frontend/app/routes/platform.tsx
+++ b/frontend/app/routes/platform.tsx
@@ -78,13 +78,16 @@ function AuthenticatedLayout() {
const [sidebarCollapsed, setSidebarCollapsed] = useState(false);
- // 绑定 api 到 script workspace store
+ // 绑定 api 到 script workspace store。
+ // 必须放在 render body(同步),不能用 useEffect([api]) + cleanup —
+ // 后者会在 deps 变化时先 cleanup(null),再让 ScriptsPage 的 useEffect 跑,
+ // 此时 _api 为 null,load() 抛 "script workspace API 未绑定"。
+ bindScriptWorkspaceApi(api);
useEffect(() => {
- bindScriptWorkspaceApi(api);
return () => {
bindScriptWorkspaceApi(null);
};
- }, [api]);
+ }, []);
// 心跳 / cleanup / 切页结束编辑 / 卸载前释放
useEditSessionLifecycle({ activePage });