From 7fead6a9da86981b8357e68c00e9ffc3b3ae18d0 Mon Sep 17 00:00:00 2001 From: Gen Sato <52241300+halogen22@users.noreply.github.com> Date: Mon, 15 Dec 2025 12:18:05 +0900 Subject: [PATCH] Add file upload enabled check and new i18n message (#28946) --- .../components/base/file-uploader/hooks.ts | 23 ++++++------------- web/i18n/en-US/common.ts | 1 + web/i18n/ja-JP/common.ts | 1 + 3 files changed, 9 insertions(+), 16 deletions(-) diff --git a/web/app/components/base/file-uploader/hooks.ts b/web/app/components/base/file-uploader/hooks.ts index 521ecdbafd..baef5ff7d8 100644 --- a/web/app/components/base/file-uploader/hooks.ts +++ b/web/app/components/base/file-uploader/hooks.ts @@ -246,6 +246,11 @@ export const useFile = (fileConfig: FileUpload) => { }, [fileStore]) const handleLocalFileUpload = useCallback((file: File) => { + // Check file upload enabled + if (!fileConfig.enabled) { + notify({ type: 'error', message: t('common.fileUploader.uploadDisabled') }) + return + } if (!isAllowedFileExtension(file.name, file.type, fileConfig.allowed_file_types || [], fileConfig.allowed_file_extensions || [])) { notify({ type: 'error', message: `${t('common.fileUploader.fileExtensionNotSupport')} ${file.type}` }) return @@ -298,30 +303,16 @@ export const useFile = (fileConfig: FileUpload) => { false, ) reader.readAsDataURL(file) - }, [checkSizeLimit, notify, t, handleAddFile, handleUpdateFile, params.token, fileConfig?.allowed_file_types, fileConfig?.allowed_file_extensions]) + }, [checkSizeLimit, notify, t, handleAddFile, handleUpdateFile, params.token, fileConfig?.allowed_file_types, fileConfig?.allowed_file_extensions, fileConfig?.enabled]) const handleClipboardPasteFile = useCallback((e: ClipboardEvent) => { const file = e.clipboardData?.files[0] const text = e.clipboardData?.getData('text/plain') if (file && !text) { e.preventDefault() - - const allowedFileTypes = fileConfig.allowed_file_types || [] - const fileType = getSupportFileType(file.name, file.type, allowedFileTypes?.includes(SupportUploadFileTypes.custom)) - const isFileTypeAllowed = allowedFileTypes.includes(fileType) - - // Check if file type is in allowed list - if (!isFileTypeAllowed || !fileConfig.enabled) { - notify({ - type: 'error', - message: t('common.fileUploader.fileExtensionNotSupport'), - }) - return - } - handleLocalFileUpload(file) } - }, [handleLocalFileUpload, fileConfig, notify, t]) + }, [handleLocalFileUpload]) const [isDragActive, setIsDragActive] = useState(false) const handleDragFileEnter = useCallback((e: React.DragEvent) => { diff --git a/web/i18n/en-US/common.ts b/web/i18n/en-US/common.ts index 26c6ed89f2..11cc866fde 100644 --- a/web/i18n/en-US/common.ts +++ b/web/i18n/en-US/common.ts @@ -743,6 +743,7 @@ const translation = { pasteFileLinkInvalid: 'Invalid file link', fileExtensionNotSupport: 'File extension not supported', fileExtensionBlocked: 'This file type is blocked for security reasons', + uploadDisabled: 'File upload is disabled', }, tag: { placeholder: 'All Tags', diff --git a/web/i18n/ja-JP/common.ts b/web/i18n/ja-JP/common.ts index 984161a114..2f7bb13fb5 100644 --- a/web/i18n/ja-JP/common.ts +++ b/web/i18n/ja-JP/common.ts @@ -747,6 +747,7 @@ const translation = { uploadFromComputerReadError: 'ファイルの読み取りに失敗しました。もう一度やり直してください。', fileExtensionNotSupport: 'ファイル拡張子はサポートされていません', pasteFileLinkInvalid: '無効なファイルリンク', + uploadDisabled: 'ファイルアップロードは無効です', fileExtensionBlocked: 'このファイルタイプは、セキュリティ上の理由でブロックされています', }, license: {