fix(AttachmentButton): Add selection state to prevent repeated file selection triggering (#9379)

fix(AttachmentButton): 添加选择状态防止重复触发文件选择

添加 selecting 状态变量以防止在文件选择过程中重复触发选择操作,避免潜在的文件选择窗口冲突
This commit is contained in:
Phantom 2025-08-21 15:09:39 +08:00 committed by GitHub
parent 4615e97ad5
commit 0da122281e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -2,7 +2,7 @@ import { FileMetadata, FileType } from '@renderer/types'
import { filterSupportedFiles } from '@renderer/utils/file'
import { Tooltip } from 'antd'
import { Paperclip } from 'lucide-react'
import { FC, useCallback, useImperativeHandle } from 'react'
import { FC, useCallback, useImperativeHandle, useState } from 'react'
import { useTranslation } from 'react-i18next'
export interface AttachmentButtonRef {
@ -29,11 +29,16 @@ const AttachmentButton: FC<Props> = ({
disabled
}) => {
const { t } = useTranslation()
const [selecting, setSelecting] = useState<boolean>(false)
const onSelectFile = useCallback(async () => {
if (selecting) {
return
}
// when the number of extensions is greater than 20, use *.* to avoid selecting window lag
const useAllFiles = extensions.length > 20
setSelecting(true)
const _files: FileMetadata[] = await window.api.file.select({
properties: ['openFile', 'multiSelections'],
filters: [
@ -43,6 +48,7 @@ const AttachmentButton: FC<Props> = ({
}
]
})
setSelecting(false)
if (_files) {
if (!useAllFiles) {
@ -63,7 +69,7 @@ const AttachmentButton: FC<Props> = ({
})
}
}
}, [extensions, files, setFiles, t])
}, [extensions, files, selecting, setFiles, t])
const openQuickPanel = useCallback(() => {
onSelectFile()