From 9fa7e408cd2a09dd14656625488c23a05a39a477 Mon Sep 17 00:00:00 2001 From: Lisa P Date: Thu, 15 Oct 2015 13:25:34 +0200 Subject: [PATCH] make seen broadcasts work with localstorage --- app/controllers/top.coffee | 49 +++++++++++++------------- app/styles/app/layouts/broadcasts.sass | 9 +++++ app/templates/top.hbs | 6 ++-- 3 files changed, 37 insertions(+), 27 deletions(-) diff --git a/app/controllers/top.coffee b/app/controllers/top.coffee index 986b9513..ce2a9c5e 100644 --- a/app/controllers/top.coffee +++ b/app/controllers/top.coffee @@ -17,23 +17,6 @@ Controller = Ember.Controller.extend "#{location.protocol}//www.gravatar.com/avatar/#{@get('user.gravatarId')}?s=48&d=mm" ).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: (-> if @get('auth.signedIn') @@ -47,14 +30,21 @@ Controller = Ember.Controller.extend 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) -> - array = response.broadcasts.filter((broadcast) -> - broadcast unless broadcast.expired - ).map( (broadcast) -> - Ember.Object.create(broadcast) - ).reverse() - - broadcasts.set('lastBroadcastStatus', array[0].category) + if response.broadcasts.length + array = response.broadcasts.filter((broadcast) -> + unless broadcast.expired + if seenBroadcasts.indexOf(broadcast.id.toString()) == -1 + broadcast + ).map( (broadcast) -> + Ember.Object.create(broadcast) + ).reverse() + + if array.length + broadcasts.set('lastBroadcastStatus', array[0].category) broadcasts.set('content', array) broadcasts.set('isLoading', false) @@ -69,6 +59,17 @@ Controller = Ember.Controller.extend 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)) + return false } showCta: (-> diff --git a/app/styles/app/layouts/broadcasts.sass b/app/styles/app/layouts/broadcasts.sass index fd6045cb..814b0ea3 100644 --- a/app/styles/app/layouts/broadcasts.sass +++ b/app/styles/app/layouts/broadcasts.sass @@ -54,6 +54,15 @@ height: auto 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} position: absolute top: 3.3em diff --git a/app/templates/top.hbs b/app/templates/top.hbs index 0108b78d..370f6c55 100644 --- a/app/templates/top.hbs +++ b/app/templates/top.hbs @@ -11,13 +11,13 @@ {{/if}} - {{v2broadcasts}} -