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":