From 68c5024334159d1cfe0cbf058c2379b751029d9b Mon Sep 17 00:00:00 2001 From: MDietermann Date: Wed, 12 Aug 2026 17:47:50 +0200 Subject: [PATCH] feat: implement workspace list page --- src/pages/WorkspacePage.tsx | 40 +++++++++++++++++++++++++++++++++++-- 1 file changed, 38 insertions(+), 2 deletions(-) diff --git a/src/pages/WorkspacePage.tsx b/src/pages/WorkspacePage.tsx index e10d2e6..1a22c2c 100644 --- a/src/pages/WorkspacePage.tsx +++ b/src/pages/WorkspacePage.tsx @@ -1,3 +1,39 @@ -export default function WorkspacePage() { - return
Workspaces
; +import { useState, useEffect } from "react"; +import { invoke } from "@tauri-apps/api/core"; +import { useNavigate } from "react-router-dom"; + +interface Workspace { + id: string; + name: string; + slug: string; +} + +export default function WorkspacePage() { + const [workspaces, setWorkspaces] = useState([]); + const [error, setError] = useState(null); + const navigate = useNavigate(); + + useEffect(() => { + invoke("list_workspaces") + .then(setWorkspaces) + .catch((e) => setError(String(e))); + }, []); + + return ( +
+

Workspaces

+ {error &&

{error}

} + {workspaces.map((ws) => ( +
navigate(`/workspaces/${ws.id}`)} + style={{ padding: 16, border: "1px solid #ccc", marginBottom: 8, cursor: "pointer", borderRadius: 4 }} + > + {ws.name} + /{ws.slug} +
+ ))} + {workspaces.length === 0 && !error &&

No workspaces found.

} +
+ ); }