import { type IframeHTMLAttributes, useState } from "react"; import toast from "react-hot-toast"; import { Accordion, AccordionContent, AccordionItem, AccordionTrigger, } from "~/components/ui/accordion"; import { useMediaQuery } from "~/hooks/use-media-query"; import type { UsersId } from "~/schemas/public/Users"; import { api } from "~/utils/api"; import { Button } from "../ui/button"; export const EmailAccordion = ({ userId, isAdmin, }: { userId: UsersId; isAdmin: boolean; }) => { const { data } = api.comunicazioni.getEmails.useQuery({ userId, }); const utils = api.useUtils(); const { mutate: deleteEmail } = api.comunicazioni.deleteEmail.useMutation({ onSuccess: async () => { toast.success("Email eliminata con successo"); setOpenEmail("unset"); await utils.comunicazioni.getEmails.invalidate({ userId }); }, }); const [openEmail, setOpenEmail] = useState("unset"); const mobile = useMediaQuery("(max-width: 768px)"); if (!data || data.length === 0) { return Nessuna comunicazione trovata; } const iframeHeight = mobile ? 600 : 500; return ( {data.map((email) => { const isOpen = openEmail === email.id_email.toString(); return ( “{email.title}” -{" "} {new Date(email.created_at).toLocaleDateString("it-IT", { day: "2-digit", month: "2-digit", year: "numeric", hour: "2-digit", minute: "2-digit", })} {isAdmin && ( confirm( "Sei sicuro di voler eliminare questa email?", ) && deleteEmail({ id_email: email.id_email, }) } variant="destructive" > Rimuovi )} {isOpen && ( )} ); })} ); }; const LoadingEmailIframe = (props: IframeHTMLAttributes) => { const [loaded, setLoaded] = useState(false); return ( Caricamento email... {/** biome-ignore lint/a11y/noNoninteractiveElementInteractions: */} setLoaded(true)} title={props.title ?? "Email preview"} /> ); };
Caricamento email...