import React, { Suspense, lazy, useState, useEffect } from 'react';
import ReactDOM from 'react-dom';
import * as serviceWorker from './serviceWorker';
import './index.css';
import Loader from './components/Loader';
import { CookiesProvider, Cookies } from 'react-cookie';

import ProfileContext from './components/ProfileContext';

const AuthenticatedApp = lazy(() => import('./App'));
const UnauthenticatedApp = lazy(() => import('./Pages/SignIn'));
const cookies = new Cookies();

const Connect = () => {
  const profileHook = useState(true);

  const userCookie = cookies.get('userCookie');
  const [emailDomain, setEmailDomain] = useState(
    userCookie ? userCookie.Email.split('@')[1] : ''
  );

  const [user, setUser] = useState(false);

  useEffect(() => {
    if (emailDomain === 'daiict.ac.in') setUser(true);
  }, [cookies]);

  return (
    <CookiesProvider>
      <ProfileContext.Provider value={profileHook}>
        <Suspense fallback={<Loader />}>
          <React.StrictMode>
            {user ? <AuthenticatedApp /> : <UnauthenticatedApp />}
          </React.StrictMode>
        </Suspense>
      </ProfileContext.Provider>
    </CookiesProvider>
  );
};

ReactDOM.render(<Connect />, document.getElementById('root'));

// If you want your app to work offline and load faster, you can change
// unregister() to register() below. Note this comes with some pitfalls.
// Learn more about service workers: https://bit.ly/CRA-PWA
serviceWorker.unregister();