diff --git a/src/renderer/src/pages/files/FilesPage.tsx b/src/renderer/src/pages/files/FilesPage.tsx index 596c083f..4ff9e843 100644 --- a/src/renderer/src/pages/files/FilesPage.tsx +++ b/src/renderer/src/pages/files/FilesPage.tsx @@ -27,16 +27,26 @@ import ContentView from './ContentView' const FilesPage: FC = () => { const { t } = useTranslation() - const [fileType, setFileType] = useState('all') + const [fileType, setFileType] = useState('document') const { providers } = useProviders() const geminiProviders = providers.filter((provider) => provider.type === 'gemini') + const tempFilesSort = (files: FileType[]) => { + return files.sort((a, b) => { + const aIsTemp = a.origin_name.startsWith('temp_file') + const bIsTemp = b.origin_name.startsWith('temp_file') + if (aIsTemp && !bIsTemp) return 1 + if (!aIsTemp && bIsTemp) return -1 + return 0 + }) + } + const files = useLiveQuery(() => { if (fileType === 'all') { - return db.files.orderBy('count').toArray() + return db.files.orderBy('count').toArray().then(tempFilesSort) } - return db.files.where('type').equals(fileType).sortBy('count') + return db.files.where('type').equals(fileType).sortBy('count').then(tempFilesSort) }, [fileType]) const handleDelete = async (fileId: string) => { @@ -169,15 +179,15 @@ const FilesPage: FC = () => { ) const menuItems = [ - { key: 'all', label: t('files.all'), icon: }, + { key: FileTypes.DOCUMENT, label: t('files.document'), icon: }, { key: FileTypes.IMAGE, label: t('files.image'), icon: }, { key: FileTypes.TEXT, label: t('files.text'), icon: }, - { key: FileTypes.DOCUMENT, label: t('files.document'), icon: }, ...geminiProviders.map((provider) => ({ key: 'gemini_' + provider.id, label: provider.name, icon: - })) + })), + { key: 'all', label: t('files.all'), icon: } ].filter(Boolean) as MenuProps['items'] return (