summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAdam <[email protected]>2026-01-22 22:02:04 -0600
committerAdam <[email protected]>2026-01-23 05:18:57 -0600
commit2a2d800ac4e74ed6f29bd763a8f1d5a2d34790b5 (patch)
tree6f2dd87d913eee7eedb46b4bcb429405baf0d6d9
parent4afb46f571e85d0fb4352705c5cc1105985ef745 (diff)
downloadopencode-2a2d800ac4e74ed6f29bd763a8f1d5a2d34790b5.tar.gz
opencode-2a2d800ac4e74ed6f29bd763a8f1d5a2d34790b5.zip
fix: type error
-rw-r--r--packages/app/src/components/prompt-input.tsx39
-rw-r--r--packages/app/src/context/sync.tsx8
2 files changed, 38 insertions, 9 deletions
diff --git a/packages/app/src/components/prompt-input.tsx b/packages/app/src/components/prompt-input.tsx
index e4a5a5150..5c64b87cc 100644
--- a/packages/app/src/components/prompt-input.tsx
+++ b/packages/app/src/components/prompt-input.tsx
@@ -1388,10 +1388,27 @@ export const PromptInput: Component<PromptInputProps> = (props) => {
model,
}
- const setSyncStore = sessionDirectory === projectDirectory ? sync.set : globalSync.child(sessionDirectory)[1]
-
const addOptimisticMessage = () => {
- setSyncStore(
+ if (sessionDirectory === projectDirectory) {
+ sync.set(
+ produce((draft) => {
+ const messages = draft.message[session.id]
+ if (!messages) {
+ draft.message[session.id] = [optimisticMessage]
+ } else {
+ const result = Binary.search(messages, messageID, (m) => m.id)
+ messages.splice(result.index, 0, optimisticMessage)
+ }
+ draft.part[messageID] = optimisticParts
+ .filter((p) => !!p?.id)
+ .slice()
+ .sort((a, b) => a.id.localeCompare(b.id))
+ }),
+ )
+ return
+ }
+
+ globalSync.child(sessionDirectory)[1](
produce((draft) => {
const messages = draft.message[session.id]
if (!messages) {
@@ -1409,7 +1426,21 @@ export const PromptInput: Component<PromptInputProps> = (props) => {
}
const removeOptimisticMessage = () => {
- setSyncStore(
+ if (sessionDirectory === projectDirectory) {
+ sync.set(
+ produce((draft) => {
+ const messages = draft.message[session.id]
+ if (messages) {
+ const result = Binary.search(messages, messageID, (m) => m.id)
+ if (result.found) messages.splice(result.index, 1)
+ }
+ delete draft.part[messageID]
+ }),
+ )
+ return
+ }
+
+ globalSync.child(sessionDirectory)[1](
produce((draft) => {
const messages = draft.message[session.id]
if (messages) {
diff --git a/packages/app/src/context/sync.tsx b/packages/app/src/context/sync.tsx
index 96872584e..58744045b 100644
--- a/packages/app/src/context/sync.tsx
+++ b/packages/app/src/context/sync.tsx
@@ -101,15 +101,13 @@ export const { use: useSync, provider: SyncProvider } = createSimpleContext({
})
}
- const set: (...args: Parameters<Setter>) => ReturnType<Setter> = (...args) => {
- return current()[1](...args)
- }
-
return {
get data() {
return current()[0]
},
- set,
+ get set(): Setter {
+ return current()[1]
+ },
get status() {
return current()[0].status
},