diff --git a/pages/tickets/index.tsx b/pages/tickets/index.tsx index feb03b0..f70b4be 100644 --- a/pages/tickets/index.tsx +++ b/pages/tickets/index.tsx @@ -1,8 +1,9 @@ import { useQuery } from "@tanstack/react-query"; -import { useFlags } from "flagsmith/react"; import { useAtomValue, useSetAtom } from "jotai"; -import { useEffect, useState } from "react"; -import { ticketsAtom } from "../../src/Components/Cart/CartAtom"; +import { + availableTicketsAtom, + ticketsAtom, +} from "../../src/Components/Cart/CartAtom"; import { CartContainer } from "../../src/Components/Cart/CartContainer"; import { TicketsLayout } from "../../src/Components/Layouts/TicketsLayout"; import Seo from "../../src/Components/Seo"; @@ -29,17 +30,10 @@ const image = const ticket = ["tickets"]; const TicketContent = () => { - const [enabed, setEnabed] = useState(false); - const { "ticket-sale-enabled": ticketSaleEnabled } = useFlags([ - "ticket-sale-enabled", - ]); + const isSaleEnabled = useAtomValue(availableTicketsAtom); const isLoggedIn = useAtomValue(isAuthenticatedAtom); - useEffect(() => { - const value = window.localStorage.getItem("ENABLED_SALES"); - setEnabed(Boolean(value)); - }, []); - if (Boolean(ticketSaleEnabled.value) || enabed) { + if (isSaleEnabled) { if (isLoggedIn) { return ; } @@ -49,13 +43,14 @@ const TicketContent = () => { } }; export default function Tickets(props: PageProps) { - const { isLoading, data } = useQuery(ticket, fetchTickets); + const setAvailableTicketsAtom = useSetAtom(availableTicketsAtom); const setTicketsAtom = useSetAtom(ticketsAtom); - useEffect(() => { - if (data?.length) { + const { isLoading } = useQuery(ticket, fetchTickets, { + onSuccess: (data) => { + setAvailableTicketsAtom(data.length > 0); setTicketsAtom(data.map((el) => ({ ...el, currentQuantity: 0 }))); - } - }, [data, setTicketsAtom]); + }, + }); return ( <> diff --git a/src/Components/Cart/CartAtom.tsx b/src/Components/Cart/CartAtom.tsx index cfabdaf..40446f7 100644 --- a/src/Components/Cart/CartAtom.tsx +++ b/src/Components/Cart/CartAtom.tsx @@ -19,6 +19,7 @@ export interface Entrada { export interface EntradaMapType { [entradaId: Entrada["id"]]: Entrada; } +export const availableTicketsAtom = atom(false); export const ticketsAtom = atom([]); export const ticketsAtomsAtom = splitAtom(ticketsAtom); export const ticketSummaryAtom = selectAtom(ticketsAtom, (ticketsAtom) => {