Linux update notifications

Fixes #257
This commit is contained in:
DC
2016-03-28 16:16:43 -07:00
parent 25db4eec9d
commit 86069a7173
7 changed files with 86 additions and 5 deletions

View File

@@ -3,9 +3,11 @@ module.exports = {
}
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
@@ -20,7 +22,7 @@ function init () {
* 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(() => autoUpdater.checkForUpdates(), config.AUTO_UPDATE_CHECK_STARTUP_DELAY)
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'))
@@ -29,3 +31,22 @@ function init () {
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)
// TODO: version should be included in the response object, we shouldn'v have to parse obj.name
var version = obj.name.slice(obj.name.lastIndexOf('v') + 1)
windows.main.send('dispatch', 'updateAvailable', version)
})
}