Fix flash messages
This commit is contained in:
parent
a8d585cb74
commit
ca54a64211
|
@ -1,58 +1,15 @@
|
||||||
`import Ember from 'ember'`
|
`import Ember from 'ember'`
|
||||||
`import LimitedArray from 'travis/utils/limited-array'`
|
|
||||||
|
|
||||||
FlashDisplayComponent = Ember.Component.extend
|
FlashDisplayComponent = Ember.Component.extend
|
||||||
auth: Ember.inject.service()
|
flashes: Ember.inject.service()
|
||||||
store: Ember.inject.service()
|
|
||||||
currentUserBinding: 'auth.currentUser'
|
|
||||||
|
|
||||||
classNames: ['flash']
|
classNames: ['flash']
|
||||||
tagName: 'ul'
|
tagName: 'ul'
|
||||||
|
|
||||||
init: ->
|
messagesBinding: 'flashes.messages'
|
||||||
@_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')
|
|
||||||
@get('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.constructor.modelName == "broadcast"
|
|
||||||
msg.setSeen()
|
|
||||||
@notifyPropertyChange('unseenBroadcasts')
|
|
||||||
else
|
|
||||||
@get('flashes').removeObject(msg)
|
|
||||||
|
|
||||||
actions:
|
actions:
|
||||||
closeMessage: (msg) ->
|
closeMessage: (msg) ->
|
||||||
@close(msg)
|
@get('flashes').close(msg)
|
||||||
|
|
||||||
`export default FlashDisplayComponent`
|
`export default FlashDisplayComponent`
|
||||||
|
|
9
app/controllers/flash.js
Normal file
9
app/controllers/flash.js
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
import Ember from 'ember';
|
||||||
|
|
||||||
|
export default Ember.Controller.extend({
|
||||||
|
flashes: Ember.inject.service(),
|
||||||
|
|
||||||
|
loadFlashes() {
|
||||||
|
return this.get('flashes').loadFlashes(...arguments);
|
||||||
|
}
|
||||||
|
});
|
|
@ -8,6 +8,7 @@ initialize = (container, app) ->
|
||||||
app.inject('controller', 'auth', 'auth:main')
|
app.inject('controller', 'auth', 'auth:main')
|
||||||
app.inject('application', 'auth', 'auth:main')
|
app.inject('application', 'auth', 'auth:main')
|
||||||
app.inject('component', 'auth', 'auth:main')
|
app.inject('component', 'auth', 'auth:main')
|
||||||
|
app.inject('service:flashes', 'auth', 'auth:main')
|
||||||
|
|
||||||
app.inject('auth', 'store', 'service:store')
|
app.inject('auth', 'store', 'service:store')
|
||||||
|
|
||||||
|
|
51
app/services/flashes.coffee
Normal file
51
app/services/flashes.coffee
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
`import Ember from 'ember'`
|
||||||
|
`import LimitedArray from 'travis/utils/limited-array'`
|
||||||
|
|
||||||
|
FlashesService = Ember.Service.extend
|
||||||
|
store: Ember.inject.service()
|
||||||
|
|
||||||
|
currentUserBinding: 'auth.currentUser'
|
||||||
|
|
||||||
|
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')
|
||||||
|
@get('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.constructor.modelName == "broadcast"
|
||||||
|
msg.setSeen()
|
||||||
|
@notifyPropertyChange('unseenBroadcasts')
|
||||||
|
else
|
||||||
|
@get('flashes').removeObject(msg)
|
||||||
|
|
||||||
|
`export default FlashesService`
|
|
@ -1 +0,0 @@
|
||||||
|
|
Loading…
Reference in New Issue
Block a user