From f1a323f4783a2568dafd2bce3317902b55bfbdba Mon Sep 17 00:00:00 2001 From: Marco Pedone Date: Fri, 16 Jan 2026 11:52:59 +0100 Subject: [PATCH] chore: enhance error handling in sendInvite mutation and invalidate email cache on success --- .../area-riservata/userViewHeader.tsx | 4 +++ .../src/server/api/routers/invite.ts | 30 ++++++++++++------- 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/apps/infoalloggi/src/components/area-riservata/userViewHeader.tsx b/apps/infoalloggi/src/components/area-riservata/userViewHeader.tsx index d810a2e..c272adc 100644 --- a/apps/infoalloggi/src/components/area-riservata/userViewHeader.tsx +++ b/apps/infoalloggi/src/components/area-riservata/userViewHeader.tsx @@ -31,12 +31,16 @@ export const UserViewHeader = () => { router.reload(); }, }); + const utils = api.useUtils(); const { mutateAsync: sendInvite } = api.invite.sendInvite.useMutation({ onError: (error) => { toast.error(error.message); }, onSuccess: async () => { toast.success("Email inviata con successo"); + await utils.comunicazioni.getEmails.invalidate({ + userId: data?.id || "", + }); }, }); if (!data) return
Errore
; diff --git a/apps/infoalloggi/src/server/api/routers/invite.ts b/apps/infoalloggi/src/server/api/routers/invite.ts index e6bc2ed..3b5b594 100644 --- a/apps/infoalloggi/src/server/api/routers/invite.ts +++ b/apps/infoalloggi/src/server/api/routers/invite.ts @@ -27,19 +27,29 @@ export const inviteRouter = createTRPCRouter({ }), ) .mutation(async ({ input }) => { - const user = await getUser({ userId: input.id, db }); - const token = await createInviteToken(user.email); + try { + const user = await getUser({ userId: input.id, db }); + const token = await createInviteToken(user.email); - const inviteUrl = `${env.BASE_URL}/auth/accetta-invito/${token}`; + const inviteUrl = `${env.BASE_URL}/auth/accetta-invito/${token}`; - await sendInvitoEmail({ - userId: input.id, - email: user.email, - nome: user.nome, - inviteUrl, - }); + await sendInvitoEmail({ + userId: input.id, + email: user.email, + nome: user.nome, + inviteUrl, + }); - return { success: true }; + return { success: true }; + } catch (e) { + console.error("Error in sendInvite:", e); + throw new TRPCError({ + code: "INTERNAL_SERVER_ERROR", + message: + "Errore durante l'invio dell'invito: " + + (e instanceof Error ? e.message : "Unknown error"), + }); + } }), // Verify invite token (public - user clicking the link)