"use client";
import { useEffect, useState } from "react";
import { useSession, useToasts } from "@/lib/store";
import type { PublicUser, UserSettings, WalletView } from "@spinza/shared";
import { AnimatePresence, motion } from "framer-motion";
import { cn } from "@/lib/utils";
import { SessionReminder } from "./session-reminder";
export function Providers({ children, session }: { children: React.ReactNode; session: { user: PublicUser; wallet: WalletView; settings: UserSettings } | null }) {
const hydrate = useSession((s) => s.hydrate);
// Hydrate synchronously on first render so the first paint already knows the session.
useState(() => {
hydrate(session);
return true;
});
useEffect(() => {
hydrate(session);
}, [session, hydrate]);
return (
<>
{children}