make seen broadcasts work with localstorage

This commit is contained in:
Lisa P 2015-10-15 13:25:34 +02:00
parent 558f6e64c0
commit 9fa7e408cd
3 changed files with 37 additions and 27 deletions

View File

@ -17,23 +17,6 @@ Controller = Ember.Controller.extend
"#{location.protocol}//www.gravatar.com/avatar/#{@get('user.gravatarId')}?s=48&d=mm" "#{location.protocol}//www.gravatar.com/avatar/#{@get('user.gravatarId')}?s=48&d=mm"
).property('user.gravatarId') ).property('user.gravatarId')
unseenBroadcasts: (->
@get('broadcasts').filter (broadcast) ->
!broadcast.get('isSeen')
).property('broadcasts.[]', 'broadcasts.length')
v2broadcasts: (->
broadcasts = Ember.ArrayProxy.create(content: [])
if @get('currentUser.id')
@get('store').find('broadcast').then (result) ->
broadcasts.pushObjects(result.toArray())
console.log(broadcasts)
broadcasts
).property('currentUser.id')
broadcasts: (-> broadcasts: (->
if @get('auth.signedIn') if @get('auth.signedIn')
@ -47,14 +30,21 @@ Controller = Ember.Controller.extend
options.type = 'GET' options.type = 'GET'
options.headers = { Authorization: "token #{@auth.token()}" } 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) -> $.ajax("#{apiEndpoint}/v3/broadcasts", options).then (response) ->
array = response.broadcasts.filter((broadcast) -> if response.broadcasts.length
broadcast unless broadcast.expired array = response.broadcasts.filter((broadcast) ->
).map( (broadcast) -> unless broadcast.expired
Ember.Object.create(broadcast) if seenBroadcasts.indexOf(broadcast.id.toString()) == -1
).reverse() broadcast
).map( (broadcast) ->
broadcasts.set('lastBroadcastStatus', array[0].category) Ember.Object.create(broadcast)
).reverse()
if array.length
broadcasts.set('lastBroadcastStatus', array[0].category)
broadcasts.set('content', array) broadcasts.set('content', array)
broadcasts.set('isLoading', false) broadcasts.set('isLoading', false)
@ -69,6 +59,17 @@ Controller = Ember.Controller.extend
toggleBroadcasts: -> toggleBroadcasts: ->
@toggleProperty('showBroadcasts') @toggleProperty('showBroadcasts')
return false 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))
return false
} }
showCta: (-> showCta: (->

View File

@ -54,6 +54,15 @@
height: auto height: auto
transform: translateY(0) scale(1) transform: translateY(0) scale(1)
.icon-close
display: inline-block
width: 1.2em
height: 1.2em
float: right
background:
image: inline-image('line-icons/icon-failed.svg')
repeat: no-repeat
@media #{$medium-up} @media #{$medium-up}
position: absolute position: absolute
top: 3.3em top: 3.3em

View File

@ -11,13 +11,13 @@
</div> </div>
<ul class="broadcasts {{if showBroadcasts 'is-open'}}"> <ul class="broadcasts {{if showBroadcasts 'is-open'}}">
{{#each broadcasts.content as |broadcast|}} {{#each broadcasts.content as |broadcast|}}
<li><p><span class="broadcast-status {{broadcast.category}}" title="Transmitted on {{broadcast.updated_at}}"></span> {{{broadcast.message}}}</p></li> <li><p><span class="broadcast-status {{broadcast.category}}" title="Transmitted on {{broadcast.updated_at}}"></span> {{{broadcast.message}}} <a {{action 'markBroadcastAsSeen' broadcast}} class="icon-close"></a></p></li>
{{else}}
<li><p>There are no broadcasts transmitted</p></li>
{{/each}} {{/each}}
</ul> </ul>
{{/if}} {{/if}}
{{v2broadcasts}}
<nav id="navigation" class="navigation {{if is-open 'is-open'}}"> <nav id="navigation" class="navigation {{if is-open 'is-open'}}">
<ul> <ul>
<li><a href="http://blog.travis-ci.com" class="navigation-anchor">Blog</a></li> <li><a href="http://blog.travis-ci.com" class="navigation-anchor">Blog</a></li>