From 5391ad00e7925bcc4f3f6d0d9c4ac4bd7c91fd15 Mon Sep 17 00:00:00 2001 From: Marco Pedone Date: Fri, 16 Jan 2026 11:53:10 +0100 Subject: [PATCH] chore: add confirmation dialog for removing announcements and refactor mutation handling --- .../src/components/servizio/main.tsx | 65 ++++++++++++++----- 1 file changed, 50 insertions(+), 15 deletions(-) diff --git a/apps/infoalloggi/src/components/servizio/main.tsx b/apps/infoalloggi/src/components/servizio/main.tsx index 1cbe3ab..b241207 100644 --- a/apps/infoalloggi/src/components/servizio/main.tsx +++ b/apps/infoalloggi/src/components/servizio/main.tsx @@ -1,5 +1,5 @@ import { add } from "date-fns"; -import { ArrowRight, Package, PackageCheck } from "lucide-react"; +import { ArrowRight, Package, PackageCheck, Trash2 } from "lucide-react"; import Link from "next/link"; import { useRouter } from "next/router"; import { useEffect } from "react"; @@ -24,6 +24,7 @@ import { useServizio, } from "~/providers/ServizioProvider"; import { api } from "~/utils/api"; +import { Confirm } from "../confirm"; import { AlarmClockSVG } from "../svgs"; import { AnnunciCompatibili } from "./compatibili_dialog"; @@ -64,17 +65,6 @@ const ServizioCard = ({ export const ServizioContent = () => { const { servizio, isAdmin, userId, servizioId } = useServizio(); - const utils = api.useUtils(); - const { mutate: updateServizio } = api.servizio.updateServizio.useMutation({ - onError: (error) => { - toast.error(error.message); - }, - onSuccess: async () => { - toast.success("Servizio modificato con successo"); - await utils.servizio.getAllServizioAnnunci.invalidate({ userId }); - await utils.servizio.getPacksSolution.invalidate({ servizioId }); - }, - }); const router = useRouter(); useEffect(() => { @@ -125,6 +115,30 @@ export const ServizioContent = () => { } if (!servizio.isOkAcconto || servizio.decorrenza === null) { + const utils = api.useUtils(); + const { mutate: updateServizio } = api.servizio.updateServizio.useMutation({ + onError: (error) => { + toast.error(error.message); + }, + onSuccess: async () => { + toast.success("Servizio modificato con successo"); + await utils.servizio.getAllServizioAnnunci.invalidate({ userId }); + await utils.servizio.getPacksSolution.invalidate({ servizioId }); + }, + }); + const { mutate } = api.servizio.removeAnnuncioServizio.useMutation({ + onError: (error) => { + console.error(error); + toast.error("Errore durante la rimozione dell'annuncio"); + }, + onSuccess: async () => { + await utils.servizio.getAllServizioAnnunci.invalidate({ userId }); + await utils.servizio.getCompatibileAnnunci.invalidate({ + servizioId, + }); + toast.success("Annuncio rimosso"); + }, + }); return ( {

{servizio.annunci.map((data) => ( -
+
{ : null, }} /> + {isAdmin && ( + { + mutate({ + annuncioId: data.annunci_id, + servizioId: servizio.servizio_id, + }); + }} + title="Rimuovi Annuncio" + > + + + )}
))} {servizio.annunci.length % 2 === 1 && ( -
+
)}
@@ -325,7 +360,7 @@ export const ServizioContent = () => { ); })} {servizio.annunci.length % 2 === 1 && ( -
+
)}