Canvas: Generate graph state out of dodo-app config
Restructure code, create shared config lib.
Change-Id: I2cf06d35c486d4557484daf8618a2c215316fa7e
diff --git a/apps/canvas/front/src/components/actions.tsx b/apps/canvas/front/src/components/actions.tsx
index d4bd5ea..1442b9a 100644
--- a/apps/canvas/front/src/components/actions.tsx
+++ b/apps/canvas/front/src/components/actions.tsx
@@ -1,7 +1,7 @@
-import { AppNode, nodeLabelFull, useEnv, useMessages, useProjectId, useStateStore } from "@/lib/state";
+import { nodeLabelFull, useEnv, useMessages, useProjectId, useStateStore } from "@/lib/state";
import { Button } from "./ui/button";
import { useCallback, useEffect, useState } from "react";
-import { generateDodoConfig } from "@/lib/config";
+import { generateDodoConfig, AppNode } from "config";
import { useNodes, useReactFlow } from "@xyflow/react";
import { useToast } from "@/hooks/use-toast";
import {
@@ -148,9 +148,9 @@
method: "GET",
});
const inst = await resp.json();
- const { x = 0, y = 0, zoom = 1 } = inst.viewport;
- store.setNodes(inst.nodes || []);
- store.setEdges(inst.edges || []);
+ const { x = 0, y = 0, zoom = 1 } = inst.state.viewport;
+ store.setNodes(inst.state.nodes || []);
+ store.setEdges(inst.state.edges || []);
instance.setViewport({ x, y, zoom });
}, [projectId, instance, store]);
const clear = useCallback(() => {
diff --git a/apps/canvas/front/src/components/import-modal.tsx b/apps/canvas/front/src/components/import-modal.tsx
index ea9a06c..44f66d5 100644
--- a/apps/canvas/front/src/components/import-modal.tsx
+++ b/apps/canvas/front/src/components/import-modal.tsx
@@ -11,9 +11,6 @@
useGithubRepositoriesLoading,
useGithubRepositoriesError,
useFetchGithubRepositories,
- serviceAnalyzisSchema,
- ServiceType,
- ServiceData,
useStateStore,
} from "@/lib/state";
import { Alert, AlertDescription } from "./ui/alert";
@@ -24,6 +21,7 @@
import { Switch } from "./ui/switch";
import { Label } from "./ui/label";
import { useToast } from "@/hooks/use-toast";
+import { serviceAnalyzisSchema, ServiceType, ServiceData } from "config";
const schema = z.object({
repositoryId: z.number().optional(),
diff --git a/apps/canvas/front/src/components/node-app.tsx b/apps/canvas/front/src/components/node-app.tsx
index d9eea6d..7eb632c 100644
--- a/apps/canvas/front/src/components/node-app.tsx
+++ b/apps/canvas/front/src/components/node-app.tsx
@@ -1,20 +1,7 @@
import { v4 as uuidv4 } from "uuid";
import { NodeRect } from "./node-rect";
-import {
- useStateStore,
- ServiceNode,
- ServiceTypes,
- nodeLabel,
- BoundEnvVar,
- AppState,
- nodeIsConnectable,
- GatewayTCPNode,
- GatewayHttpsNode,
- AppNode,
- GithubNode,
- useEnv,
- useGithubRepositories,
-} from "@/lib/state";
+import { useStateStore, nodeLabel, AppState, nodeIsConnectable, useEnv, useGithubRepositories } from "@/lib/state";
+import { ServiceNode, ServiceTypes } from "config";
import { KeyboardEvent, FocusEvent, useCallback, useEffect, useMemo, useState } from "react";
import { z } from "zod";
import { useForm, EventType, DeepPartial } from "react-hook-form";