"use client"; import { useIsSSR } from "react-aria"; import { type States, StateType as ApiStateType, useApi, } from "../../hooks/use-api"; import { StateType as DashboardDataStateType, useData, } from "../../hooks/use-data"; import { Dashboard } from "../Dashboard"; import { Error as ErrorPage } from "../Error"; import { Loading } from "../Loading"; import { NoWalletHome } from "../NoWalletHome"; const ONE_SECOND_IN_MS = 1000; const ONE_MINUTE_IN_MS = 60 * ONE_SECOND_IN_MS; const REFRESH_INTERVAL = 1 * ONE_MINUTE_IN_MS; export const Home = () => ; export const GeoBlockedHome = () => ; export const GovernanceOnlyHome = () => ; type HomeImplProps = { enableGovernance?: boolean | undefined; enableOis?: boolean | undefined; }; export const HomeImpl = ({ enableGovernance, enableOis }: HomeImplProps) => { const isSSR = useIsSSR(); return isSSR ? ( ) : ( ); }; type MountedHomeProps = { enableGovernance: boolean; enableOis: boolean; }; const MountedHome = ({ enableGovernance, enableOis }: MountedHomeProps) => { const api = useApi(); switch (api.type) { case ApiStateType.NotLoaded: case ApiStateType.LoadingStakeAccounts: { return ; } case ApiStateType.WalletDisconnecting: case ApiStateType.WalletConnecting: case ApiStateType.NoWallet: { return ; } case ApiStateType.ErrorLoadingStakeAccounts: { return ; } case ApiStateType.LoadedNoStakeAccount: case ApiStateType.Loaded: { return ( ); } } }; type StakeAccountLoadedHomeProps = { api: States[ApiStateType.Loaded] | States[ApiStateType.LoadedNoStakeAccount]; enableGovernance: boolean; enableOis: boolean; }; const StakeAccountLoadedHome = ({ api, enableGovernance, enableOis, }: StakeAccountLoadedHomeProps) => { const data = useData(api.dashboardDataCacheKey, api.loadData, { refreshInterval: REFRESH_INTERVAL, }); switch (data.type) { case DashboardDataStateType.NotLoaded: case DashboardDataStateType.Loading: { return ; } case DashboardDataStateType.Error: { return ; } case DashboardDataStateType.Loaded: { return ( ); } } };