"use client"; import { useState, useEffect, createContext, useContext, useCallback, useMemo } from "react"; import { AgeGate } from "@/components/AgeGate"; import { Nav } from "@/components/Nav"; import { MobileHeader } from "@/components/MobileHeader"; import { IdVerificationModal } from "@/components/IdVerificationModal"; import { SiteFooter } from "@/components/SiteFooter"; import { AuthProvider, useAuth } from "@/lib/auth/context"; import { requiresIdVerification, getUserState, isIdVerified, } from "@/lib/id-verification"; import { getAccessCapabilities, shouldBlurExplicit, type AccessCapabilities, } from "@/lib/access-tier"; const ActiveCountContext = createContext<(n: number) => void>(() => {}); const VanillaModeContext = createContext(false); const OpenIdVerificationContext = createContext<() => void>(() => {}); interface AccessContextValue { capabilities: AccessCapabilities; blurExplicit: boolean; } const AccessContext = createContext({ capabilities: getAccessCapabilities(false), blurExplicit: true, }); export function useSetActiveCount() { return useContext(ActiveCountContext); } export function useVanillaMode() { return useContext(VanillaModeContext); } export function useOpenIdVerification() { return useContext(OpenIdVerificationContext); } export function useAccess() { return useContext(AccessContext); } /** @deprecated use useAccess().blurExplicit */ export function useIdBlur() { return useContext(AccessContext).blurExplicit; } interface ProvidersProps { children: React.ReactNode; } function InnerProviders({ children }: ProvidersProps) { const { user, profile } = useAuth(); const [vanillaMode, setVanillaMode] = useState(false); const [activeCount, setActiveCount] = useState(0); const [idModalOpen, setIdModalOpen] = useState(false); const isLoggedIn = !!user; const capabilities = useMemo( () => getAccessCapabilities(isLoggedIn, profile?.id_verified), [isLoggedIn, profile?.id_verified] ); const blurExplicit = useMemo( () => shouldBlurExplicit(isLoggedIn, profile?.id_verified) || vanillaMode, [isLoggedIn, profile?.id_verified, vanillaMode] ); useEffect(() => { setVanillaMode(localStorage.getItem("eg_vanilla_mode") === "true"); const state = getUserState(); if ( isLoggedIn && requiresIdVerification(state) && !isIdVerified(profile?.id_verified) && localStorage.getItem("eg_id_verification_prompted") !== "true" ) { const timer = setTimeout(() => setIdModalOpen(true), 2000); return () => clearTimeout(timer); } }, [isLoggedIn, profile?.id_verified]); const handleVanillaToggle = (v: boolean) => { setVanillaMode(v); localStorage.setItem("eg_vanilla_mode", String(v)); }; const handleIdVerified = useCallback(() => { localStorage.setItem("eg_id_verification_prompted", "true"); }, []); const openIdVerification = useCallback(() => { setIdModalOpen(true); }, []); return (