Mailspring/internal_packages/unread-notifications/lib/main.coffee

38 lines
1.1 KiB
CoffeeScript

_ = require 'underscore-plus'
{Actions} = require 'inbox-exports'
module.exports =
activate: ->
@unlisteners = []
@unlisteners.push Actions.didPassivelyReceiveNewModels.listen(@_onNewMailReceived, @)
@activationTime = Date.now()
deactivate: ->
fn() for fn in @unlisteners
serialize: ->
_onNewMailReceived: (models) ->
# Display a notification if we've received new messages
newUnreadMessages = _.filter (models['message'] ? []), (msg) =>
msg.unread is true and msg.date?.valueOf() >= @activationTime
if newUnreadMessages.length is 1
msg = newUnreadMessages.pop()
notif = new Notification(msg.from[0].displayName(), {
body: msg.subject
tag: 'unread-update'
})
notif.onclick = ->
atom.displayWindow()
Actions.selectTagId("inbox")
Actions.selectThreadId(msg.threadId)
if newUnreadMessages.length > 1
new Notification("#{newUnreadMessages.length} Unread Messages", {
tag: 'unread-update'
})
if newUnreadMessages.length > 0
atom.playSound('new_mail.ogg')