ignore: cloud solid fixes

This commit is contained in:
Dax Raad
2025-08-29 11:58:17 -04:00
parent 7f5e5fccc8
commit 4496cd4b64
9 changed files with 206 additions and 351 deletions

463
bun.lock

File diff suppressed because it is too large Load Diff

View File

@@ -14,7 +14,7 @@
"@solidjs/meta": "^0.29.4",
"@solidjs/router": "^0.15.0",
"@solidjs/start": "^1.1.0",
"solid-js": "^1.9.5",
"solid-js": "catalog:",
"vinxi": "^0.5.7",
"@opencode/cloud-core": "workspace:*"
},

View File

@@ -0,0 +1,23 @@
import { useSession } from "vinxi/http"
export interface AuthSession {
account: Record<
string,
{
id: string
email: string
}
>
current?: string
}
export function useAuthSession() {
return useSession<AuthSession>({
password: "0".repeat(32),
name: "auth",
cookie: {
secure: false,
httpOnly: true,
},
})
}

View File

@@ -1,5 +1,3 @@
import { useSession } from "vinxi/http"
import { createClient } from "@openauthjs/openauth/client"
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"
@@ -8,18 +6,21 @@ import { query, redirect } from "@solidjs/router"
import { AccountTable } from "@opencode/cloud-core/schema/account.sql.js"
import { Actor } from "@opencode/cloud-core/actor.js"
export async function withActor<T>(fn: () => T) {
const actor = await getActor()
return Actor.provide(actor.type, actor.properties, fn)
}
import { createClient } from "@openauthjs/openauth/client"
import { useAuthSession } from "./auth.session"
export const AuthClient = createClient({
clientID: "app",
issuer: import.meta.env.VITE_AUTH_URL,
})
export const getActor = query(async (): Promise<Actor.Info> => {
"use server"
const evt = getRequestEvent()
const url = new URL(evt!.request.headers.get("referer") ?? evt!.request.url)
const auth = await useAuthSession()
const [, workspaceHint] = url.pathname.split("/").filter((x) => x.length > 0)
if (!workspaceHint) {
const splits = url.pathname.split("/").filter(Boolean)
if (splits[0] !== "workspace") {
if (auth.data.current) {
const current = auth.data.account[auth.data.current]
return {
@@ -49,6 +50,7 @@ export const getActor = query(async (): Promise<Actor.Info> => {
properties: {},
}
}
const workspaceHint = splits[1]
const accounts = Object.keys(auth.data.account)
const result = await Database.transaction(async (tx) => {
return await tx
@@ -74,32 +76,3 @@ export const getActor = query(async (): Promise<Actor.Info> => {
}
throw redirect("/auth/authorize")
}, "actor")
export const AuthClient = createClient({
clientID: "app",
issuer: import.meta.env.VITE_AUTH_URL,
})
export interface AuthSession {
account: Record<
string,
{
id: string
email: string
}
>
current?: string
}
export function useAuthSession() {
return useSession<AuthSession>({
password: "0".repeat(32),
name: "auth",
cookie: {
secure: false,
httpOnly: true,
},
})
}
export function AuthProvider() { }

View File

@@ -0,0 +1,7 @@
import { Actor } from "@opencode/cloud-core/actor.js"
import { getActor } from "./auth"
export async function withActor<T>(fn: () => T) {
const actor = await getActor()
return Actor.provide(actor.type, actor.properties, fn)
}

View File

@@ -2,7 +2,8 @@ import { Billing } from "@opencode/cloud-core/billing.js"
import { Key } from "@opencode/cloud-core/key.js"
import { action, createAsync, revalidate, query, useAction, useSubmission } from "@solidjs/router"
import { createEffect, createSignal, For, onMount, Show } from "solid-js"
import { getActor, withActor } from "~/context/auth"
import { getActor } from "~/context/auth"
import { withActor } from "~/context/auth.withActor"
/////////////////////////////////////
// Keys related queries and actions
@@ -49,6 +50,9 @@ const createPortalUrl = action(async (returnUrl: string) => {
export default function () {
const actor = createAsync(() => getActor())
onMount(() => {
console.log("MOUNTED", actor())
})
/////////////////
// Keys section

View File

@@ -26,7 +26,7 @@
"@solid-primitives/storage": "4.3.1",
"@solidjs/meta": "0.29.4",
"@solidjs/router": "0.15.3",
"solid-js": "1.9.5",
"solid-js": "catalog:",
"solid-list": "0.3.0"
}
}

View File

@@ -24,7 +24,8 @@
"hono": "4.7.10",
"typescript": "5.8.2",
"zod": "3.25.76",
"remeda": "2.26.0"
"remeda": "2.26.0",
"solid-js": "1.9.9"
}
},
"dependencies": {

View File

@@ -30,7 +30,7 @@
"remeda": "2.26.0",
"sharp": "0.32.5",
"shiki": "3.4.2",
"solid-js": "1.9.7",
"solid-js": "catalog:",
"toolbeam-docs-theme": "0.4.6"
},
"devDependencies": {