2023-05-19 22:38:45 +02:00
|
|
|
import Logger from "@common/logger";
|
2023-05-20 00:37:21 +02:00
|
|
|
|
|
|
|
import Config from "@data/config";
|
|
|
|
import Changelog from "@data/changelog";
|
|
|
|
|
|
|
|
import * as Builtins from "@builtins/builtins";
|
|
|
|
|
|
|
|
import LoadingIcon from "../loadingicon";
|
|
|
|
|
|
|
|
import LocaleManager from "./localemanager";
|
2021-03-06 09:30:16 +01:00
|
|
|
import DOMManager from "./dommanager";
|
|
|
|
import PluginManager from "./pluginmanager";
|
|
|
|
import ThemeManager from "./thememanager";
|
|
|
|
import Settings from "./settingsmanager";
|
|
|
|
import DataStore from "./datastore";
|
|
|
|
import DiscordModules from "./discordmodules";
|
2023-05-20 00:37:21 +02:00
|
|
|
|
2021-07-27 15:41:51 +02:00
|
|
|
import Editor from "./editor";
|
2022-10-03 10:40:18 +02:00
|
|
|
import Updater from "./updater";
|
2021-03-06 09:30:16 +01:00
|
|
|
|
2023-05-20 00:37:21 +02:00
|
|
|
import Styles from "@styles/index.css";
|
|
|
|
|
|
|
|
import Modals from "@ui/modals";
|
|
|
|
import FloatingWindows from "@ui/floatingwindows";
|
|
|
|
|
|
|
|
|
2021-03-06 09:30:16 +01:00
|
|
|
export default new class Core {
|
|
|
|
async startup() {
|
|
|
|
if (this.hasStarted) return;
|
|
|
|
this.hasStarted = true;
|
|
|
|
|
|
|
|
Config.appPath = process.env.DISCORD_APP_PATH;
|
|
|
|
Config.userData = process.env.DISCORD_USER_DATA;
|
|
|
|
Config.dataPath = process.env.BETTERDISCORD_DATA_PATH;
|
|
|
|
|
|
|
|
// Load css early
|
|
|
|
Logger.log("Startup", "Injecting BD Styles");
|
|
|
|
DOMManager.injectStyle("bd-stylesheet", Styles.toString());
|
|
|
|
|
|
|
|
Logger.log("Startup", "Initializing DataStore");
|
|
|
|
DataStore.initialize();
|
|
|
|
|
|
|
|
Logger.log("Startup", "Initializing LocaleManager");
|
2021-04-08 02:31:02 +02:00
|
|
|
LocaleManager.initialize();
|
2021-03-06 09:30:16 +01:00
|
|
|
|
|
|
|
Logger.log("Startup", "Initializing Settings");
|
|
|
|
Settings.initialize();
|
|
|
|
|
|
|
|
Logger.log("Startup", "Initializing DOMManager");
|
|
|
|
DOMManager.initialize();
|
|
|
|
|
2021-11-14 06:53:45 +01:00
|
|
|
Logger.log("Startup", "Waiting for connection...");
|
|
|
|
await this.waitForConnection();
|
2021-03-06 09:30:16 +01:00
|
|
|
|
2021-07-27 15:41:51 +02:00
|
|
|
Logger.log("Startup", "Initializing Editor");
|
|
|
|
await Editor.initialize();
|
|
|
|
|
2022-10-08 22:28:56 +02:00
|
|
|
Modals.initialize();
|
2023-03-09 02:07:36 +01:00
|
|
|
FloatingWindows.initialize();
|
2022-10-08 22:28:56 +02:00
|
|
|
|
2021-03-06 09:30:16 +01:00
|
|
|
Logger.log("Startup", "Initializing Builtins");
|
|
|
|
for (const module in Builtins) {
|
2021-07-27 15:41:51 +02:00
|
|
|
Builtins[module].initialize();
|
2021-03-06 09:30:16 +01:00
|
|
|
}
|
2022-09-27 05:33:51 +02:00
|
|
|
|
2021-03-06 09:30:16 +01:00
|
|
|
Logger.log("Startup", "Loading Plugins");
|
|
|
|
// const pluginErrors = [];
|
|
|
|
const pluginErrors = PluginManager.initialize();
|
|
|
|
|
|
|
|
Logger.log("Startup", "Loading Themes");
|
|
|
|
// const themeErrors = [];
|
|
|
|
const themeErrors = ThemeManager.initialize();
|
|
|
|
|
2022-10-03 10:40:18 +02:00
|
|
|
Logger.log("Startup", "Initializing Updater");
|
|
|
|
Updater.initialize();
|
2022-09-29 07:04:22 +02:00
|
|
|
|
2021-03-06 09:30:16 +01:00
|
|
|
Logger.log("Startup", "Removing Loading Icon");
|
|
|
|
LoadingIcon.hide();
|
|
|
|
|
|
|
|
// Show loading errors
|
|
|
|
Logger.log("Startup", "Collecting Startup Errors");
|
|
|
|
Modals.showAddonErrors({plugins: pluginErrors, themes: themeErrors});
|
|
|
|
|
|
|
|
const previousVersion = DataStore.getBDData("version");
|
2022-10-10 08:32:57 +02:00
|
|
|
if (Config.version !== previousVersion) {
|
2022-10-09 19:49:29 +02:00
|
|
|
Modals.showChangelogModal(Changelog);
|
2021-04-05 07:43:30 +02:00
|
|
|
DataStore.setBDData("version", Config.version);
|
2021-03-06 09:30:16 +01:00
|
|
|
}
|
2021-10-22 19:04:57 +02:00
|
|
|
}
|
|
|
|
|
2021-11-14 06:53:45 +01:00
|
|
|
waitForConnection() {
|
|
|
|
return new Promise(done => {
|
|
|
|
if (DiscordModules.UserStore.getCurrentUser()) return done();
|
|
|
|
DiscordModules.Dispatcher.subscribe("CONNECTION_OPEN", done);
|
2021-03-06 09:30:16 +01:00
|
|
|
});
|
|
|
|
}
|
2022-10-08 22:28:56 +02:00
|
|
|
};
|