فهرست منبع

fix(desktop): new session not selecting tab

Adam 2 ماه پیش
والد
کامیت
87a791fdb9
1فایلهای تغییر یافته به همراه23 افزوده شده و 14 حذف شده
  1. 23 14
      packages/desktop/src/context/session.tsx

+ 23 - 14
packages/desktop/src/context/session.tsx

@@ -201,20 +201,14 @@ export const { use: useSession, provider: SessionProvider } = createSimpleContex
           sdk.client.pty.create({ body: { title: `Terminal ${store.terminals.all.length + 1}` } }).then((pty) => {
             const id = pty.data?.id
             if (!id) return
-            batch(() => {
-              setStore("terminals", "all", [
-                ...store.terminals.all,
-                {
-                  id,
-                  title: pty.data?.title ?? "Terminal",
-                  // rows: pty.data?.rows ?? 24,
-                  // cols: pty.data?.cols ?? 80,
-                  // buffer: "",
-                  // scrollY: 0,
-                },
-              ])
-              setStore("terminals", "active", id)
-            })
+            setStore("terminals", "all", [
+              ...store.terminals.all,
+              {
+                id,
+                title: pty.data?.title ?? "Terminal",
+              },
+            ])
+            setStore("terminals", "active", id)
           })
         },
         update(pty: Partial<LocalPTY> & { id: string }) {
@@ -224,6 +218,21 @@ export const { use: useSession, provider: SessionProvider } = createSimpleContex
             body: { title: pty.title, size: pty.cols && pty.rows ? { rows: pty.rows, cols: pty.cols } : undefined },
           })
         },
+        async clone(id: string) {
+          const index = store.terminals.all.findIndex((x) => x.id === id)
+          const pty = store.terminals.all[index]
+          if (!pty) return
+          const clone = await sdk.client.pty.create({
+            body: {
+              title: pty.title,
+            },
+          })
+          if (!clone.data) return
+          setStore("terminals", "all", index, {
+            ...pty,
+            ...clone.data,
+          })
+        },
         open(id: string) {
           setStore("terminals", "active", id)
         },