Files
CRAPP/src/routes/api/public/push-subscribe.ts
T
davideandClaude Sonnet 5 0a04025fe9 Rimuove i dati dummy della classifica e usa i risultati CSI reali
La classifica e lo storico partite mostravano dati inventati (squadre e
risultati finti) come base, poi sovrascritti dai dati CSI quando
disponibili. Ora classifica, ultimi risultati, storico match e obiettivi
di squadra legati alle vittorie usano solo dati reali (CSI o scout live),
con stati vuoti quando i dati CSI non sono ancora disponibili.

Include anche la correzione di tutti gli errori di formattazione
prettier segnalati da `npm run lint` sul resto del codice sorgente.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-01 13:38:33 +02:00

50 lines
1.7 KiB
TypeScript

import { createFileRoute } from "@tanstack/react-router";
import { z } from "zod";
const schemaIscrizione = z.object({
endpoint: z.string().url().max(1000),
giocatoreId: z.string().min(1).max(50),
p256dh: z.string().min(1).max(500),
auth: z.string().min(1).max(500),
});
const schemaCancellazione = z.object({ endpoint: z.string().url().max(1000) });
export const Route = createFileRoute("/api/public/push-subscribe")({
server: {
handlers: {
POST: async ({ request }) => {
const parsed = schemaIscrizione.safeParse(await request.json());
if (!parsed.success) return new Response("Dati non validi", { status: 400 });
const { supabaseAdmin } = await import("@/integrations/supabase/client.server");
const { error } = await supabaseAdmin.from("push_subscriptions").upsert(
{
endpoint: parsed.data.endpoint,
giocatore_id: parsed.data.giocatoreId,
p256dh: parsed.data.p256dh,
auth: parsed.data.auth,
},
{ onConflict: "endpoint" },
);
if (error) {
console.error("push-subscribe", error);
return new Response("Errore salvataggio", { status: 500 });
}
return Response.json({ ok: true });
},
DELETE: async ({ request }) => {
const parsed = schemaCancellazione.safeParse(await request.json());
if (!parsed.success) return new Response("Dati non validi", { status: 400 });
const { supabaseAdmin } = await import("@/integrations/supabase/client.server");
await supabaseAdmin
.from("push_subscriptions")
.delete()
.eq("endpoint", parsed.data.endpoint);
return Response.json({ ok: true });
},
},
},
});