// Copyright 2024, Command Line Inc. // SPDX-License-Identifier: Apache-2.0 import { WshServer } from "@/app/store/wshserver"; import { atoms, getApi, globalStore, globalWS, initGlobal, initWS } from "@/store/global"; import * as services from "@/store/services"; import * as WOS from "@/store/wos"; import * as keyutil from "@/util/keyutil"; import * as React from "react"; import { createRoot } from "react-dom/client"; import { App } from "./app/app"; import { loadFonts } from "./util/fontutil"; const platform = getApi().getPlatform(); const urlParams = new URLSearchParams(window.location.search); const windowId = urlParams.get("windowid"); const clientId = urlParams.get("clientid"); console.log("Wave Starting"); console.log("clientid", clientId, "windowid", windowId); initGlobal({ clientId, windowId, platform, environment: "renderer" }); keyutil.setKeyUtilPlatform(platform); loadFonts(); (window as any).globalWS = globalWS; (window as any).WOS = WOS; (window as any).globalStore = globalStore; (window as any).globalAtoms = atoms; (window as any).WshServer = WshServer; (window as any).isFullScreen = false; document.title = `The Next Wave (${windowId.substring(0, 8)})`; document.addEventListener("DOMContentLoaded", async () => { console.log("DOMContentLoaded"); // ensures client/window/workspace are loaded into the cache before rendering const client = await WOS.loadAndPinWaveObject(WOS.makeORef("client", clientId)); const waveWindow = await WOS.loadAndPinWaveObject(WOS.makeORef("window", windowId)); await WOS.loadAndPinWaveObject(WOS.makeORef("workspace", waveWindow.workspaceid)); const initialTab = await WOS.loadAndPinWaveObject(WOS.makeORef("tab", waveWindow.activetabid)); WOS.loadAndPinWaveObject(WOS.makeORef("layout", initialTab.layoutnode)); initWS(); const settings = await services.FileService.GetSettingsConfig(); console.log("settings", settings); globalStore.set(atoms.settingsConfigAtom, settings); services.ObjectService.SetActiveTab(waveWindow.activetabid); // no need to wait const reactElem = React.createElement(App, null, null); const elem = document.getElementById("main"); const root = createRoot(elem); document.fonts.ready.then(() => { console.log("Wave First Render"); root.render(reactElem); }); });