Canvas: fix empty config tab
Change-Id: I7b59790577478d0b75c0b62e970bc7e95282f65a
diff --git a/apps/canvas/front/src/lib/state.ts b/apps/canvas/front/src/lib/state.ts
index fb461c2..428ae17 100644
--- a/apps/canvas/front/src/lib/state.ts
+++ b/apps/canvas/front/src/lib/state.ts
@@ -418,11 +418,24 @@
export const useStateStore = create<AppState>((set, get): AppState => {
const setN = (nodes: AppNode[]) => {
- set((state) => ({
- ...state,
+ if (nodes.length == 0) {
+ console.trace("setN", nodes);
+ }
+ set({
nodes,
messages: v(nodes),
- }));
+ });
+ };
+
+ const restoreSaved = async () => {
+ const resp = await fetch(`/api/project/${get().projectId}/saved`, {
+ method: "GET",
+ });
+ const inst = await resp.json();
+ // const { x = 0, y = 0, zoom = 1 } = inst.viewport;
+ setN(inst.nodes || []);
+ get().setEdges(inst.edges || []);
+ // instance.setViewport({ x, y, zoom });
};
function updateNodeData<T extends NodeType>(id: string, data: NodeDataUpdate<T>): void {
@@ -688,11 +701,14 @@
} catch (error) {
console.error("Failed to fetch integrations:", error);
} finally {
- set({ env: env });
- if (env.integrations.github) {
- set({ githubService: new GitHubServiceImpl(projectId!) });
- } else {
- set({ githubService: null });
+ if (JSON.stringify(get().env) !== JSON.stringify(env)) {
+ set({ env });
+
+ if (env.integrations.github) {
+ set({ githubService: new GitHubServiceImpl(projectId!) });
+ } else {
+ set({ githubService: null });
+ }
}
}
},
@@ -702,6 +718,12 @@
});
if (projectId) {
get().refreshEnv();
+ restoreSaved();
+ } else {
+ set({
+ nodes: [],
+ edges: [],
+ });
}
},
};