import React, { useEffect } from 'react'; import { useAccount } from '../src/context/AccountContext'; import { SessionLogin } from '../src/views/login/SessionLogin'; import { useRouter } from 'next/router'; import { appendBasePath } from '../src/utils/basePath'; import { TopSection } from '../src/views/homepage/Top'; import { LoginBox } from '../src/views/homepage/LoginBox'; import { Accounts } from '../src/views/homepage/Accounts'; import { useStatusState, useStatusDispatch, } from '../src/context/StatusContext'; import { useGetCanConnectLazyQuery } from '../src/generated/graphql'; import { LoadingCard } from '../src/components/loading/LoadingCard'; import { Section } from '../src/components/section/Section'; import { toast } from 'react-toastify'; const ContextApp = () => { const { push } = useRouter(); const { name, host, cert, admin, viewOnly, sessionAdmin, accounts, } = useAccount(); const { loading: statusLoading } = useStatusState(); const dispatch = useStatusDispatch(); const change = accounts.length <= 1 && admin === ''; const isSession = admin !== '' && viewOnly === ''; const [getCanConnect, { data, loading, error }] = useGetCanConnectLazyQuery({ fetchPolicy: 'network-only', onError: () => { toast.error(`Unable to connect to ${name}`); dispatch({ type: 'disconnected' }); }, }); useEffect(() => { if (loading && !error) { dispatch({ type: 'loading' }); } if (!loading && data?.getNodeInfo && !error) { dispatch({ type: 'connected' }); push(appendBasePath('/home')); } }, [loading, data, error]); useEffect(() => { if (viewOnly !== '' || sessionAdmin !== '') { getCanConnect({ variables: { auth: { host, macaroon: viewOnly !== '' ? viewOnly : sessionAdmin, cert, }, }, }); } }, [viewOnly, sessionAdmin]); return ( <> {statusLoading && (
)} {!statusLoading && ( <> {isSession && } )} ); }; export default ContextApp;