travis-web/app/controllers/flash.coffee
Piotr Sarnacki df4b715ce9 Fix broadcasts
For some reason using property.[] stopped working in flash controller,
so I'm using length for now, which should work properly in case of
broadcasts as they're loaded only once anyway.
2015-09-03 11:22:11 +02:00

56 lines
1.5 KiB
CoffeeScript

`import Ember from 'ember'`
`import LimitedArray from 'travis/utils/limited-array'`
`import Broadcast from 'travis/models/broadcast'`
Controller = Ember.Controller.extend
needs: ['currentUser']
currentUserBinding: 'controllers.currentUser.model'
init: ->
@_super.apply this, arguments
@set('flashes', LimitedArray.create(limit: 1, content: []))
messages: (->
broadcasts = @get('unseenBroadcasts')
flashes = @get('flashes')
model = []
model.pushObjects(broadcasts) if broadcasts
model.pushObjects(flashes.toArray().reverse()) if flashes
model.uniq()
).property('unseenBroadcasts.[]', 'flashes.[]', 'unseenBroadcasts.length', 'flashes.length')
unseenBroadcasts: (->
@get('broadcasts').filter (broadcast) ->
!broadcast.get('isSeen')
).property('broadcasts.[]', 'broadcasts.length')
broadcasts: (->
broadcasts = Ember.ArrayProxy.create(content: [])
if @get('currentUser.id')
@store.find('broadcast').then (result) ->
broadcasts.pushObjects(result.toArray())
broadcasts
).property('currentUser.id')
loadFlashes: (msgs) ->
for msg in msgs
type = Object.keys(msg)[0]
msg = { type: type, message: msg[type] }
@get('flashes').unshiftObject(msg)
Ember.run.later(this, (-> @get('flashes.content').removeObject(msg)), 15000)
close: (msg) ->
if msg instanceof Broadcast
msg.setSeen()
@notifyPropertyChange('unseenBroadcasts')
else
@get('flashes').removeObject(msg)
actions:
close: (msg) ->
@close(msg)
`export default Controller`