Sfoglia il codice sorgente

fix(desktop): prompt history nav

Adam 2 mesi fa
parent
commit
f07d4b933c
1 ha cambiato i file con 9 aggiunte e 4 eliminazioni
  1. 9 4
      packages/desktop/src/components/prompt-input.tsx

+ 9 - 4
packages/desktop/src/components/prompt-input.tsx

@@ -598,19 +598,24 @@ export const PromptInput: Component<PromptInputProps> = (props) => {
 
       const cursorPosition = getCursorPosition(editorRef)
       const textLength = promptLength(prompt.current())
+      const textContent = editorRef.textContent ?? ""
+      const isEmpty = textContent.trim() === "" || textLength <= 1
+      const hasNewlines = textContent.includes("\n")
       const inHistory = store.historyIndex >= 0
-      const atStart = cursorPosition <= 0
-      const atEnd = cursorPosition >= textLength
+      const atStart = cursorPosition <= (isEmpty ? 1 : 0)
+      const atEnd = cursorPosition >= (isEmpty ? textLength - 1 : textLength)
+      const allowUp = isEmpty || atStart || (!hasNewlines && !inHistory) || (inHistory && atEnd)
+      const allowDown = isEmpty || atEnd || (!hasNewlines && !inHistory) || (inHistory && atStart)
 
       if (event.key === "ArrowUp") {
-        if (!atStart && !(inHistory && atEnd)) return
+        if (!allowUp) return
         if (navigateHistory("up")) {
           event.preventDefault()
         }
         return
       }
 
-      if (!atEnd && !(inHistory && atStart)) return
+      if (!allowDown) return
       if (navigateHistory("down")) {
         event.preventDefault()
       }