ソースを参照

fix(app): prevent freeze when closing projects (#39158)

Brendan Allan 3 週間 前
コミット
8e8d38c3cd
1 ファイル変更18 行追加17 行削除
  1. 18 17
      packages/app/src/pages/home/home-projects-view.tsx

+ 18 - 17
packages/app/src/pages/home/home-projects-view.tsx

@@ -360,25 +360,26 @@ function HomeProjectSlot(
     index: () => number
   },
 ) {
-  const project = createMemo(() => props.items.find((item) => item.worktree === props.worktree))
+  const initial = props.items.find((item) => item.worktree === props.worktree)
+  if (!initial) return
+  const project = createMemo<LocalProject>(
+    (previous) => props.items.find((item) => item.worktree === props.worktree) ?? previous,
+    initial,
+  )
 
   return (
-    <Show when={project()}>
-      {(item) => (
-        <HomeProjectRow
-          {...props}
-          project={item()}
-          server={props.server}
-          index={props.index}
-          serverSelected={props.selection().server === ServerConnection.key(props.server)}
-          selected={
-            props.selection().server === ServerConnection.key(props.server) &&
-            props.selection().directory === props.worktree
-          }
-          unseen={props.unseenCount(props.server, item())}
-        />
-      )}
-    </Show>
+    <HomeProjectRow
+      {...props}
+      project={project()}
+      server={props.server}
+      index={props.index}
+      serverSelected={props.selection().server === ServerConnection.key(props.server)}
+      selected={
+        props.selection().server === ServerConnection.key(props.server) &&
+        props.selection().directory === props.worktree
+      }
+      unseen={props.unseenCount(props.server, project())}
+    />
   )
 }