From d9873b4261b18b9c699e3b338a22e700dbf17227 Mon Sep 17 00:00:00 2001 From: kangfenmao Date: Thu, 19 Sep 2024 17:40:45 +0800 Subject: [PATCH] fix: attachment select extension for windows --- src/renderer/src/pages/files/FilesPage.tsx | 4 ++-- .../src/pages/home/Inputbar/AttachmentButton.tsx | 11 ++++++++++- .../src/pages/home/Inputbar/AttachmentPreview.tsx | 8 +++++++- src/renderer/src/services/file.ts | 9 +++++++++ 4 files changed, 28 insertions(+), 4 deletions(-) diff --git a/src/renderer/src/pages/files/FilesPage.tsx b/src/renderer/src/pages/files/FilesPage.tsx index 60872c2e..c50b2677 100644 --- a/src/renderer/src/pages/files/FilesPage.tsx +++ b/src/renderer/src/pages/files/FilesPage.tsx @@ -1,8 +1,8 @@ import { Navbar, NavbarCenter } from '@renderer/components/app/Navbar' import { VStack } from '@renderer/components/Layout' import db from '@renderer/databases' +import FileManager from '@renderer/services/file' import { FileType, FileTypes } from '@renderer/types' -import { getFileDirectory } from '@renderer/utils' import { Image, Table } from 'antd' import dayjs from 'dayjs' import { useLiveQuery } from 'dexie-react-hooks' @@ -20,7 +20,7 @@ const FilesPage: FC = () => { return { key: file.id, file: isImage ? ImageView : {file.origin_name}, - name: {file.origin_name}, + name: {file.origin_name}, size: `${(file.size / 1024 / 1024).toFixed(2)} MB`, count: file.count, created_at: dayjs(file.created_at).format('MM-DD HH:mm') diff --git a/src/renderer/src/pages/home/Inputbar/AttachmentButton.tsx b/src/renderer/src/pages/home/Inputbar/AttachmentButton.tsx index 5fb0ebf2..34e7df5d 100644 --- a/src/renderer/src/pages/home/Inputbar/AttachmentButton.tsx +++ b/src/renderer/src/pages/home/Inputbar/AttachmentButton.tsx @@ -21,7 +21,16 @@ const AttachmentButton: FC = ({ model, files, setFiles, ToolbarButton }) if (files.length > 0) { return setFiles([]) } - const _files = await window.api.file.select({ filters: [{ name: 'Files', extensions }] }) + + const _files = await window.api.file.select({ + filters: [ + { + name: 'Files', + extensions: extensions.map((i) => i.replace('.', '')) + } + ] + }) + _files && setFiles(_files) } diff --git a/src/renderer/src/pages/home/Inputbar/AttachmentPreview.tsx b/src/renderer/src/pages/home/Inputbar/AttachmentPreview.tsx index 480a64bd..cfd8ec7b 100644 --- a/src/renderer/src/pages/home/Inputbar/AttachmentPreview.tsx +++ b/src/renderer/src/pages/home/Inputbar/AttachmentPreview.tsx @@ -1,3 +1,4 @@ +import FileManager from '@renderer/services/file' import { FileType } from '@renderer/types' import { Upload } from 'antd' import { isEmpty } from 'lodash' @@ -18,7 +19,12 @@ const AttachmentPreview: FC = ({ files, setFiles }) => { ({ uid: file.id, url: 'file://' + file.path, status: 'done', name: file.name }))} + fileList={files.map((file) => ({ + uid: file.id, + url: 'file://' + FileManager.getSafePath(file), + status: 'done', + name: file.name + }))} onRemove={(item) => setFiles(files.filter((file) => item.uid !== file.id))} /> diff --git a/src/renderer/src/services/file.ts b/src/renderer/src/services/file.ts index 014c6fe3..f2cd155e 100644 --- a/src/renderer/src/services/file.ts +++ b/src/renderer/src/services/file.ts @@ -1,5 +1,6 @@ import db from '@renderer/databases' import { FileType } from '@renderer/types' +import { getFileDirectory } from '@renderer/utils' class FileManager { static async selectFiles(options?: Electron.OpenDialogOptions): Promise { @@ -52,6 +53,14 @@ class FileManager { static async allFiles(): Promise { return db.files.toArray() } + + static isDangerFile(file: FileType) { + return ['.sh', '.bat', '.cmd', '.ps1'].includes(file.ext) + } + + static getSafePath(file: FileType) { + return this.isDangerFile(file) ? getFileDirectory(file.path) : file.path + } } export default FileManager