Skip to content

Commit d2402cb

Browse files
committed
Merge pull request #425 from mradionov/hide-reposts-in-stream
fix #364: Hide reposts in stream
2 parents 10abb6d + 322c20c commit d2402cb

File tree

1 file changed

+19
-6
lines changed

1 file changed

+19
-6
lines changed

app/public/js/stream/streamCtrl.js

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22

33
app.controller('StreamCtrl', function ($scope, SCapiService, $rootScope) {
44
var endpoint = 'me/activities'
5-
, params = 'limit=33';
5+
, params = 'limit=33'
6+
, tracksIds = [];
67

78
$scope.title = 'Stream';
89
$scope.data = '';
@@ -11,7 +12,8 @@ app.controller('StreamCtrl', function ($scope, SCapiService, $rootScope) {
1112

1213
SCapiService.get(endpoint, params)
1314
.then(function(data) {
14-
$scope.data = data.collection;
15+
var tracks = filterTracks(data.collection);
16+
$scope.data = tracks;
1517
}, function(error) {
1618
console.log('error', error);
1719
}).finally(function() {
@@ -35,10 +37,9 @@ app.controller('StreamCtrl', function ($scope, SCapiService, $rootScope) {
3537

3638
SCapiService.getNextPage()
3739
.then(function(data) {
38-
markLikedTracks(data);
39-
for ( var i = 0; i < data.collection.length; i++ ) {
40-
$scope.data.push( data.collection[i] )
41-
}
40+
var tracks = filterTracks(data.collection);
41+
markLikedTracks(tracks);
42+
$scope.data = $scope.data.concat(tracks);
4243
}, function(error) {
4344
console.log('error', error);
4445
}).finally(function(){
@@ -47,6 +48,18 @@ app.controller('StreamCtrl', function ($scope, SCapiService, $rootScope) {
4748
});
4849
};
4950

51+
function filterTracks(tracks) {
52+
// Filter reposts: display only first appearance of track in stream
53+
var result = tracks.filter(function (track) {
54+
var exists = tracksIds.indexOf(track.origin.id) > -1;
55+
if (!exists) {
56+
tracksIds.push(track.origin.id);
57+
}
58+
return !exists;
59+
});
60+
return result;
61+
}
62+
5063
function markLikedTracks (tracks) {
5164
var tracksData = tracks.collection || tracks;
5265
for (var i = 0; i < tracksData.length; ++i) {

0 commit comments

Comments
 (0)