const { join } = require('path'); const NodeModule = require('module'); const { app } = require('electron'); const requireNative = require('./utils/requireNative'); const paths = require('./paths'); const buildInfo = require('./utils/buildInfo'); // Just required for startup const appSettings = require('./appSettings'); const GPUSettings = require('./GPUSettings'); const crashReporterSetup = require('./crashReporterSetup'); const splashScreen = require('./splash/splashScreen'); const Constants = require('./Constants'); const autoStart = require('./autoStart'); const updater = require('./updater/updater'); const moduleUpdater = require('./updater/moduleUpdater'); const appUpdater = require('./updater/appUpdater'); let desktopCore; const startCore = () => { desktopCore = requireNative('discord_desktop_core'); log('Bootstrap', 'Required desktop_core:', desktopCore); desktopCore.startup({ paths, splashScreen, moduleUpdater, autoStart, buildInfo, appSettings, Constants, GPUSettings, updater, crashReporterSetup }); }; const startUpdate = () => { appUpdater.update(false, () => { startCore(); }, () => { desktopCore.setMainWindowVisible(true); }); }; module.exports = () => { // Paths logging log('Paths', `Init! Returns: getUserData: ${paths.getUserData()} getUserDataVersioned: ${paths.getUserDataVersioned()} getResources: ${paths.getResources()} getModuleDataPath: ${paths.getModuleDataPath()} getInstallPath: ${paths.getInstallPath()}`); if (app.isReady()) { startUpdate(); } else { app.once('ready', startUpdate); } };