mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2026-01-11 08:19:01 +08:00
fix: attachment select extension for windows
This commit is contained in:
parent
934ab1a374
commit
d9873b4261
@ -1,8 +1,8 @@
|
|||||||
import { Navbar, NavbarCenter } from '@renderer/components/app/Navbar'
|
import { Navbar, NavbarCenter } from '@renderer/components/app/Navbar'
|
||||||
import { VStack } from '@renderer/components/Layout'
|
import { VStack } from '@renderer/components/Layout'
|
||||||
import db from '@renderer/databases'
|
import db from '@renderer/databases'
|
||||||
|
import FileManager from '@renderer/services/file'
|
||||||
import { FileType, FileTypes } from '@renderer/types'
|
import { FileType, FileTypes } from '@renderer/types'
|
||||||
import { getFileDirectory } from '@renderer/utils'
|
|
||||||
import { Image, Table } from 'antd'
|
import { Image, Table } from 'antd'
|
||||||
import dayjs from 'dayjs'
|
import dayjs from 'dayjs'
|
||||||
import { useLiveQuery } from 'dexie-react-hooks'
|
import { useLiveQuery } from 'dexie-react-hooks'
|
||||||
@ -20,7 +20,7 @@ const FilesPage: FC = () => {
|
|||||||
return {
|
return {
|
||||||
key: file.id,
|
key: file.id,
|
||||||
file: isImage ? ImageView : <FileNameText className="text-nowrap">{file.origin_name}</FileNameText>,
|
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`,
|
size: `${(file.size / 1024 / 1024).toFixed(2)} MB`,
|
||||||
count: file.count,
|
count: file.count,
|
||||||
created_at: dayjs(file.created_at).format('MM-DD HH:mm')
|
created_at: dayjs(file.created_at).format('MM-DD HH:mm')
|
||||||
|
|||||||
@ -21,7 +21,16 @@ const AttachmentButton: FC<Props> = ({ model, files, setFiles, ToolbarButton })
|
|||||||
if (files.length > 0) {
|
if (files.length > 0) {
|
||||||
return setFiles([])
|
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)
|
_files && setFiles(_files)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
import FileManager from '@renderer/services/file'
|
||||||
import { FileType } from '@renderer/types'
|
import { FileType } from '@renderer/types'
|
||||||
import { Upload } from 'antd'
|
import { Upload } from 'antd'
|
||||||
import { isEmpty } from 'lodash'
|
import { isEmpty } from 'lodash'
|
||||||
@ -18,7 +19,12 @@ const AttachmentPreview: FC<Props> = ({ files, setFiles }) => {
|
|||||||
<Container>
|
<Container>
|
||||||
<Upload
|
<Upload
|
||||||
listType="picture-card"
|
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))}
|
onRemove={(item) => setFiles(files.filter((file) => item.uid !== file.id))}
|
||||||
/>
|
/>
|
||||||
</Container>
|
</Container>
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
import db from '@renderer/databases'
|
import db from '@renderer/databases'
|
||||||
import { FileType } from '@renderer/types'
|
import { FileType } from '@renderer/types'
|
||||||
|
import { getFileDirectory } from '@renderer/utils'
|
||||||
|
|
||||||
class FileManager {
|
class FileManager {
|
||||||
static async selectFiles(options?: Electron.OpenDialogOptions): Promise<FileType[] | null> {
|
static async selectFiles(options?: Electron.OpenDialogOptions): Promise<FileType[] | null> {
|
||||||
@ -52,6 +53,14 @@ class FileManager {
|
|||||||
static async allFiles(): Promise<FileType[]> {
|
static async allFiles(): Promise<FileType[]> {
|
||||||
return db.files.toArray()
|
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
|
export default FileManager
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user