worklog-reminder
53 строки · 1.6 Кб
1import path from 'path';2import { app, dialog, shell } from 'electron';3import fetch from 'node-fetch';4import AbstractIntervalTask from '../AbstractIntervalTask';5import config from '../../../app.config.main';6
7const repositoryName = 'Doka-NT/worklog-reminder';8const githubHost = 'https://github.com';9const updaterHost = 'https://update.electronjs.org';10const releasePage = 'releases/latest';11
12class CheckForUpdatesTask extends AbstractIntervalTask {13_iteration() {14const url = `${updaterHost}/${repositoryName}/${process.platform}-${process.arch}/${app.getVersion()}`;15
16fetch(url)17.then((response) => {18if (response.status === 200) {19// update is available20this.onUpdateAvailable();21} else if (response.status === 204) {22// app is up to date23console.log('Application is up to date');24} else {25// no updates or other state/error26console.log('Updates is not available');27}28});29}30
31onUpdateAvailable() {32const dialogOpts = {33type: 'info',34buttons: ['Download now', 'Later'],35defaultId: 0,36cancelId: 1,37title: 'Application Update',38icon: path.join(config.assetsDir, 'appIconColored.png'),39detail: 'A new version of Worklog Reminder is available. Do you want to download it now?',40};41
42dialog.showMessageBox(dialogOpts).then(({ response }) => {43if (response === 0) {44shell.openExternal(`${githubHost}/${repositoryName}/${releasePage}`);45}46});47
48// once message dialog is shown, stop checking updates49this.stop();50}51}
52
53export default CheckForUpdatesTask;54