fix: attachment select extension for windows

This commit is contained in:
kangfenmao 2024-09-19 17:40:45 +08:00
parent 934ab1a374
commit d9873b4261
4 changed files with 28 additions and 4 deletions

View File

@ -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 : <FileNameText className="text-nowrap">{file.origin_name}</FileNameText>,
name: <a href={'file://' + getFileDirectory(file.path)}>{file.origin_name}</a>,
name: <a href={'file://' + FileManager.getSafePath(file)}>{file.origin_name}</a>,
size: `${(file.size / 1024 / 1024).toFixed(2)} MB`,
count: file.count,
created_at: dayjs(file.created_at).format('MM-DD HH:mm')

View File

@ -21,7 +21,16 @@ const AttachmentButton: FC<Props> = ({ 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)
}

View File

@ -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<Props> = ({ files, setFiles }) => {
<Container>
<Upload
listType="picture-card"
fileList={files.map((file) => ({ 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))}
/>
</Container>

View File

@ -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<FileType[] | null> {
@ -52,6 +53,14 @@ class FileManager {
static async allFiles(): Promise<FileType[]> {
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