"use client"; import { useTransition } from "react"; import { useSelection } from "./SelectionProvider"; import { useRouter } from "next/navigation"; import { Trash2, X, ListChecks } from "lucide-react"; import { deleteImages, bulkSetWatched, bulkSetMark } from "@/app/actions/bulk"; import { useUndoDeleteToast } from "@/components/select/UndoDeleteToast"; import { useSettings } from "@/components/settings/SettingsProvider"; import { MarkAsMenu } from "./MarkAsMenu"; import { useWatchQueue } from "@/components/queue/WatchQueueProvider"; import { dispatchQueueRemove } from "@/components/queue/watchQueueEvents"; import { ListVideo } from "lucide-react"; export function SelectionBar() { const { ids, clear, visibleIds, selectMany } = useSelection(); const { settings } = useSettings(); const { show: showUndo } = useUndoDeleteToast(); const [pending, start] = useTransition(); const router = useRouter(); const queue = useWatchQueue(); if (ids.size === 0) return null; const count = ids.size; const allVisibleSelected = visibleIds.length > 0 && visibleIds.every((id) => ids.has(id)); const onDelete = (e: React.MouseEvent) => { const permanent = e.shiftKey || !settings.useRecycleBin; if (permanent) { if (!confirm(`Permanently delete ${count} cover${count === 1 ? "" : "s"}? Cannot be undone.`)) return; } const targetIds = Array.from(ids); start(async () => { await deleteImages(targetIds, permanent ? { permanent: true } : undefined); clear(); router.refresh(); if (!permanent) showUndo(targetIds); }); }; const onSelectAllToggle = () => { if (allVisibleSelected) clear(); else selectMany(visibleIds); }; const onMarkAs = (action: "watched" | "unwatched" | "vip" | "favorite" | "unmark") => { const targetIds = Array.from(ids); start(async () => { try { if (action === "watched") { await bulkSetWatched(targetIds, true); dispatchQueueRemove(targetIds); } else if (action === "unwatched") await bulkSetWatched(targetIds, false); else if (action === "vip") await bulkSetMark(targetIds, "vip"); else if (action === "favorite") await bulkSetMark(targetIds, "favorite"); else if (action === "unmark") await bulkSetMark(targetIds, "unmarked"); router.refresh(); } catch (err) { console.error(`[bulk ${action}] failed:`, err); } }); }; return (
{count} selected
{visibleIds.length > 0 && ( )}
); }