session-desktop/ts/updater/index.ts
2021-04-22 18:03:58 +10:00

64 lines
1.8 KiB
TypeScript

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
);
}