import { useEffect, useRef, useState } from "react"; import { useGalleryStore } from "../store"; /** * In-view folder scope picker for feature views (Timeline / Explore / * Duplicates). Changes the scope via setViewFolderScope, which keeps the * current view active — unlike sidebar folder clicks, which jump to Gallery. */ export function FolderScopeDropdown() { const [open, setOpen] = useState(false); const ref = useRef(null); const folders = useGalleryStore((state) => state.folders); const selectedFolderId = useGalleryStore((state) => state.selectedFolderId); const setViewFolderScope = useGalleryStore((state) => state.setViewFolderScope); useEffect(() => { const close = (e: MouseEvent) => { if (!ref.current?.contains(e.target as Node)) setOpen(false); }; window.addEventListener("pointerdown", close); return () => window.removeEventListener("pointerdown", close); }, []); const currentLabel = selectedFolderId === null ? "All Media" : folders.find((folder) => folder.id === selectedFolderId)?.name ?? "All Media"; const select = (folderId: number | null) => { setViewFolderScope(folderId); setOpen(false); }; return (
{open ? (
{folders.map((folder) => { const active = selectedFolderId === folder.id; return ( ); })}
) : null}
); }