import {
ExternalLink,
Mail,
MessagesSquare,
Paperclip,
Search,
ShoppingBag,
Tickets,
UserCog,
} from "lucide-react";
import Head from "next/head";
import Link from "next/link";
import { usePathname } from "next/navigation";
import { useRouter } from "next/router";
import { type ReactNode, useContext } from "react";
import toast from "react-hot-toast";
import { 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 { WhatsAppIcon2 } from "~/components/svgs";
import { Button } from "~/components/ui/button";
import { Separator } from "~/components/ui/separator";
import { UserViewContext, UserViewProvider } from "~/lib/userViewContext";
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";
interface Props {
children: ReactNode;
noFooter?: boolean;
}
export const Layout = ({ children, noFooter }: Props) => {
const { data: bannerData } = api.settings.getBannerData.useQuery({
area_riservata: false,
});
return (
{bannerData?.map((banner) => (
{BannerFactory(banner)}
))}
{children}
{!noFooter &&
}
{/*
*/}
);
};
export const AreaRiservataLayout = ({
children,
noSidebar,
noFooter,
ignoreSessionCheck,
}: {
children: ReactNode;
noSidebar?: boolean;
noFooter?: boolean;
ignoreSessionCheck?: boolean;
}) => {
const { data: bannerData } = api.settings.getBannerData.useQuery({
area_riservata: true,
});
const session = useSession();
if (!ignoreSessionCheck) {
if (session.status === "pending")
return (
);
if (session.status !== "success" || !session.user) {
window.location.reload();
return (
);
}
}
return (
{bannerData?.map((banner) => (
{BannerFactory(banner)}
))}
{noSidebar ? null : (
)}
{children}
{!noFooter &&
}
{/*
*/}
);
};
export const AreaRiservataLayoutUserView = ({
children,
}: {
children: ReactNode & { props: { userId: UsersId } };
}) => {
const { t } = useTranslation();
const props = children.props as { userId: UsersId };
return (
{t.heads.area_riservata_titolo}
{/*
*/}
);
};
const UserViewHeader = () => {
const data = useContext(UserViewContext);
const pathname = usePathname();
const router = useRouter();
const { mutate: swap } = api.auth.swapUser.useMutation({
onSuccess: async () => {
toast.success("Utente cambiato con successo");
await router.push("/area-riservata/dashboard");
router.reload();
},
});
if (!data) return Errore
;
return (
{data.username}
{data.email} | {data.telefono}
);
};