"use client"; import { useMemo, useState } from "react"; import { useRouter } from "next/navigation"; import type { Project } from "@capakraken/shared"; import { ProjectModal } from "./ProjectModal.js"; import { ConfirmDialog } from "~/components/ui/ConfirmDialog.js"; import { usePermissions } from "~/hooks/usePermissions.js"; import { trpc } from "~/lib/trpc/client.js"; interface ProjectDetailActionsProps { project: Project; } export function ProjectDetailActions({ project }: ProjectDetailActionsProps) { const [editOpen, setEditOpen] = useState(false); const [confirmDelete, setConfirmDelete] = useState(false); const { canEdit, role } = usePermissions(); const isAdmin = role === "ADMIN"; const router = useRouter(); const { data: favoriteIds } = trpc.user.getFavoriteProjectIds.useQuery(undefined, { staleTime: 30_000 }); const isFavorite = useMemo(() => (favoriteIds ?? []).includes(project.id), [favoriteIds, project.id]); const utils = trpc.useUtils(); const toggleFav = trpc.user.toggleFavoriteProject.useMutation({ onSuccess: () => void utils.user.getFavoriteProjectIds.invalidate(), }); const deleteMutation = trpc.project.delete.useMutation({ onSuccess: () => { router.push("/projects"); }, }); return (