mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2026-01-01 09:49:03 +08:00
fix(AttachmentButton): Add selection state to prevent repeated file selection triggering (#9379)
fix(AttachmentButton): 添加选择状态防止重复触发文件选择 添加 selecting 状态变量以防止在文件选择过程中重复触发选择操作,避免潜在的文件选择窗口冲突
This commit is contained in:
parent
4615e97ad5
commit
0da122281e
@ -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()
|
||||
|
||||
Loading…
Reference in New Issue
Block a user