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