import { createSignal, For, onMount, Show } from "solid-js"; import type { VaultEntry } from "../../shared/types"; import { sendMessage } from "../App"; interface TrashViewProps { onBack: () => void; onRestored: () => void; } export function TrashView(props: TrashViewProps) { const [deleted, setDeleted] = createSignal([]); const [loading, setLoading] = createSignal(true); const [confirmPurgeId, setConfirmPurgeId] = createSignal(null); const [confirmPurgeAll, setConfirmPurgeAll] = createSignal(false); onMount(async () => { await reload(); }); async function reload() { setLoading(true); const res = await sendMessage({ type: "GET_DELETED_ENTRIES" }); setDeleted((res as { ok: boolean; data?: VaultEntry[] }).data ?? []); setLoading(false); } async function restore(id: string) { await sendMessage({ type: "RESTORE_ENTRY", payload: { id } }); props.onRestored(); await reload(); } async function purge(id: string) { await sendMessage({ type: "PURGE_ENTRY", payload: { id } }); setConfirmPurgeId(null); await reload(); } async function purgeAll() { for (const entry of deleted()) { await sendMessage({ type: "PURGE_ENTRY", payload: { id: entry.id } }); } setConfirmPurgeAll(false); await reload(); } function formatDate(ts?: number): string { if (!ts) return ""; return new Date(ts).toLocaleDateString(undefined, { month: "short", day: "numeric" }); } return (
trash
loading...
Trash is empty. Deleted entries appear here before being removed permanently.
0}>

{deleted().length} {deleted().length === 1 ? "entry" : "entries"}

{(entry) => (
setConfirmPurgeId(entry.id)} aria-label="Delete permanently" > × } >
)}
); }