Frank 5 месяцев назад
Родитель
Сommit
46927ee9a5
1 измененных файлов с 20 добавлено и 10 удалено
  1. 20 10
      cloud/app/src/routes/workspace/[id].tsx

+ 20 - 10
cloud/app/src/routes/workspace/[id].tsx

@@ -1,10 +1,12 @@
 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 { action, createAsync, revalidate, query, useAction, useSubmission, json } from "@solidjs/router"
 import { createEffect, createSignal, For, onMount, Show } from "solid-js"
 import { getActor } from "~/context/auth"
 import { withActor } from "~/context/auth.withActor"
 import "./index.css"
+import { User } from "@opencode/cloud-core/user.js"
+import { Actor } from "@opencode/cloud-core/actor.js"
 
 /////////////////////////////////////
 // Keys related queries and actions
@@ -17,12 +19,18 @@ const listKeys = query(async () => {
 
 const createKey = action(async (name: string) => {
   "use server"
-  return withActor(() => Key.create({ name }))
+  return json(
+    withActor(() => Key.create({ name })),
+    { revalidate: "keys" },
+  )
 }, "createKey")
 
 const removeKey = action(async (id: string) => {
   "use server"
-  return withActor(() => Key.remove({ id }))
+  return json(
+    withActor(() => Key.remove({ id })),
+    { revalidate: "keys" },
+  )
 }, "removeKey")
 
 /////////////////////////////////////
@@ -32,10 +40,14 @@ const removeKey = action(async (id: string) => {
 const getBillingInfo = query(async () => {
   "use server"
   return withActor(async () => {
-    const billing = await Billing.get()
-    const payments = await Billing.payments()
-    const usage = await Billing.usages()
-    return { billing, payments, usage }
+    const actor = Actor.assert("user")
+    const [user, billing, payments, usage] = await Promise.all([
+      User.fromID(actor.properties.userID),
+      Billing.get(),
+      Billing.payments(),
+      Billing.usages(),
+    ])
+    return { user, billing, payments, usage }
   })
 }, "billingInfo")
 
@@ -130,7 +142,7 @@ const dummyPaymentData = [
   },
 ]
 
-export default function() {
+export default function () {
   const actor = createAsync(() => getActor())
   onMount(() => {
     console.log("MOUNTED", actor())
@@ -194,7 +206,6 @@ export default function() {
 
     try {
       await createKeyAction(keyName().trim())
-      revalidate("keys")
       setKeyName("")
       setShowCreateForm(false)
     } catch (error) {
@@ -209,7 +220,6 @@ export default function() {
 
     try {
       await removeKeyAction(keyId)
-      revalidate("keys")
     } catch (error) {
       console.error("Failed to delete API key:", error)
     }