import type { Table } from "@tanstack/react-table"; import { format } from "date-fns"; import { NotebookPen, Toolbox } from "lucide-react"; import Image from "next/image"; import { type RefObject, useState } from "react"; import toast from "react-hot-toast"; import LoadingButton from "~/components/custom_ui/loading-button"; import { AdminActions, UserActions, } from "~/components/servizio/annuncio_actions"; import { Card, CardContent, CardHeader, CardTitle } from "~/components/ui/card"; import { Textarea } from "~/components/ui/textarea"; import { useMediaQuery } from "~/hooks/use-media-query"; import { handleConsegna } from "~/lib/annuncio_details"; import { getStorageUrl } from "~/lib/storage_utils"; import { MutationPageRestore } from "~/lib/tableUtils"; import { cn, formatCurrency } from "~/lib/utils"; import { useTranslation } from "~/providers/I18nProvider"; import { useServizio, useServizioAnnuncio } from "~/providers/ServizioProvider"; import type { AnnunciId } from "~/schemas/public/Annunci"; import type { ServizioServizioId } from "~/schemas/public/Servizio"; import type { AnnuncioRicerca } from "~/server/controllers/annunci.controller"; import type { RichiesteData, ServizioAnnuncioData, } from "~/server/controllers/servizio.controller"; import { api } from "~/utils/api"; import { Button } from "../ui/button"; import { Collapsible, CollapsibleContent, CollapsibleTrigger, } from "../ui/collapsible"; import { AnnuncioDettaglio, TipoBadge } from "./annuncio_dettaglio"; export const AnnuncioCard = ({ className }: { className?: string }) => { const { isAdmin } = useServizio(); const { data } = useServizioAnnuncio(); return ( ) : ( ) } isAdmin={isAdmin} /> ); }; const AnnuncioCardContent = ({ interactions, className, data, isAdmin, }: { interactions?: React.ReactNode; className?: string; data: ServizioAnnuncioData; isAdmin: boolean; }) => { return ( Annuncio {data.codice}
{interactions}
{isAdmin && ( )}
); }; export const AnnuncioCardRichieste = ({ tableRef, data, }: { tableRef: RefObject | null>; data: ServizioAnnuncioData; }) => { const [newNote, setNewNote] = useState(data.note); const utils = api.useUtils(); const { onMutate, onSettled } = MutationPageRestore(tableRef); const { mutate, isPending } = api.servizio.updateServizioAnnunci.useMutation({ onMutate, onSettled, onSuccess: async () => { toast.success("Note aggiornate"); await utils.servizio.invalidate(); }, onError: () => { toast.error("Errore nell'aggiornamento note"); }, }); const isDesktop = useMediaQuery("(min-width: 40rem)"); return ( Annuncio {data.codice}

Visto contatti:{" "} {data.open_contatti_at ? format(data.open_contatti_at, "dd/MM/yyyy HH:mm") : "Non ancora visto"}

{/*TODO CAPIRE COSA AGGIUNGERE */}