Просмотр исходного кода

fix(desktop): don't navigate prompt history if dirty

Adam 3 месяцев назад
Родитель
Сommit
e561f1ad68
1 измененных файлов с 11 добавлено и 0 удалено
  1. 11 0
      packages/desktop/src/components/prompt-input.tsx

+ 11 - 0
packages/desktop/src/components/prompt-input.tsx

@@ -102,6 +102,7 @@ export const PromptInput: Component<PromptInputProps> = (props) => {
     imageAttachments: ImageAttachmentPart[]
     mode: "normal" | "shell"
     applyingHistory: boolean
+    userHasEdited: boolean
   }>({
     popover: null,
     historyIndex: -1,
@@ -111,6 +112,7 @@ export const PromptInput: Component<PromptInputProps> = (props) => {
     imageAttachments: [],
     mode: "normal",
     applyingHistory: false,
+    userHasEdited: false,
   })
 
   const MAX_HISTORY = 100
@@ -139,6 +141,7 @@ export const PromptInput: Component<PromptInputProps> = (props) => {
   const applyHistoryPrompt = (p: Prompt, position: "start" | "end") => {
     const length = position === "start" ? 0 : promptLength(p)
     setStore("applyingHistory", true)
+    setStore("userHasEdited", false)
     prompt.set(p, length)
     requestAnimationFrame(() => {
       editorRef.focus()
@@ -440,6 +443,7 @@ export const PromptInput: Component<PromptInputProps> = (props) => {
 
     if (shouldReset) {
       setStore("popover", null)
+      setStore("userHasEdited", false)
       if (store.historyIndex >= 0 && !store.applyingHistory) {
         setStore("historyIndex", -1)
         setStore("savedPrompt", null)
@@ -474,6 +478,10 @@ export const PromptInput: Component<PromptInputProps> = (props) => {
       setStore("savedPrompt", null)
     }
 
+    if (!store.applyingHistory) {
+      setStore("userHasEdited", true)
+    }
+
     prompt.set(rawParts, cursorPosition)
   }
 
@@ -565,6 +573,8 @@ export const PromptInput: Component<PromptInputProps> = (props) => {
   }
 
   const navigateHistory = (direction: "up" | "down") => {
+    if (store.userHasEdited) return false
+
     const entries = history.entries
     const current = store.historyIndex
 
@@ -696,6 +706,7 @@ export const PromptInput: Component<PromptInputProps> = (props) => {
     addToHistory(currentPrompt)
     setStore("historyIndex", -1)
     setStore("savedPrompt", null)
+    setStore("userHasEdited", false)
 
     let existing = info()
     if (!existing) {