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 localUserConfig: 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!'); } if (!userConfig) { throw new Error('updater/start: userConfig is needed!'); } if (!messages) { throw new Error('updater/start: Must provide messages!'); } if (!logger) { throw new Error('updater/start: Must provide logger!'); } initialized = true; localUserConfig = userConfig; // reused below if (autoUpdateDisabled()) { 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 = localUserConfig.get('autoUpdate'); const autoUpdate = typeof userSetting !== 'boolean' || userSetting; return ( process.mas || // From Electron: Mac App Store build // tslint:disable-next-line: no-backbone-get-set-outside-model !autoUpdate // User setting ); }