import React from "react";
import ReactDOM from "react-dom";
import LoggerService from "./loggerService";
import LoggerStore, { showFocusBTF } from "./src/stores/LoggerStore";
import App from "./src/app";
import ConfigClient from "../../clients/configClient";
import { System } from "../../common/system";
/**
* Makes the LoggerService window visible
*/
const showConsole = () => {
const finWindow = System.Window.getCurrent();
showFocusBTF(finWindow);
};
/**
* Decides whether to immediately display the Central Logger, or display Central Logger automatically
* upon an error. This behavior can be set either as a user preference (by checking boxes in the
* Central Logger UI) or as a config (by adding entries to finsemble.preferences.loggerService).
*/
const maybeShowCentralLogger = async () => {
const { data: values } = await ConfigClient.getPreferences();
const showOnStartupPreference = values?.["finsemble.preferences.loggerService.showOnStartup"];
const showOnErrorPreference = values?.["finsemble.preferences.loggerService.showOnError"];
const { data: showOnStartupConfig } = await ConfigClient.getValue(
"finsemble.preferences.loggerService.showOnStartup"
);
const { data: showOnErrorConfig } = await ConfigClient.getValue("finsemble.preferences.loggerService.showOnError");
const showOnStartup = showOnStartupPreference ?? showOnStartupConfig ?? false;
const showOnError = showOnErrorPreference ?? showOnErrorConfig ?? false;
// The second "false" parameter prevents the store from setting this value as a preference
LoggerStore.setShowOnStartup(showOnStartup, false);
LoggerStore.setShowOnError(showOnError, false);
if (showOnStartup) showConsole();
};
/**
* When safe, initialize the LoggerStore and get preferences
*/
const main = async () => {
LoggerStore.initialize();
maybeShowCentralLogger();
// Sets the window to hide rather than close (hideOnClose) when the end user closes from the window frame
const finWindow = System.Window.getCurrent();
finWindow.addEventListener("close-requested", () => {
finWindow.hide();
});
};
main();
// Allow developers to display the central logger from http://localhost:9090
(window as any).showConsole = showConsole;
// e2e test require access to the logger store to produce debugging information (via Selenium)
// See central_logger.py
(window as any).loggerServiceTestRig = {
loggerStore: LoggerStore,
};
const LoggerServiceUI = () => ;
ReactDOM.render(, document.getElementById("LoggerServiceUI-tsx"));
// This line is necessary for the service to start, otherwise webpack thinks it's not being used and doesn't run the file InteropService.ts
const loggerService = LoggerService;