104 lines
4.2 KiB
JavaScript
104 lines
4.2 KiB
JavaScript
|
"use strict";
|
||
|
|
||
|
Object.defineProperty(exports, "__esModule", {
|
||
|
value: true
|
||
|
});
|
||
|
exports.handleOpenUrl = handleOpenUrl;
|
||
|
exports.setMainWindowVisible = setMainWindowVisible;
|
||
|
exports.startup = startup;
|
||
|
const {
|
||
|
Menu,
|
||
|
BrowserWindow
|
||
|
} = require('electron');
|
||
|
let mainScreen;
|
||
|
function startup(bootstrapModules) {
|
||
|
// below modules are required and initted
|
||
|
// in this order to prevent dependency conflicts
|
||
|
// please don't tamper with the order unless you know what you're doing
|
||
|
require('./bootstrapModules/bootstrapModules').init(bootstrapModules);
|
||
|
require('./bootstrapModules/paths');
|
||
|
require('./bootstrapModules/splashScreen');
|
||
|
const {
|
||
|
moduleUpdater
|
||
|
} = require('./bootstrapModules/moduleUpdater');
|
||
|
const {
|
||
|
updater
|
||
|
} = require('./bootstrapModules/updater');
|
||
|
require('./bootstrapModules/autoStart');
|
||
|
const {
|
||
|
buildInfo
|
||
|
} = require('./bootstrapModules/buildInfo');
|
||
|
const {
|
||
|
appSettings
|
||
|
} = require('./bootstrapModules/appSettings');
|
||
|
const Constants = require('./Constants');
|
||
|
Constants.init(bootstrapModules.Constants);
|
||
|
const appFeatures = require('./appFeatures');
|
||
|
appFeatures.init();
|
||
|
const GPUSettings = require('./GPUSettings');
|
||
|
bootstrapModules.GPUSettings.replace(GPUSettings);
|
||
|
const rootCertificates = require('./rootCertificates');
|
||
|
rootCertificates.init();
|
||
|
require('./discord_native/browser/accessibility');
|
||
|
const app = require('./discord_native/browser/app');
|
||
|
app.injectBuildInfo(buildInfo);
|
||
|
app.injectModuleUpdater(moduleUpdater);
|
||
|
app.injectUpdater(updater);
|
||
|
require('./discord_native/browser/clipboard');
|
||
|
require('./discord_native/browser/constants');
|
||
|
const {
|
||
|
crashReporterSetup
|
||
|
} = require('./bootstrapModules/crashReporterSetup');
|
||
|
if (!crashReporterSetup.isInitialized()) {
|
||
|
crashReporterSetup.init(buildInfo);
|
||
|
}
|
||
|
require('./discord_native/browser/crashReporter');
|
||
|
require('./discord_native/browser/desktopCapturer');
|
||
|
const features = require('./discord_native/browser/features');
|
||
|
features.injectFeaturesBackend(appFeatures.getFeatures());
|
||
|
require('./discord_native/browser/fileManager');
|
||
|
require('./discord_native/browser/globalOverlay');
|
||
|
require('./discord_native/browser/clips');
|
||
|
require('./discord_native/browser/userDataCache');
|
||
|
const gpuSettings = require('./discord_native/browser/gpuSettings');
|
||
|
gpuSettings.injectGpuSettingsBackend(GPUSettings);
|
||
|
const nativeModules = require('./discord_native/browser/nativeModules');
|
||
|
nativeModules.injectModuleUpdater(moduleUpdater);
|
||
|
nativeModules.injectUpdater(updater);
|
||
|
require('./discord_native/browser/powerMonitor');
|
||
|
require('./discord_native/browser/powerSaveBlocker');
|
||
|
require('./discord_native/browser/processUtils');
|
||
|
require('./discord_native/browser/safeStorage');
|
||
|
const settings = require('./discord_native/browser/settings');
|
||
|
settings.injectSettingsBackend(appSettings.getSettings());
|
||
|
require('./discord_native/browser/spellCheck');
|
||
|
const windowNative = require('./discord_native/browser/window');
|
||
|
|
||
|
// expose globals that will be imported by the webapp
|
||
|
// global.releaseChannel is set in bootstrap
|
||
|
global.crashReporterMetadata = crashReporterSetup.metadata;
|
||
|
global.mainAppDirname = Constants.MAIN_APP_DIRNAME;
|
||
|
global.features = appFeatures.getFeatures();
|
||
|
global.appSettings = appSettings.getSettings();
|
||
|
// this gets updated when launching a new main app window
|
||
|
global.mainWindowId = Constants.DEFAULT_MAIN_WINDOW_ID;
|
||
|
global.moduleUpdater = moduleUpdater;
|
||
|
const enableDevtoolsSetting = global.appSettings.get('DANGEROUS_ENABLE_DEVTOOLS_ONLY_ENABLE_IF_YOU_KNOW_WHAT_YOURE_DOING', false);
|
||
|
const enableDevtools = buildInfo.releaseChannel === 'stable' ? enableDevtoolsSetting : true;
|
||
|
const createApplicationMenu = require('./applicationMenu');
|
||
|
Menu.setApplicationMenu(createApplicationMenu(enableDevtools));
|
||
|
mainScreen = require('./mainScreen');
|
||
|
mainScreen.init();
|
||
|
const {
|
||
|
getWindow: getPopoutWindowByKey
|
||
|
} = require('./popoutWindows');
|
||
|
windowNative.injectGetWindow(key => {
|
||
|
return getPopoutWindowByKey(key) || BrowserWindow.fromId(mainScreen.getMainWindowId());
|
||
|
});
|
||
|
}
|
||
|
function handleOpenUrl(url) {
|
||
|
mainScreen.handleOpenUrl(url);
|
||
|
}
|
||
|
function setMainWindowVisible(visible) {
|
||
|
mainScreen.setMainWindowVisible(visible);
|
||
|
}
|