travis-web/app/controllers/top.coffee
2015-10-21 10:27:29 +02:00

85 lines
2.6 KiB
CoffeeScript

`import Ember from 'ember'`
`import Ajax from 'travis/utils/ajax'`
`import config from 'travis/config/environment'`
Controller = Ember.Controller.extend
needs: ['currentUser']
userBinding: 'controllers.currentUser.model'
store: Ember.inject.service()
currentUserBinding: 'auth.currentUser'
userName: (->
@get('user.name') || @get('user.login')
).property('user.login', 'user.name')
gravatarUrl: (->
"#{location.protocol}//www.gravatar.com/avatar/#{@get('user.gravatarId')}?s=48&d=mm"
).property('user.gravatarId')
broadcasts: (->
if @get('auth.signedIn')
broadcasts = Ember.ArrayProxy.create(
content: [],
lastBroadcastStatus: '',
isLoading: true
)
apiEndpoint = config.apiEndpoint
options = {}
options.type = 'GET'
options.headers = { Authorization: "token #{@auth.token()}" }
seenBroadcasts = Travis.storage.getItem('travis.seen_broadcasts')
seenBroadcasts = JSON.parse(seenBroadcasts) if seenBroadcasts
$.ajax("#{apiEndpoint}/v3/broadcasts", options).then (response) ->
if response.broadcasts.length
receivedBroadcasts = response.broadcasts.filter((broadcast) ->
unless broadcast.expired
if seenBroadcasts.indexOf(broadcast.id.toString()) == -1
broadcast
).map( (broadcast) ->
Ember.Object.create(broadcast)
).reverse()
if receivedBroadcasts.length
broadcasts.set('lastBroadcastStatus', receivedBroadcasts[0].category)
broadcasts.set('content', receivedBroadcasts)
broadcasts.set('isLoading', false)
broadcasts
).property('broadcasts')
actions: {
toggleBurgerMenu: ->
@toggleProperty('is-open')
return false
toggleBroadcasts: ->
@toggleProperty('showBroadcasts')
return false
markBroadcastAsSeen: (broadcast) ->
id = broadcast.get('id').toString()
seenBroadcasts = Travis.storage.getItem('travis.seen_broadcasts')
if seenBroadcasts
seenBroadcasts = JSON.parse(seenBroadcasts)
else
seenBroadcasts = []
seenBroadcasts.push(id)
Travis.storage.setItem('travis.seen_broadcasts', JSON.stringify(seenBroadcasts))
@get('broadcasts.content').removeObject(broadcast)
unless @get('broadcasts.content').length
@set('broadcasts.lastBroadcastStatus', '')
else
@set('broadcasts.lastBroadcastStatus', @get('broadcasts.content')[0].category)
return false
}
showCta: (->
!@get('auth.signedIn') && !@get('config.pro') && !@get('landingPage')
).property('auth.signedIn', 'landingPage')
`export default Controller`