import { render, useEffect, useState } from '@wordpress/element'; import apiFetch from '@wordpress/api-fetch'; import { LoginStatusResponse } from './types/api'; import LandingPages from './components/LandingPages'; import Login from './components/Login'; const LeadpagesView: React.FC = () => { const [isLoggedIn, setIsLoggedIn] = useState(false); const [checkingStatus, setCheckingStatus] = useState(true); const checkLoginStatus = async () => { try { const response = (await apiFetch({ path: '/leadpages/v1/oauth2/status' })) as LoginStatusResponse; setIsLoggedIn(response.isLoggedIn); } catch (e) { setIsLoggedIn(false); } finally { setCheckingStatus(false); } }; // When the state of the users authenticated status changes (such as a after // successful login or an authentication error), reload the page so the // submenu items that are gated by the auth status can be rendered const handleAuthenticationChange = () => { window.location.reload(); }; useEffect(() => { checkLoginStatus(); }, []); if (checkingStatus) { return null; } if (!isLoggedIn) { return ; } return ; }; export default LeadpagesView; window.addEventListener('load', () => render(, document.getElementById('leadpages-page-root')));