Răsfoiți Sursa

ignore: cloud solid fixes

Dax Raad 5 luni în urmă
părinte
comite
4496cd4b64

Fișier diff suprimat deoarece este prea mare
+ 142 - 279
bun.lock


+ 1 - 1
cloud/app/package.json

@@ -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:*"
   },

+ 23 - 0
cloud/app/src/context/auth.session.ts

@@ -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,
+    },
+  })
+}

+ 10 - 37
cloud/app/src/context/auth.tsx → cloud/app/src/context/auth.ts

@@ -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() { }

+ 7 - 0
cloud/app/src/context/auth.withActor.ts

@@ -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)
+}

+ 6 - 2
cloud/app/src/routes/workspace/[workspaceID].tsx

@@ -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
@@ -47,8 +48,11 @@ const createPortalUrl = action(async (returnUrl: string) => {
   return withActor(() => Billing.generatePortalUrl({ returnUrl }))
 }, "portalUrl")
 
-export default function() {
+export default function () {
   const actor = createAsync(() => getActor())
+  onMount(() => {
+    console.log("MOUNTED", actor())
+  })
 
   /////////////////
   // Keys section

+ 1 - 1
cloud/web/package.json

@@ -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"
   }
 }

+ 2 - 1
package.json

@@ -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": {

+ 1 - 1
packages/web/package.json

@@ -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": {

Unele fișiere nu au fost afișate deoarece prea multe fișiere au fost modificate în acest diff