import { useState, useEffect, useCallback } from "react"; import { BrowserRouter, Routes, Route } from "react-router-dom"; import { getToken, getAuthMe, clearToken, type LoginMethod } from "./api"; import { Header } from "./components/Header"; import { Footer } from "./components/Footer"; import { ClaimWizard } from "./components/ClaimWizard"; import { StatsSection } from "./components/StatsSection"; import { DepositSection } from "./components/DepositSection"; import { TransactionsPage } from "./pages/TransactionsPage"; import { SponsorsPage } from "./pages/SponsorsPage"; import { MyAdsPage } from "./pages/MyAdsPage"; import { SponsorsSection } from "./components/SponsorsSection"; export default function App() { const [pubkey, setPubkey] = useState(null); const [loginMethod, setLoginMethod] = useState(null); const [statsRefetchTrigger, setStatsRefetchTrigger] = useState(0); const refreshAuth = useCallback(() => { const token = getToken(); if (!token) { setPubkey(null); setLoginMethod(null); return; } getAuthMe() .then((r) => { setPubkey(r.pubkey); setLoginMethod(r.method ?? "nip98"); }) .catch(() => { clearToken(); setPubkey(null); setLoginMethod(null); }); }, []); useEffect(() => { refreshAuth(); const onAuthChanged = () => refreshAuth(); window.addEventListener("auth-changed", onAuthChanged); return () => window.removeEventListener("auth-changed", onAuthChanged); }, [refreshAuth]); const handlePubkeyChange = useCallback((pk: string | null, method?: LoginMethod) => { setPubkey(pk); setLoginMethod(pk ? (method ?? "nip98") : null); }, []); const handleLogout = useCallback(() => { clearToken(); setPubkey(null); setLoginMethod(null); }, []); const handleClaimSuccess = useCallback(() => { setStatsRefetchTrigger((t) => t + 1); }, []); return (
} />
} />
} />
} />