mirror of
https://github.com/snapotter-hq/SnapOtter.git
synced 2026-08-03 07:46:42 +02:00
feat: filter files by modality when importing from tool page
When clicking "Import from Files" on an image tool, only image files are shown in the library. Video tools see only videos, audio tools only audio. Uses MIME type prefix filtering (image/, video/, audio/). Document and data tools see all files since their MIME types vary.
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import { X } from "lucide-react";
|
||||
import { useState } from "react";
|
||||
import { useLocation } from "react-router-dom";
|
||||
import { FileDetails } from "@/components/files/file-details";
|
||||
import { FileList } from "@/components/files/file-list";
|
||||
import { FileUploadArea } from "@/components/files/file-upload-area";
|
||||
@@ -10,12 +11,21 @@ import { useMobile } from "@/hooks/use-mobile";
|
||||
import { usePageTitle } from "@/hooks/use-page-title";
|
||||
import { useFilesPageStore } from "@/stores/files-page-store";
|
||||
|
||||
const MODALITY_MIME_PREFIX: Record<string, string> = {
|
||||
image: "image/",
|
||||
video: "video/",
|
||||
audio: "audio/",
|
||||
};
|
||||
|
||||
export function FilesPage() {
|
||||
const { t } = useTranslation();
|
||||
usePageTitle(t.sidebar.files);
|
||||
const { activeTab, setActiveTab, selectedFileId } = useFilesPageStore();
|
||||
const isMobile = useMobile();
|
||||
const [showDetails, setShowDetails] = useState(false);
|
||||
const location = useLocation();
|
||||
const filterModality = (location.state as { filterModality?: string } | null)?.filterModality;
|
||||
const filterMimePrefix = filterModality ? MODALITY_MIME_PREFIX[filterModality] : undefined;
|
||||
|
||||
if (isMobile) {
|
||||
return (
|
||||
@@ -60,7 +70,7 @@ export function FilesPage() {
|
||||
if ((e.key === "Enter" || e.key === " ") && selectedFileId) setShowDetails(true);
|
||||
}}
|
||||
>
|
||||
<FileList />
|
||||
<FileList filterMimePrefix={filterMimePrefix} />
|
||||
</div>
|
||||
) : (
|
||||
<FileUploadArea />
|
||||
@@ -103,7 +113,7 @@ export function FilesPage() {
|
||||
<FilesNav />
|
||||
{activeTab === "recent" ? (
|
||||
<>
|
||||
<FileList />
|
||||
<FileList filterMimePrefix={filterMimePrefix} />
|
||||
<FileDetails />
|
||||
</>
|
||||
) : (
|
||||
|
||||
Reference in New Issue
Block a user