/
githubmirror
/
atom
Обзор
Документация
Войти
/
githubmirror
/
atom
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
packages/about/lib/update-manager.js
151 строка
4 KB
Rafael Oleza
Reformat all JS files using prettier
31 май 2019, 19:33
31 май 2019, 19:33
7f3f040
Код
Авторство
О чём код?
const { Emitter, CompositeDisposable } = require('atom'); const Unsupported = 'unsupported'; const Idle = 'idle'; const CheckingForUpdate = 'checking'; const DownloadingUpdate = 'downloading'; const UpdateAvailableToInstall = 'update-available'; const UpToDate = 'no-update-available'; const ErrorState = 'error'; let UpdateManager = class UpdateManager { constructor() { this.emitter = new Emitter(); this.currentVersion = atom.getVersion(); this.availableVersion = atom.getVersion(); this.resetState(); this.listenForAtomEvents(); } listenForAtomEvents() { this.subscriptions = new CompositeDisposable(); this.subscriptions.add( atom.autoUpdater.onDidBeginCheckingForUpdate(() => { this.setState(CheckingForUpdate); }), atom.autoUpdater.onDidBeginDownloadingUpdate(() => { this.setState(DownloadingUpdate); }), atom.autoUpdater.onDidCompleteDownloadingUpdate(({ releaseVersion }) => { this.setAvailableVersion(releaseVersion); }), atom.autoUpdater.onUpdateNotAvailable(() => { this.setState(UpToDate); }), atom.autoUpdater.onUpdateError(() => { this.setState(ErrorState); }), atom.config.observe('core.automaticallyUpdate', value => { this.autoUpdatesEnabled = value; this.emitDidChange(); }) ); // TODO: When https://github.com/atom/electron/issues/4587 is closed we can add this support. // atom.autoUpdater.onUpdateAvailable => // @find('.about-updates-item').removeClass('is-shown') // @updateAvailable.addClass('is-shown') } dispose() { this.subscriptions.dispose(); } onDidChange(callback) { return this.emitter.on('did-change', callback); } emitDidChange() { this.emitter.emit('did-change'); } getAutoUpdatesEnabled() { return ( this.autoUpdatesEnabled && this.state !== UpdateManager.State.Unsupported ); } setAutoUpdatesEnabled(enabled) { return atom.config.set('core.automaticallyUpdate', enabled); } getErrorMessage() { return atom.autoUpdater.getErrorMessage(); } getState() { return this.state; } setState(state) { this.state = state; this.emitDidChange(); } resetState() { this.state = atom.autoUpdater.platformSupportsUpdates() ? atom.autoUpdater.getState() : Unsupported; this.emitDidChange(); } getAvailableVersion() { return this.availableVersion; } setAvailableVersion(version) { this.availableVersion = version; if (this.availableVersion !== this.currentVersion) { this.state = UpdateAvailableToInstall; } else { this.state = UpToDate; } this.emitDidChange(); } checkForUpdate() { atom.autoUpdater.checkForUpdate(); } restartAndInstallUpdate() { atom.autoUpdater.restartAndInstallUpdate(); } getReleaseNotesURLForCurrentVersion() { return this.getReleaseNotesURLForVersion(this.currentVersion); } getReleaseNotesURLForAvailableVersion() { return this.getReleaseNotesURLForVersion(this.availableVersion); } getReleaseNotesURLForVersion(appVersion) { // Dev versions will not have a releases page if (appVersion.indexOf('dev') > -1) { return 'https://atom.io/releases'; } if (!appVersion.startsWith('v')) { appVersion = `v${appVersion}`; } const releaseRepo = appVersion.indexOf('nightly') > -1 ? 'atom-nightly-releases' : 'atom'; return `https://github.com/atom/${releaseRepo}/releases/tag/${appVersion}`; } }; UpdateManager.State = { Unsupported: Unsupported, Idle: Idle, CheckingForUpdate: CheckingForUpdate, DownloadingUpdate: DownloadingUpdate, UpdateAvailableToInstall: UpdateAvailableToInstall, UpToDate: UpToDate, Error: ErrorState }; module.exports = UpdateManager;