"use client"; import React, { useState, useEffect } from "react"; import { usePathname } from "next/navigation"; import { useAccount } from "wagmi"; import { Sidebar } from "./Sidebar"; import { use0GBroker } from "../hooks/use0GBroker"; import { NavigationProvider, useNavigation } from "./OptimizedNavigation"; import SimpleLoader from "./SimpleLoader"; interface LayoutContentProps { children: React.ReactNode; } const MainContentArea: React.FC<{ children: React.ReactNode; isHomePage: boolean }> = ({ children, isHomePage }) => { const { isNavigating, targetRoute } = useNavigation(); if (isNavigating) { return ( ); } return ( {isHomePage ? ( {children} ) : ( children )} ); }; export const LayoutContent: React.FC = ({ children }) => { const pathname = usePathname(); const isHomePage = pathname === "/"; const { isConnected } = useAccount(); const { broker } = use0GBroker(); const [showDepositModal, setShowDepositModal] = useState(false); const [showTopUpModal, setShowTopUpModal] = useState(false); const [isLoading, setIsLoading] = useState(false); useEffect(() => { const checkLedger = async () => { if (broker && isConnected && !isHomePage) { try { const ledger = await broker.ledger.getLedger(); if (!ledger) { setShowDepositModal(true); } } catch (err: unknown) { setShowDepositModal(true); } } }; checkLedger(); }, [broker, isConnected, isHomePage]); const handleCreateAccount = async () => { if (!broker) return; setIsLoading(true); try { await broker.ledger.addLedger(0); setShowDepositModal(false); setShowTopUpModal(true); } catch (err: unknown) { // Keep modal open on error } finally { setIsLoading(false); } }; const handleDeposit = async (amount: number) => { if (!broker) return; setIsLoading(true); try { await broker.ledger.depositFund(amount); setShowTopUpModal(false); } catch (err: unknown) { // Keep modal open on error } finally { setIsLoading(false); } }; const handleSkipDeposit = () => { setShowTopUpModal(false); }; return ( {isHomePage ? null : } {children} {/* Global Account Creation Modal */} {showDepositModal && ( Create Your Account Welcome to 0G Compute Network! Create your account to get started. {isLoading ? ( <> Creating Account... > ) : ( "Create My Account" )} )} {/* Top-up Modal - Step 2 */} {showTopUpModal && ( Account Created Successfully! Would you like to add some funds to your account now? handleDeposit(0.1)} disabled={isLoading} className="px-4 py-3 bg-purple-600 text-white text-sm font-medium rounded-lg hover:bg-purple-700 disabled:opacity-50 disabled:cursor-not-allowed transition-colors" > {isLoading ? "Adding..." : "0.1 A0GI"} handleDeposit(1)} disabled={isLoading} className="px-4 py-3 bg-purple-600 text-white text-sm font-medium rounded-lg hover:bg-purple-700 disabled:opacity-50 disabled:cursor-not-allowed transition-colors" > {isLoading ? "Adding..." : "1 A0GI"} handleDeposit(5)} disabled={isLoading} className="px-4 py-3 bg-purple-600 text-white text-sm font-medium rounded-lg hover:bg-purple-700 disabled:opacity-50 disabled:cursor-not-allowed transition-colors" > {isLoading ? "Adding..." : "5 A0GI"} handleDeposit(10)} disabled={isLoading} className="px-4 py-3 bg-purple-600 text-white text-sm font-medium rounded-lg hover:bg-purple-700 disabled:opacity-50 disabled:cursor-not-allowed transition-colors" > {isLoading ? "Adding..." : "10 A0GI"} Skip for Now )} ); };
Welcome to 0G Compute Network! Create your account to get started.
Would you like to add some funds to your account now?