feat(inputbar): drop text into inputbar (#8579)

feat(输入栏): 添加从拖拽事件获取文本的功能

新增getTextFromDropEvent工具函数,用于从拖拽事件中提取文本数据
在Inputbar组件中集成该功能,支持拖拽文本到输入框
This commit is contained in:
Phantom 2025-07-28 01:10:57 +08:00 committed by GitHub
parent eb309563a9
commit 5bafb3f1b7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 15 additions and 2 deletions

View File

@ -37,7 +37,12 @@ import { Assistant, FileType, FileTypes, KnowledgeBase, KnowledgeItem, Model, To
import type { MessageInputBaseParams } from '@renderer/types/newMessage'
import { classNames, delay, formatFileSize, getFileExtension } from '@renderer/utils'
import { formatQuotedText } from '@renderer/utils/formats'
import { getFilesFromDropEvent, getSendMessageShortcutLabel, isSendMessageKeyPressed } from '@renderer/utils/input'
import {
getFilesFromDropEvent,
getSendMessageShortcutLabel,
getTextFromDropEvent,
isSendMessageKeyPressed
} from '@renderer/utils/input'
import { getLanguageByLangcode } from '@renderer/utils/translate'
import { documentExts, imageExts, textExts } from '@shared/config/constant'
import { IpcChannel } from '@shared/IpcChannel'
@ -567,6 +572,10 @@ const Inputbar: FC<Props> = ({ assistant: _assistant, setActiveTopic, topic }) =
e.stopPropagation()
setIsFileDragging(false)
const data = await getTextFromDropEvent(e)
setText(text + data)
const files = await getFilesFromDropEvent(e).catch((err) => {
logger.error('handleDrop:', err)
return null
@ -591,7 +600,7 @@ const Inputbar: FC<Props> = ({ assistant: _assistant, setActiveTopic, topic }) =
}
}
},
[supportedExts, t]
[supportedExts, t, text]
)
const onTranslated = (translatedText: string) => {

View File

@ -5,6 +5,10 @@ import { FileMetadata } from '@renderer/types'
const logger = loggerService.withContext('Utils:Input')
export const getTextFromDropEvent = async (e: React.DragEvent<HTMLDivElement>): Promise<string> => {
return e.dataTransfer.getData('text')
}
export const getFilesFromDropEvent = async (e: React.DragEvent<HTMLDivElement>): Promise<FileMetadata[]> => {
if (e.dataTransfer.files.length > 0) {
// 使用新的API获取文件路径