import { getCookie } from "cookies-next"; import Head from "next/head"; import type { ReactNode } from "react"; import { SIDEBAR_COOKIE_NAME, Sidebar, } from "~/components/area-riservata/sidebar"; import { BannerFactory } from "~/components/banners"; import { Footer, MiniFooter } from "~/components/footer"; import { LoadingPage } from "~/components/loading"; import { SiteHeader } from "~/components/navbar/site-header"; import { UserViewProvider } from "~/lib/userViewContext"; import { cn } from "~/lib/utils"; import { useTranslation } from "~/providers/I18nProvider"; import { EnforcedSessionContext, useSession, } from "~/providers/SessionProvider"; import type { UsersId } from "~/schemas/public/Users"; import type { ValidSession } from "~/server/api/trpc"; import { api } from "~/utils/api"; import { UserViewHeader } from "./area-riservata/userViewHeader"; interface Props { bodyClassName?: string; containerClassName?: string; children: ReactNode; noFooter?: boolean; footerClassName?: string; } export const Layout = ({ children, noFooter, bodyClassName, containerClassName, footerClassName, }: Props) => { const { data: bannerData } = api.banners.getBannerData.useQuery({ area_riservata: false, }); return (
{bannerData?.map((banner) => (
{BannerFactory(banner)}
))}
{children}
{!noFooter &&
); }; interface AreaRiservataLayoutProps extends Props { ignoreSessionCheck?: boolean; noSidebar?: boolean; } export const AreaRiservataLayout = ({ children, noSidebar, noFooter, ignoreSessionCheck, bodyClassName, containerClassName, footerClassName, }: AreaRiservataLayoutProps) => { const { data: bannerData } = api.banners.getBannerData.useQuery({ area_riservata: true, }); const session = useSession(); if (!ignoreSessionCheck) { if (session.status === "pending") return (
{!noFooter && }
); if (session.status !== "success" || !session.user) { window.location.reload(); return (
{!noFooter && }
); } } return (
{bannerData?.map((banner) => (
{BannerFactory(banner)}
))}
{noSidebar ? null : ( )} {children}
{!noFooter && }
); }; export const AreaRiservataLayoutUserView = ({ children, }: { children: ReactNode & { props: { userId: UsersId } }; }) => { const { t } = useTranslation(); const session = useSession(); const props = children.props as { userId: UsersId }; if (session.status === "pending") { return ; } if (session.status === "error" || !session.user) { window.location.reload(); return ; } return (
{t.heads.area_riservata_titolo}
{children}
); };