"use client"; import { createContext, useContext, useEffect, useState, type ReactNode, } from "react"; import React from "react"; // ---- Types ---- export interface User { email: string; name: string; } // ---- Fetch ---- export async function fetchUser(): Promise { const res = await fetch("/api/me"); if (!res.ok) throw new Error(`/api/me returned ${res.status}`); return (await res.json()) as User; } // ---- Context ---- const UserContext = createContext(null); export function UserProvider({ children }: { children: ReactNode }) { const [user, setUser] = useState(null); useEffect(() => { fetchUser() .then(setUser) .catch(() => setUser({ email: "dev@proteinea.local", name: "Dev" })); }, []); return React.createElement(UserContext.Provider, { value: user }, children); } export function useUser(): User | null { return useContext(UserContext); }