Corregge il rimbalzo di /eventi in home e la lista invisibile con molti eventi.
Il redirect verso /benvenuto scattava se la rosa non era ancora arrivata dalla rete, anche con sessione e profilo validi: caricare /eventi a freddo (refresh, link diretto, riapertura della PWA) ti riportava sempre in Home. Ora si aspetta il caricamento della rosa e si torna alla pagina di destinazione originale. In Reveal, la soglia del 15% dell'altezza dell'elemento per attivare l'animazione era irraggiungibile per una lista lunga (75 eventi = oltre 5700px): la sezione restava invisibile per sempre, a qualunque scroll. La soglia ora è "some" (basta un pixel visibile). Aggiunta anche la gestione dell'errore sul caricamento eventi, che prima falliva in silenzio mostrando una pagina vuota senza alcun messaggio. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -13,6 +13,11 @@ import {
|
||||
import { impostaGiocatore, resetGiocatore, useGiocatoreCorrente } from "@/lib/user-store";
|
||||
|
||||
export const Route = createFileRoute("/benvenuto")({
|
||||
validateSearch: (search: Record<string, unknown>): { next?: string } => {
|
||||
const next = search["next"];
|
||||
// Solo un percorso interno: mai un URL assoluto, per non aprire un redirect esterno.
|
||||
return typeof next === "string" && next.startsWith("/") ? { next } : {};
|
||||
},
|
||||
head: () => ({
|
||||
meta: [
|
||||
{ title: "Benvenuto — CrAPP" },
|
||||
@@ -32,6 +37,7 @@ export const Route = createFileRoute("/benvenuto")({
|
||||
|
||||
function Benvenuto() {
|
||||
const navigate = useNavigate();
|
||||
const { next } = Route.useSearch();
|
||||
const giocatore = useGiocatoreCorrente();
|
||||
const { pronta, utenteId, emailUtente } = useSessione();
|
||||
const { righe, daDatabase } = useGiocatoriSquadra();
|
||||
@@ -45,8 +51,8 @@ function Benvenuto() {
|
||||
const puoEntrare = !!giocatore && !!utenteId;
|
||||
|
||||
useEffect(() => {
|
||||
if (puoEntrare) navigate({ to: "/" });
|
||||
}, [puoEntrare, navigate]);
|
||||
if (puoEntrare) navigate({ to: next ?? "/" });
|
||||
}, [puoEntrare, navigate, next]);
|
||||
|
||||
// Chi sei lo dice lo slot collegato all'account, non quello che c'è in localStorage:
|
||||
// senza slot la scelta salvata dalla vecchia selezione libera va buttata.
|
||||
|
||||
Reference in New Issue
Block a user