Canvas: Edit/Deploy mode
Change-Id: I51e5b6c2a1f06009433b0d0824ffcf3dfe39d34e
diff --git a/apps/canvas/front/src/lib/state.ts b/apps/canvas/front/src/lib/state.ts
index 21dbbc4..b7fe986 100644
--- a/apps/canvas/front/src/lib/state.ts
+++ b/apps/canvas/front/src/lib/state.ts
@@ -16,7 +16,7 @@
export type NodeData = InitData & {
activeField?: string | undefined;
- state: string | null;
+ state?: string | null;
};
export type PortConnectedTo = {
@@ -136,6 +136,7 @@
repository?: {
id: number;
sshURL: string;
+ fullName: string;
};
};
@@ -165,7 +166,7 @@
case "app":
return n.data.label || "Service";
case "github":
- return n.data.repository?.sshURL || "Github";
+ return n.data.repository?.fullName || "Github";
case "gateway-https": {
if (n.data && n.data.network && n.data.subdomain) {
return `https://${n.data.subdomain}.${n.data.network}`;
@@ -356,6 +357,7 @@
export type AppState = {
projectId: string | undefined;
+ mode: "edit" | "deploy";
projects: Project[];
nodes: AppNode[];
edges: Edge[];
@@ -369,7 +371,8 @@
onConnect: OnConnect;
setNodes: (nodes: AppNode[]) => void;
setEdges: (edges: Edge[]) => void;
- setProject: (projectId: string | undefined) => void;
+ setProject: (projectId: string | undefined) => Promise<void>;
+ setMode: (mode: "edit" | "deploy") => void;
updateNode: <T extends NodeType>(id: string, node: NodeUpdate<T>) => void;
updateNodeData: <T extends NodeType>(id: string, data: NodeDataUpdate<T>) => void;
replaceEdge: (c: Connection, id?: string) => void;
@@ -428,14 +431,13 @@
};
const restoreSaved = async () => {
- const resp = await fetch(`/api/project/${get().projectId}/saved`, {
+ const { projectId } = get();
+ const resp = await fetch(`/api/project/${projectId}/saved/${get().mode === "deploy" ? "deploy" : "draft"}`, {
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 {
@@ -617,6 +619,7 @@
}
return {
projectId: undefined,
+ mode: "edit",
projects: [],
nodes: [],
edges: [],
@@ -712,12 +715,20 @@
}
}
},
- setProject: (projectId) => {
+ setMode: (mode) => {
+ set({ mode });
+ },
+ setProject: async (projectId) => {
set({
projectId,
});
if (projectId) {
- get().refreshEnv();
+ await get().refreshEnv();
+ if (get().env.deployKey) {
+ set({ mode: "deploy" });
+ } else {
+ set({ mode: "edit" });
+ }
restoreSaved();
} else {
set({