"use client";
import { ListChecks } from "lucide-react";
import { useOptimistic, useTransition } from "react";
import type { ListShareData, ListShareItem } from "../server/share-queries";
import { toggleShareListItem } from "../server/share-actions";
import { ShareEyebrow } from "@/components/share/share-eyebrow";
export function ListSharedView({
data,
canWrite,
token,
}: {
data: ListShareData;
canWrite: boolean;
token: string;
}) {
const [optimisticItems, setOptimisticItems] = useOptimistic(
data.items,
(current: ListShareItem[], { id, done }: { id: string; done: boolean }) =>
current.map((item) => (item.id === id ? { ...item, done } : item)),
);
const [, startTransition] = useTransition();
function toggle(item: ListShareItem) {
if (!canWrite) return;
const next = !item.done;
startTransition(async () => {
setOptimisticItems({ id: item.id, done: next });
await toggleShareListItem(token, item.id);
});
}
const open = optimisticItems.filter((i) => !i.done);
const done = optimisticItems.filter((i) => i.done);
return (
<>
{data.type}
{optimisticItems.length === 0 ? (This list is empty.
) : (