diff options
| author | Frank <[email protected]> | 2025-10-10 19:49:59 -0400 |
|---|---|---|
| committer | Frank <[email protected]> | 2025-10-10 19:49:59 -0400 |
| commit | cc590364e968bec62c62861f2450034e9574f76b (patch) | |
| tree | 6de70b32cb8870d9abe7bf103040e46e08964556 | |
| parent | f14cd4a3db12161eab93ce6538528ed882439a50 (diff) | |
| download | opencode-cc590364e968bec62c62861f2450034e9574f76b.tar.gz opencode-cc590364e968bec62c62861f2450034e9574f76b.zip | |
wip: zen
| -rw-r--r-- | packages/console/app/src/routes/workspace-picker.tsx | 7 | ||||
| -rw-r--r-- | packages/console/app/src/routes/workspace/[id].tsx | 6 | ||||
| -rw-r--r-- | packages/console/core/src/actor.ts | 2 | ||||
| -rw-r--r-- | packages/console/core/src/workspace.ts | 1 |
4 files changed, 9 insertions, 7 deletions
diff --git a/packages/console/app/src/routes/workspace-picker.tsx b/packages/console/app/src/routes/workspace-picker.tsx index 51de4cef1..34a544973 100644 --- a/packages/console/app/src/routes/workspace-picker.tsx +++ b/packages/console/app/src/routes/workspace-picker.tsx @@ -1,4 +1,4 @@ -import { query, useParams, action, createAsync, redirect } from "@solidjs/router" +import { query, useParams, action, createAsync, redirect, useSubmission } from "@solidjs/router" import { For, Show, createEffect, onCleanup } from "solid-js" import { createStore } from "solid-js/store" import { withActor } from "~/context/auth.withActor" @@ -42,6 +42,7 @@ const createWorkspace = action(async (form: FormData) => { export function WorkspacePicker() { const params = useParams() const workspaces = createAsync(() => getWorkspaces()) + const submission = useSubmission(createWorkspace) const [store, setStore] = createStore({ showForm: false, showDropdown: false, @@ -135,8 +136,8 @@ export function WorkspacePicker() { <button type="button" data-color="ghost" onClick={() => setStore("showForm", false)}> Cancel </button> - <button type="submit" data-color="primary"> - Create + <button type="submit" data-color="primary" disabled={submission.pending}> + {submission.pending ? "Creating..." : "Create"} </button> </div> </div> diff --git a/packages/console/app/src/routes/workspace/[id].tsx b/packages/console/app/src/routes/workspace/[id].tsx index a28bf93b3..8347cd49c 100644 --- a/packages/console/app/src/routes/workspace/[id].tsx +++ b/packages/console/app/src/routes/workspace/[id].tsx @@ -24,10 +24,10 @@ export default function WorkspaceLayout(props: RouteSectionProps) { <A href={`/workspace/${params.id}/billing`} activeClass="active" data-nav-button> Billing </A> + <A href={`/workspace/${params.id}/settings`} activeClass="active" data-nav-button> + Settings + </A> </Show> - <A href={`/workspace/${params.id}/settings`} activeClass="active" data-nav-button> - Settings - </A> </div> </nav> <div data-component="workspace-content">{props.children}</div> diff --git a/packages/console/core/src/actor.ts b/packages/console/core/src/actor.ts index e8d1b7a6b..48f4a6366 100644 --- a/packages/console/core/src/actor.ts +++ b/packages/console/core/src/actor.ts @@ -69,7 +69,7 @@ export namespace Actor { export const assertAdmin = () => { if (userRole() === "admin") return - throw new Error(`Expected admin user, got ${userRole()}`) + throw new Error(`Action not allowed. Ask your workspace admin to perform this action.`) } export function workspace() { diff --git a/packages/console/core/src/workspace.ts b/packages/console/core/src/workspace.ts index 7a742e896..655112ae2 100644 --- a/packages/console/core/src/workspace.ts +++ b/packages/console/core/src/workspace.ts @@ -52,6 +52,7 @@ export namespace Workspace { name: z.string().min(1).max(255), }), async ({ name }) => { + Actor.assertAdmin() const workspaceID = Actor.workspace() return await Database.use((tx) => tx |
