import React, { useEffect } from 'react'; import ReactGA from 'react-ga'; import { hot } from 'react-hot-loader/root'; import { BrowserRouter, Route, Switch } from 'react-router-dom'; import { StoreProvider } from 'easy-peasy'; import { store } from '@/state'; import DashboardRouter from '@/routers/DashboardRouter'; import ServerRouter from '@/routers/ServerRouter'; import AuthenticationRouter from '@/routers/AuthenticationRouter'; import { Provider } from 'react-redux'; import { SiteSettings } from '@/state/settings'; import ProgressBar from '@/components/elements/ProgressBar'; import NotFound from '@/components/screens/NotFound'; import tw from 'twin.macro'; import GlobalStylesheet from '@/assets/css/GlobalStylesheet'; interface ExtendedWindow extends Window { SiteConfiguration?: SiteSettings; PterodactylUser?: { uuid: string; username: string; email: string; /* eslint-disable camelcase */ root_admin: boolean; use_totp: boolean; language: string; updated_at: string; created_at: string; /* eslint-enable camelcase */ }; } const App = () => { const { PterodactylUser, SiteConfiguration } = (window as ExtendedWindow); if (PterodactylUser && !store.getState().user.data) { store.getActions().user.setUserData({ uuid: PterodactylUser.uuid, username: PterodactylUser.username, email: PterodactylUser.email, language: PterodactylUser.language, rootAdmin: PterodactylUser.root_admin, useTotp: PterodactylUser.use_totp, createdAt: new Date(PterodactylUser.created_at), updatedAt: new Date(PterodactylUser.updated_at), }); } if (!store.getState().settings.data) { store.getActions().settings.setSettings(SiteConfiguration!); } useEffect(() => { ReactGA.initialize(SiteConfiguration!.analytics); ReactGA.pageview(location.pathname); }, []); return ( <>
); }; export default hot(App);