2
2
3
3
app . controller ( 'StreamCtrl' , function ( $scope , SCapiService , $rootScope ) {
4
4
var endpoint = 'me/activities'
5
- , params = 'limit=33' ;
5
+ , params = 'limit=33'
6
+ , tracksIds = [ ] ;
6
7
7
8
$scope . title = 'Stream' ;
8
9
$scope . data = '' ;
@@ -11,7 +12,8 @@ app.controller('StreamCtrl', function ($scope, SCapiService, $rootScope) {
11
12
12
13
SCapiService . get ( endpoint , params )
13
14
. then ( function ( data ) {
14
- $scope . data = data . collection ;
15
+ var tracks = filterTracks ( data . collection ) ;
16
+ $scope . data = tracks ;
15
17
} , function ( error ) {
16
18
console . log ( 'error' , error ) ;
17
19
} ) . finally ( function ( ) {
@@ -35,10 +37,9 @@ app.controller('StreamCtrl', function ($scope, SCapiService, $rootScope) {
35
37
36
38
SCapiService . getNextPage ( )
37
39
. 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 ) ;
42
43
} , function ( error ) {
43
44
console . log ( 'error' , error ) ;
44
45
} ) . finally ( function ( ) {
@@ -47,6 +48,18 @@ app.controller('StreamCtrl', function ($scope, SCapiService, $rootScope) {
47
48
} ) ;
48
49
} ;
49
50
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
+
50
63
function markLikedTracks ( tracks ) {
51
64
var tracksData = tracks . collection || tracks ;
52
65
for ( var i = 0 ; i < tracksData . length ; ++ i ) {
0 commit comments