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

Desktop: Fix Paste image on empty input (#7130)

Daniel Polito 1 месяц назад
Родитель
Сommit
2d5b9a5cc6
1 измененных файлов с 6 добавлено и 7 удалено
  1. 6 7
      packages/app/src/components/prompt-input.tsx

+ 6 - 7
packages/app/src/components/prompt-input.tsx

@@ -248,6 +248,8 @@ export const PromptInput: Component<PromptInputProps> = (props) => {
     }
     }
   }
   }
 
 
+  const isFocused = createFocusSignal(() => editorRef)
+
   createEffect(() => {
   createEffect(() => {
     params.id
     params.id
     editorRef.focus()
     editorRef.focus()
@@ -258,7 +260,6 @@ export const PromptInput: Component<PromptInputProps> = (props) => {
     onCleanup(() => clearInterval(interval))
     onCleanup(() => clearInterval(interval))
   })
   })
 
 
-  const isFocused = createFocusSignal(() => editorRef)
   const [composing, setComposing] = createSignal(false)
   const [composing, setComposing] = createSignal(false)
   const isImeComposing = (event: KeyboardEvent) => event.isComposing || composing() || event.keyCode === 229
   const isImeComposing = (event: KeyboardEvent) => event.isComposing || composing() || event.keyCode === 229
 
 
@@ -292,12 +293,13 @@ export const PromptInput: Component<PromptInputProps> = (props) => {
     const clipboardData = event.clipboardData
     const clipboardData = event.clipboardData
     if (!clipboardData) return
     if (!clipboardData) return
 
 
+    event.preventDefault()
+    event.stopPropagation()
+
     const items = Array.from(clipboardData.items)
     const items = Array.from(clipboardData.items)
     const imageItems = items.filter((item) => ACCEPTED_FILE_TYPES.includes(item.type))
     const imageItems = items.filter((item) => ACCEPTED_FILE_TYPES.includes(item.type))
 
 
     if (imageItems.length > 0) {
     if (imageItems.length > 0) {
-      event.preventDefault()
-      event.stopPropagation()
       for (const item of imageItems) {
       for (const item of imageItems) {
         const file = item.getAsFile()
         const file = item.getAsFile()
         if (file) await addImageAttachment(file)
         if (file) await addImageAttachment(file)
@@ -305,8 +307,6 @@ export const PromptInput: Component<PromptInputProps> = (props) => {
       return
       return
     }
     }
 
 
-    event.preventDefault()
-    event.stopPropagation()
     const plainText = clipboardData.getData("text/plain") ?? ""
     const plainText = clipboardData.getData("text/plain") ?? ""
     addPart({ type: "text", content: plainText, start: 0, end: 0 })
     addPart({ type: "text", content: plainText, start: 0, end: 0 })
   }
   }
@@ -347,13 +347,11 @@ export const PromptInput: Component<PromptInputProps> = (props) => {
   }
   }
 
 
   onMount(() => {
   onMount(() => {
-    editorRef.addEventListener("paste", handlePaste)
     document.addEventListener("dragover", handleGlobalDragOver)
     document.addEventListener("dragover", handleGlobalDragOver)
     document.addEventListener("dragleave", handleGlobalDragLeave)
     document.addEventListener("dragleave", handleGlobalDragLeave)
     document.addEventListener("drop", handleGlobalDrop)
     document.addEventListener("drop", handleGlobalDrop)
   })
   })
   onCleanup(() => {
   onCleanup(() => {
-    editorRef.removeEventListener("paste", handlePaste)
     document.removeEventListener("dragover", handleGlobalDragOver)
     document.removeEventListener("dragover", handleGlobalDragOver)
     document.removeEventListener("dragleave", handleGlobalDragLeave)
     document.removeEventListener("dragleave", handleGlobalDragLeave)
     document.removeEventListener("drop", handleGlobalDrop)
     document.removeEventListener("drop", handleGlobalDrop)
@@ -1508,6 +1506,7 @@ export const PromptInput: Component<PromptInputProps> = (props) => {
             }}
             }}
             contenteditable="true"
             contenteditable="true"
             onInput={handleInput}
             onInput={handleInput}
+            onPaste={handlePaste}
             onCompositionStart={() => setComposing(true)}
             onCompositionStart={() => setComposing(true)}
             onCompositionEnd={() => setComposing(false)}
             onCompositionEnd={() => setComposing(false)}
             onKeyDown={handleKeyDown}
             onKeyDown={handleKeyDown}