// if ((module as any).hot) {
//     (module as any).hot.accept();
// }

import * as React from 'react';
import * as ReactDOM from 'react-dom';
import { AssignAllExtensions } from "../../extensions/General/Extensions";
import { Docs } from "../documents/Documents";
import { CurrentUserUtils } from "../util/CurrentUserUtils";
import { LinkManager } from "../util/LinkManager";
import { ReplayMovements } from '../util/ReplayMovements';
import { TrackMovements } from "../util/TrackMovements";
import { CollectionView } from "./collections/CollectionView";
import { DashboardView } from './DashboardView';
import { MainView } from "./MainView";

AssignAllExtensions();

(async () => {
    MainView.Live = window.location.search.includes("live");
    window.location.search.includes("safe") && CollectionView.SetSafeMode(true);
    const info = await CurrentUserUtils.loadCurrentUser();
    if (info.id !== "__guest__") {
        // a guest will not have an id registered
        await CurrentUserUtils.loadUserDocument(info.id);
    } else {
        await Docs.Prototypes.initialize();
    }
    document.getElementById('root')!.addEventListener('wheel', event => {
        if (event.ctrlKey) {
            event.preventDefault();
        }
    }, true);
    const startload = (document as any).startLoad;
    const loading = Date.now() - (startload ? Number(startload) : (Date.now() - 3000));
    console.log("Load Time = " + loading);
    const d = new Date();
    d.setTime(d.getTime() + (100 * 24 * 60 * 60 * 1000));
    const expires = "expires=" + d.toUTCString();
    document.cookie = `loadtime=${loading};${expires};path=/`;
    new LinkManager();
    new TrackMovements();
    new ReplayMovements();
    ReactDOM.render(<MainView />, document.getElementById('root'));
})();