Canvas: Use node full labels when monitoring
Change-Id: I7b3bce3519c2a7b7780f43cf1c092fcca9e6ecd9
diff --git a/apps/canvas/front/src/components/actions.tsx b/apps/canvas/front/src/components/actions.tsx
index 0814d52..24198cb 100644
--- a/apps/canvas/front/src/components/actions.tsx
+++ b/apps/canvas/front/src/components/actions.tsx
@@ -1,4 +1,4 @@
-import { AppNode, nodeLabel, useEnv, useMessages, useProjectId, useStateStore } from "@/lib/state";
+import { AppNode, nodeLabelFull, useEnv, useMessages, useProjectId, useStateStore } from "@/lib/state";
import { Button } from "./ui/button";
import { useCallback, useEffect, useState } from "react";
import { generateDodoConfig } from "@/lib/config";
@@ -75,7 +75,7 @@
if (n.type === "network") {
continue;
}
- const d = data.find((d) => n.type === toNodeType(d.type) && nodeLabel(n) === d.name);
+ const d = data.find((d) => n.type === toNodeType(d.type) && nodeLabelFull(n) === d.name);
if (d !== undefined) {
store.updateNodeData(n.id, {
state: d?.status,
@@ -113,11 +113,11 @@
info("Deployment succeeded");
monitor();
} else {
- error("Deployment failed", await resp.text());
+ error("Deployment failed");
}
store.refreshEnv();
- } catch (e) {
- error("Deployment failed", e instanceof Error ? e.message : undefined);
+ } catch {
+ error("Deployment failed");
} finally {
setLoading(false);
}
diff --git a/apps/canvas/front/src/components/node-rect.tsx b/apps/canvas/front/src/components/node-rect.tsx
index 7cc3520..a0a1842 100644
--- a/apps/canvas/front/src/components/node-rect.tsx
+++ b/apps/canvas/front/src/components/node-rect.tsx
@@ -1,4 +1,4 @@
-import { NodeType, useNodeMessages } from "@/lib/state";
+import { NodeType, useMode, useNodeMessages } from "@/lib/state";
import { Icon } from "./icon";
import { useEffect, useState } from "react";
@@ -12,11 +12,12 @@
export function NodeRect(p: Props) {
const { id, selected, children, state } = p;
+ const mode = useMode();
const messages = useNodeMessages(id);
const hasFatal = messages.some((m) => m.type === "FATAL");
const hasWarning = messages.some((m) => m.type === "WARNING");
const [classes, setClasses] = useState<string[]>([]);
- const [_, setStateClasses] = useState<string[]>([]);
+ const [stateClasses, setStateClasses] = useState<string[]>([]);
useEffect(() => {
const classes = ["px-4", "py-2", "rounded-md", "bg-white"];
classes.push("border");
@@ -49,18 +50,19 @@
<div style={{ position: "absolute", top: "5px", left: "5px" }}>
<Icon type={p.type} />
</div>
- {/* TODO(gio): add state badge */}
- {/* <div
- style={{
- position: "absolute",
- top: "5px",
- right: "5px",
- borderRadius: "50%",
- width: "5px",
- height: "5px",
- }}
- className={stateClasses.join(" ")}
- ></div> */}
+ {mode === "deploy" && (
+ <div
+ style={{
+ position: "absolute",
+ top: "5px",
+ right: "5px",
+ borderRadius: "50%",
+ width: "5px",
+ height: "5px",
+ }}
+ className={stateClasses.join(" ")}
+ ></div>
+ )}
{children}
</div>
);
diff --git a/apps/canvas/front/src/lib/state.ts b/apps/canvas/front/src/lib/state.ts
index c86199f..b7413d9 100644
--- a/apps/canvas/front/src/lib/state.ts
+++ b/apps/canvas/front/src/lib/state.ts
@@ -226,6 +226,14 @@
return "Unknown Node";
}
+export function nodeLabelFull(n: AppNode): string {
+ if (n.type === "gateway-https") {
+ return `https://${n.data.subdomain}.${n.data.network}`;
+ } else {
+ return nodeLabel(n);
+ }
+}
+
export function nodeIsConnectable(n: AppNode, handle: string): boolean {
switch (n.type) {
case "network":