Browse Source

fix(app): remove produce default values in server session state (#33793)

Brendan Allan 2 tháng trước cách đây
mục cha
commit
71402bcbc3

+ 12 - 4
packages/app/src/context/server-session.ts

@@ -471,14 +471,18 @@ export function createServerSession(client: OpencodeClient) {
       }
       }
       case "permission.asked": {
       case "permission.asked": {
         const permission = event.properties as PermissionRequest
         const permission = event.properties as PermissionRequest
-        const permissions = data.permission[permission.sessionID] ?? []
+        const permissions = data.permission[permission.sessionID]
+        if (!permissions) {
+          setData("permission", permission.sessionID, [permission])
+          return
+        }
         const result = Binary.search(permissions, permission.id, (item) => item.id)
         const result = Binary.search(permissions, permission.id, (item) => item.id)
         if (result.found) setData("permission", permission.sessionID, result.index, reconcile(permission))
         if (result.found) setData("permission", permission.sessionID, result.index, reconcile(permission))
         if (!result.found)
         if (!result.found)
           setData(
           setData(
             "permission",
             "permission",
             permission.sessionID,
             permission.sessionID,
-            produce((draft = []) => void draft.splice(result.index, 0, permission)),
+            produce((draft) => void draft.splice(result.index, 0, permission)),
           )
           )
         return
         return
       }
       }
@@ -497,14 +501,18 @@ export function createServerSession(client: OpencodeClient) {
       }
       }
       case "question.asked": {
       case "question.asked": {
         const question = event.properties as QuestionRequest
         const question = event.properties as QuestionRequest
-        const questions = data.question[question.sessionID] ?? []
+        const questions = data.question[question.sessionID]
+        if (!questions) {
+          setData("question", question.sessionID, [question])
+          return
+        }
         const result = Binary.search(questions, question.id, (item) => item.id)
         const result = Binary.search(questions, question.id, (item) => item.id)
         if (result.found) setData("question", question.sessionID, result.index, reconcile(question))
         if (result.found) setData("question", question.sessionID, result.index, reconcile(question))
         if (!result.found)
         if (!result.found)
           setData(
           setData(
             "question",
             "question",
             question.sessionID,
             question.sessionID,
-            produce((draft = []) => void draft.splice(result.index, 0, question)),
+            produce((draft) => void draft.splice(result.index, 0, question)),
           )
           )
         return
         return
       }
       }