diff --git a/apps/desktop/src/lib/trpc/routers/workspaces/workspaces.ts b/apps/desktop/src/lib/trpc/routers/workspaces/workspaces.ts index 740f94c9d3d..0d615552019 100644 --- a/apps/desktop/src/lib/trpc/routers/workspaces/workspaces.ts +++ b/apps/desktop/src/lib/trpc/routers/workspaces/workspaces.ts @@ -208,6 +208,43 @@ export const createWorkspacesRouter = () => { return workspace; }), + getActiveWithDetails: publicProcedure.query(() => { + const { lastActiveWorkspaceId } = db.data.settings; + + if (!lastActiveWorkspaceId) { + return null; + } + + const workspace = db.data.workspaces.find( + (w) => w.id === lastActiveWorkspaceId, + ); + if (!workspace) { + throw new Error( + `Active workspace ${lastActiveWorkspaceId} not found in database`, + ); + } + + const worktree = db.data.worktrees.find( + (wt) => wt.id === workspace.worktreeId, + ); + const project = db.data.projects.find( + (p) => p.id === workspace.projectId, + ); + + return { + workspace, + worktree: worktree ?? null, + project: project + ? { + id: project.id, + name: project.name, + color: project.color, + mainRepoPath: project.mainRepoPath, + } + : null, + }; + }), + update: publicProcedure .input( z.object({ diff --git a/apps/desktop/src/renderer/screens/main/components/WorkspaceView/WorkspaceTopBar/WorkspaceTopBar.tsx b/apps/desktop/src/renderer/screens/main/components/WorkspaceView/WorkspaceTopBar/WorkspaceTopBar.tsx new file mode 100644 index 00000000000..621011b7d0c --- /dev/null +++ b/apps/desktop/src/renderer/screens/main/components/WorkspaceView/WorkspaceTopBar/WorkspaceTopBar.tsx @@ -0,0 +1,42 @@ +import { HiMiniFolderOpen, HiMiniCodeBracketSquare } from "react-icons/hi2"; +import { trpc } from "renderer/lib/trpc"; + +export function WorkspaceTopBar() { + const { data } = trpc.workspaces.getActiveWithDetails.useQuery(); + + if (!data) { + return null; + } + + const { worktree, project } = data; + + const displayPath = worktree?.path ?? "No path"; + const displayBranch = worktree?.branch ?? "No branch"; + + return ( +