summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDax Raad <[email protected]>2025-09-02 16:38:26 -0400
committerDax Raad <[email protected]>2025-09-02 16:38:50 -0400
commit042802848ddd536f10076b6822db73c2a7de362d (patch)
tree538e524c2fafb903eda03b355b381f02c86a4a78
parenta8aa44bd3f41d529bd55a44b5b21fe30d2ab4620 (diff)
downloadopencode-042802848ddd536f10076b6822db73c2a7de362d.tar.gz
opencode-042802848ddd536f10076b6822db73c2a7de362d.zip
wip: zen
-rw-r--r--cloud/app/src/context/auth.ts48
-rw-r--r--cloud/app/src/context/auth.withActor.ts9
-rw-r--r--packages/sdk/js/src/server.ts2
3 files changed, 26 insertions, 33 deletions
diff --git a/cloud/app/src/context/auth.ts b/cloud/app/src/context/auth.ts
index 48afd4e70..e04ccdb05 100644
--- a/cloud/app/src/context/auth.ts
+++ b/cloud/app/src/context/auth.ts
@@ -2,7 +2,7 @@ import { getRequestEvent } from "solid-js/web"
import { and, Database, eq, inArray } from "@opencode/cloud-core/drizzle/index.js"
import { WorkspaceTable } from "@opencode/cloud-core/schema/workspace.sql.js"
import { UserTable } from "@opencode/cloud-core/schema/user.sql.js"
-import { query, redirect } from "@solidjs/router"
+import { redirect } from "@solidjs/router"
import { AccountTable } from "@opencode/cloud-core/schema/account.sql.js"
import { Actor } from "@opencode/cloud-core/actor.js"
@@ -14,7 +14,7 @@ export const AuthClient = createClient({
issuer: import.meta.env.VITE_AUTH_URL,
})
-export const getActor = query(async (): Promise<Actor.Info> => {
+export const getActor = async (): Promise<Actor.Info> => {
"use server"
const evt = getRequestEvent()
if (!evt) throw new Error("No request event")
@@ -53,27 +53,29 @@ export const getActor = query(async (): Promise<Actor.Info> => {
}
const workspaceHint = splits[1]
const accounts = Object.keys(auth.data.account ?? {})
- const result = await Database.transaction(async (tx) => {
- return await tx
- .select({
- user: UserTable,
- })
- .from(AccountTable)
- .innerJoin(UserTable, and(eq(UserTable.email, AccountTable.email)))
- .innerJoin(WorkspaceTable, eq(WorkspaceTable.id, UserTable.workspaceID))
- .where(and(inArray(AccountTable.id, accounts), eq(WorkspaceTable.id, workspaceHint)))
- .limit(1)
- .execute()
- .then((x) => x[0])
- })
- if (result) {
- return {
- type: "user",
- properties: {
- userID: result.user.id,
- workspaceID: result.user.workspaceID,
- },
+ if (accounts.length) {
+ const result = await Database.transaction(async (tx) => {
+ return await tx
+ .select({
+ user: UserTable,
+ })
+ .from(AccountTable)
+ .innerJoin(UserTable, and(eq(UserTable.email, AccountTable.email)))
+ .innerJoin(WorkspaceTable, eq(WorkspaceTable.id, UserTable.workspaceID))
+ .where(and(inArray(AccountTable.id, accounts), eq(WorkspaceTable.id, workspaceHint)))
+ .limit(1)
+ .execute()
+ .then((x) => x[0])
+ })
+ if (result) {
+ return {
+ type: "user",
+ properties: {
+ userID: result.user.id,
+ workspaceID: result.user.workspaceID,
+ },
+ }
}
}
throw redirect("/auth/authorize")
-}, "actor")
+}
diff --git a/cloud/app/src/context/auth.withActor.ts b/cloud/app/src/context/auth.withActor.ts
index ca38be89b..a61b728ef 100644
--- a/cloud/app/src/context/auth.withActor.ts
+++ b/cloud/app/src/context/auth.withActor.ts
@@ -1,16 +1,7 @@
import { Actor } from "@opencode/cloud-core/actor.js"
import { getActor } from "./auth"
-import { query } from "@solidjs/router"
export async function withActor<T>(fn: () => T) {
const actor = await getActor()
return Actor.provide(actor.type, actor.properties, fn)
}
-
-export function actorQuery<T>(cb: () => T, name: string) {
- "use server"
- return query(async () => {
- const actor = await getActor()
- return withActor(cb)
- }, name)
-}
diff --git a/packages/sdk/js/src/server.ts b/packages/sdk/js/src/server.ts
index 5c8caa43f..3cee64752 100644
--- a/packages/sdk/js/src/server.ts
+++ b/packages/sdk/js/src/server.ts
@@ -1,5 +1,5 @@
import { spawn } from "node:child_process"
-import { Config } from "./gen/types.gen.js"
+import { type Config } from "./gen/types.gen.js"
export type ServerOptions = {
hostname?: string