import { get as getFromConfig } from 'config'; import { BrowserWindow } from 'electron'; import { start as startUpdater, stop as stopUpdater } from './updater'; import { LoggerType, MessagesType } from './common'; import { UserConfig } from '../../app/user_config'; let initialized = false; let config: UserConfig; export async function start( getMainWindow: () => BrowserWindow, userConfig: UserConfig, messages?: MessagesType, logger?: LoggerType ) { if (initialized) { throw new Error('updater/start: Updates have already been initialized!'); } initialized = true; config = userConfig; if (!messages) { throw new Error('updater/start: Must provide messages!'); } if (!logger) { throw new Error('updater/start: Must provide logger!'); } if (autoUpdateDisabled()) { /* If you really want to enable auto-updating in dev mode You need to create a dev-app-update.yml file. A sample can be found in dev-app-update.yml.sample. After that you can change `updatesEnabled` to `true` in the default config. */ logger.info( 'updater/start: Updates disabled - not starting new version checks' ); return; } await startUpdater(getMainWindow, messages, logger); } export function stop() { if (initialized) { stopUpdater(); initialized = false; } } function autoUpdateDisabled() { // We need to ensure that if auto update is not present in the user config then we assume it is on by default const userSetting = config.get('autoUpdate'); const autoUpdate = typeof userSetting !== 'boolean' || userSetting; return ( process.mas || // From Electron: Mac App Store build !getFromConfig('updatesEnabled') || // Hard coded config // tslint:disable-next-line: no-backbone-get-set-outside-model !autoUpdate // User setting ); }