From 322c20ce7ba0992962b108be7731ea06d527d433 Mon Sep 17 00:00:00 2001 From: Michael Radionov Date: Tue, 27 Oct 2015 00:32:17 +0300 Subject: [PATCH] Hide reposts in stream Fixes: https://github.com/Soundnode/soundnode-app/issues/364 --- app/public/js/stream/streamCtrl.js | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/app/public/js/stream/streamCtrl.js b/app/public/js/stream/streamCtrl.js index b2a424f8..ffe3d346 100644 --- a/app/public/js/stream/streamCtrl.js +++ b/app/public/js/stream/streamCtrl.js @@ -2,7 +2,8 @@ app.controller('StreamCtrl', function ($scope, SCapiService, $rootScope) { var endpoint = 'me/activities' - , params = 'limit=33'; + , params = 'limit=33' + , tracksIds = []; $scope.title = 'Stream'; $scope.data = ''; @@ -11,7 +12,8 @@ app.controller('StreamCtrl', function ($scope, SCapiService, $rootScope) { SCapiService.get(endpoint, params) .then(function(data) { - $scope.data = data.collection; + var tracks = filterTracks(data.collection); + $scope.data = tracks; }, function(error) { console.log('error', error); }).finally(function() { @@ -35,10 +37,9 @@ app.controller('StreamCtrl', function ($scope, SCapiService, $rootScope) { SCapiService.getNextPage() .then(function(data) { - markLikedTracks(data); - for ( var i = 0; i < data.collection.length; i++ ) { - $scope.data.push( data.collection[i] ) - } + var tracks = filterTracks(data.collection); + markLikedTracks(tracks); + $scope.data = $scope.data.concat(tracks); }, function(error) { console.log('error', error); }).finally(function(){ @@ -47,6 +48,18 @@ app.controller('StreamCtrl', function ($scope, SCapiService, $rootScope) { }); }; + function filterTracks(tracks) { + // Filter reposts: display only first appearance of track in stream + var result = tracks.filter(function (track) { + var exists = tracksIds.indexOf(track.origin.id) > -1; + if (!exists) { + tracksIds.push(track.origin.id); + } + return !exists; + }); + return result; + } + function markLikedTracks (tracks) { var tracksData = tracks.collection || tracks; for (var i = 0; i < tracksData.length; ++i) {