From 054b9eff9aa80b8679baa425dc1bab0b015d2809 Mon Sep 17 00:00:00 2001 From: Marco Pedone Date: Fri, 17 Oct 2025 19:48:28 +0200 Subject: [PATCH] fix: improve revalidation logic by decoding path and invalidating cache after updates --- apps/infoalloggi/src/forms/FormEditAnnuncio.tsx | 8 ++++++++ apps/infoalloggi/src/pages/api/revalidation.ts | 2 +- .../src/pages/area-riservata/admin/annunci.tsx | 4 +++- apps/infoalloggi/src/server/utils/revalidationHelper.ts | 4 +++- 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/apps/infoalloggi/src/forms/FormEditAnnuncio.tsx b/apps/infoalloggi/src/forms/FormEditAnnuncio.tsx index 8e582ff..b5db18c 100644 --- a/apps/infoalloggi/src/forms/FormEditAnnuncio.tsx +++ b/apps/infoalloggi/src/forms/FormEditAnnuncio.tsx @@ -135,12 +135,20 @@ export const AnnuncioEditForm = ({ data }: { data: Annunci }) => { const { mutateAsync: revalidate } = api.settings.revalidateAnnuncio.useMutation({ onSettled: async () => { + await utils.annunci.getAnnuncio.invalidate({ cod: data.codice }); + await utils.annunci.getAnnuncioById_rawImgUrls.invalidate({ + id: data.id, + }); toast.success("Revalidazione completata"); }, }); const { mutateAsync: update } = api.settings.updateAnnuncio.useMutation({ onSettled: async () => { + await utils.annunci.getAnnuncio.invalidate({ cod: data.codice }); + await utils.annunci.getAnnuncioById_rawImgUrls.invalidate({ + id: data.id, + }); toast.success( "L'aggiornamento dell'annuncio è stata richiesta con successo,\n potrebbero volerci alcuni minuti prima che le modifiche siano visibili.", { diff --git a/apps/infoalloggi/src/pages/api/revalidation.ts b/apps/infoalloggi/src/pages/api/revalidation.ts index e39a5bb..877f9a7 100644 --- a/apps/infoalloggi/src/pages/api/revalidation.ts +++ b/apps/infoalloggi/src/pages/api/revalidation.ts @@ -8,7 +8,7 @@ export default async function handler( if (req.query.secret !== env.REVALIDATION_SECRET) { return res.status(401).json({ message: "Invalid token" }); } - const path = req.query.path as string; + const path = decodeURIComponent(req.query.path as string); if (!path) { return res.status(400).json({ message: "Missing path parameter" }); diff --git a/apps/infoalloggi/src/pages/area-riservata/admin/annunci.tsx b/apps/infoalloggi/src/pages/area-riservata/admin/annunci.tsx index 3b6c8ec..b6424c6 100644 --- a/apps/infoalloggi/src/pages/area-riservata/admin/annunci.tsx +++ b/apps/infoalloggi/src/pages/area-riservata/admin/annunci.tsx @@ -17,9 +17,10 @@ import { api } from "~/utils/api"; const Admin_Annunci: NextPageWithLayout = () => { const { data, isLoading, refetch } = api.annunci.getAnnunciList.useQuery(); - + const utils = api.useUtils(); const { mutateAsync: update } = api.settings.updateAllAnnunci.useMutation({ onSettled: async () => { + await utils.annunci.getAnnunciList.invalidate(); toast.success( "La revalidazione dell'annuncio è stata richiesta con successo,\n potrebbero volerci alcuni minuti prima che le modifiche siano visibili.", { @@ -31,6 +32,7 @@ const Admin_Annunci: NextPageWithLayout = () => { const { mutateAsync: revalidate } = api.settings.revalidateAllAnnunci.useMutation({ onSettled: async () => { + await utils.annunci.getAnnunciList.invalidate(); toast.success("Revalidazione completata"); }, }); diff --git a/apps/infoalloggi/src/server/utils/revalidationHelper.ts b/apps/infoalloggi/src/server/utils/revalidationHelper.ts index 8745d06..fe01eeb 100644 --- a/apps/infoalloggi/src/server/utils/revalidationHelper.ts +++ b/apps/infoalloggi/src/server/utils/revalidationHelper.ts @@ -1,7 +1,9 @@ +import { env } from "~/env.mjs"; + export const revalidate = async (path: string) => { try { const res = await fetch( - `${process.env.NEXT_PUBLIC_BASE_URL}/api/revalidation?secret=${process.env.REVALIDATION_SECRET}&path=${path}`, + `${env.NEXT_PUBLIC_BASE_URL}/api/revalidation?secret=${env.REVALIDATION_SECRET}&path=${encodeURIComponent(path)}`, { method: "GET", },