Mailspring/internal_packages/notification-update-available/lib/main.cjsx

69 lines
2.1 KiB
CoffeeScript

remote = require 'remote'
{Actions} = require 'nylas-exports'
ipc = require('ipc')
module.exports =
activate: (@state) ->
# Populate our initial state directly from the auto update manager.
updater = remote.getGlobal('application').autoUpdateManager
@_unlisten = Actions.notificationActionTaken.listen(@_onNotificationActionTaken, @)
configVersion = atom.config.get("lastVersion")
currentVersion = atom.getVersion()
if configVersion and configVersion isnt currentVersion
atom.config.set("lastVersion", currentVersion)
@displayThanksNotification()
if updater.getState() is 'update-available'
@displayNotification(updater.releaseVersion)
atom.onUpdateAvailable ({releaseVersion, releaseNotes} = {}) =>
@displayNotification(releaseVersion)
displayThanksNotification: ->
Actions.postNotification
type: 'info'
tag: 'app-update'
sticky: true
message: "You're running the latest version of N1 - view the changelog to see what's new.",
icon: 'fa-magic'
actions: [{
dismisses: true
label: 'Thanks'
id: 'release-bar:no-op'
},{
default: true
dismisses: true
label: 'See What\'s New'
id: 'release-bar:view-changelog'
}]
displayNotification: (version) ->
version = if version then "(#{version})" else ''
Actions.postNotification
type: 'info'
tag: 'app-update'
sticky: true
message: "An update to N1 is available #{version} - click to update now!",
icon: 'fa-flag'
actions: [{
label: 'See What\'s New'
id: 'release-bar:view-changelog'
},{
label: 'Install Now'
dismisses: true
default: true
id: 'release-bar:install-update'
}]
deactivate: ->
@_unlisten()
_onNotificationActionTaken: ({notification, action}) ->
if action.id is 'release-bar:install-update'
ipc.send 'command', 'application:install-update'
true
if action.id is 'release-bar:view-changelog'
require('shell').openExternal('https://github.com/nylas/N1/blob/master/CHANGELOG.md')
false