51 lines
1.6 KiB
JavaScript
51 lines
1.6 KiB
JavaScript
module.exports = {
|
|
init
|
|
}
|
|
|
|
var electron = require('electron')
|
|
var get = require('simple-get')
|
|
|
|
var config = require('../config')
|
|
var log = require('./log')
|
|
var windows = require('./windows')
|
|
|
|
var autoUpdater = electron.autoUpdater
|
|
|
|
function init () {
|
|
autoUpdater.on('error', function (err) {
|
|
log.error('App update error: ' + err.message || err)
|
|
})
|
|
|
|
autoUpdater.setFeedURL(config.AUTO_UPDATE_URL)
|
|
|
|
/*
|
|
* We always check for updates on app startup. To keep app startup fast, we delay this
|
|
* first check so it happens when there is less going on.
|
|
*/
|
|
setTimeout(checkForUpdates, config.AUTO_UPDATE_CHECK_STARTUP_DELAY)
|
|
|
|
autoUpdater.on('checking-for-update', () => log('Checking for app update'))
|
|
autoUpdater.on('update-available', () => log('App update available'))
|
|
autoUpdater.on('update-not-available', () => log('App update not available'))
|
|
autoUpdater.on('update-downloaded', function (e, releaseNotes, releaseName, releaseDate, updateURL) {
|
|
log('App update downloaded: ', releaseName, updateURL)
|
|
})
|
|
}
|
|
|
|
function checkForUpdates () {
|
|
// Electron's built-in auto updater only supports Mac and Windows, for now
|
|
if (process.platform !== 'linux') {
|
|
return autoUpdater.checkForUpdates()
|
|
}
|
|
|
|
// If we're on Linux, we have to do it ourselves
|
|
get.concat(config.AUTO_UPDATE_URL, function (err, res, data) {
|
|
if (err) return log('Error checking for app update: ' + err.message)
|
|
if (![200, 204].includes(res.statusCode)) return log('Error checking for app update, got HTTP ' + res.statusCode)
|
|
if (res.statusCode !== 200) return
|
|
|
|
var obj = JSON.parse(data)
|
|
windows.main.send('dispatch', 'updateAvailable', obj.version)
|
|
})
|
|
}
|