Przeglądaj źródła

fix(desktop): reactivity issue on route change

Adam 3 miesięcy temu
rodzic
commit
3a9c2152f7

+ 1 - 1
packages/desktop/src/context/session.tsx

@@ -15,7 +15,7 @@ export const { use: useSession, provider: SessionProvider } = createSimpleContex
     const params = useParams()
     const sync = useSync()
     const name = createMemo(
-      () => `${base64Encode(sync.data.project.worktree)}/session${params.id ? "/" + params.id : ""}`,
+      () => `___${base64Encode(sync.data.project.worktree)}/session${params.id ? "/" + params.id : ""}`,
     )
 
     const [store, setStore] = makePersisted(

+ 7 - 5
packages/desktop/src/index.tsx

@@ -12,7 +12,7 @@ import { LayoutProvider } from "./context/layout"
 import { GlobalSDKProvider } from "./context/global-sdk"
 import { SessionProvider } from "./context/session"
 import { base64Encode } from "./utils"
-import { createMemo } from "solid-js"
+import { createMemo, Show } from "solid-js"
 
 const host = import.meta.env.VITE_OPENCODE_SERVER_HOST ?? "127.0.0.1"
 const port = import.meta.env.VITE_OPENCODE_SERVER_PORT ?? "4096"
@@ -51,10 +51,12 @@ render(
                   <Route path="/" component={() => <Navigate href="session" />} />
                   <Route
                     path="/session/:id?"
-                    component={() => (
-                      <SessionProvider>
-                        <Session />
-                      </SessionProvider>
+                    component={(p) => (
+                      <Show when={p.params.id || true} keyed>
+                        <SessionProvider>
+                          <Session />
+                        </SessionProvider>
+                      </Show>
                     )}
                   />
                 </Route>

+ 1 - 1
packages/desktop/src/pages/directory-layout.tsx

@@ -1,4 +1,4 @@
-import { createMemo, Show, type ParentProps } from "solid-js"
+import { createMemo, type ParentProps } from "solid-js"
 import { useParams } from "@solidjs/router"
 import { SDKProvider } from "@/context/sdk"
 import { SyncProvider } from "@/context/sync"

+ 1 - 1
packages/desktop/src/pages/layout.tsx

@@ -122,7 +122,7 @@ export default function Layout(props: ParentProps) {
                                                   ?.replace(" hr.", "h")}
                                           </span>
                                         </div>
-                                        <div class="hidden flex justify-between items-center self-stretch">
+                                        <div class="hidden _flex justify-between items-center self-stretch">
                                           <span class="text-12-regular text-text-weak">{`${session.summary?.files || "No"} file${session.summary?.files !== 1 ? "s" : ""} changed`}</span>
                                           <Show when={session.summary}>
                                             {(summary) => <DiffChanges changes={summary()} />}