Skip to content

Commit 78a3bfd

Browse files
committed
Locking track sorting/deleting based on permissions
1 parent 713d583 commit 78a3bfd

19 files changed

Lines changed: 126 additions & 26 deletions

File tree

Gruntfile.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,5 @@ module.exports = function(grunt) {
103103

104104
// Default task(s).
105105
grunt.registerTask('default', ['copy', 'concat', 'ngAnnotate', 'uglify', 'sass', 'cssmin', 'processhtml', 'watch']);
106-
grunt.registerTask('dev', ['copy', 'sass', 'cssmin', 'processhtml', 'watch:css', 'watch:html']);
107106

108107
};

mopidy_spotmop/static/app-annotated.js

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31198,6 +31198,13 @@ angular.module('spotmop.browse.playlist', [])
3119831198
$scope.tracklist = { tracks: [], type: 'track' };
3119931199
$scope.totalTime = 0;
3120031200
$scope.following = false;
31201+
$scope.canEdit = function(){
31202+
if( $scope.origin == 'spotify' && typeof(playlist) !== 'undefined' && typeof(playlist.owner) !== 'undefined' ){
31203+
return ( playlist.owner.id == spotifyUser.id );
31204+
}else if( $scope.origin == 'm3u' ){
31205+
return true;
31206+
}
31207+
}
3120131208

3120231209
$scope.deletePlaylist = function(){
3120331210
MopidyService.deletePlaylist( uri )
@@ -31461,6 +31468,14 @@ angular.module('spotmop.browse.playlist', [])
3146131468

3146231469
// remove our selected tracks
3146331470
$scope.tracklist.tracks = $filter('nullOrUndefined')( $scope.tracklist.tracks, 'selected' );
31471+
31472+
// catch rejections (due to Spotify API or due to denied permission)
31473+
}, function(){
31474+
31475+
// un-transition all our tracks
31476+
angular.forEach( selectedTracks, function( selectedTrack, index ){
31477+
selectedTrack.transitioning = false;
31478+
});
3146431479
});
3146531480
}
3146631481

@@ -32017,11 +32032,13 @@ angular.module('spotmop.directives', [])
3201732032
// check to see if what we're hovering accepts what we're dragging
3201832033
var dropTarget = getDropTarget( event );
3201932034
var accepts = targetAcceptsType( dropTarget );
32035+
3202032036
if( accepts ){
3202132037
dropTarget.addClass('dropping');
3202232038

3202332039
// if we're dropping on a track, add the dropping class to it too
3202432040
// this allows us to style the drop location for Chrome that doesn't listen for :hover
32041+
// TODO: This doesn't seem to fire at all??
3202532042
var trackDroppingOn = $(event.target);
3202632043
if( !trackDroppingOn.hasClass('track') ) trackDroppingOn = trackDroppingOn.closest('.track');
3202732044
if( trackDroppingOn.hasClass('track') ){
@@ -36847,7 +36864,8 @@ angular.module('spotmop.services.playlistManager', [])
3684736864

3684836865
if( playlistOwnerID != currentUserID ){
3684936866
NotifyService.error('Cannot modify to a playlist you don\'t own');
36850-
return false;
36867+
deferred.reject();
36868+
break;
3685136869
}
3685236870

3685336871
// parse these uris to spotify and delete these tracks
@@ -36856,7 +36874,7 @@ angular.module('spotmop.services.playlistManager', [])
3685636874

3685736875
if( typeof(response.error) !== 'undefined' ){
3685836876
NotifyService.error( response.error.message );
36859-
deferred.reject( response.error.message );
36877+
deferred.reject( response.error.message );
3686036878
}else{
3686136879
NotifyService.notify('Removed '+indexes.length+' tracks from playlist');
3686236880
deferred.resolve({ type: playlistUriScheme, indexes: indexes, snapshot_id: response.snapshot_id });

mopidy_spotmop/static/app.css

Lines changed: 0 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

mopidy_spotmop/static/app.css.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

mopidy_spotmop/static/app.js

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31198,6 +31198,13 @@ angular.module('spotmop.browse.playlist', [])
3119831198
$scope.tracklist = { tracks: [], type: 'track' };
3119931199
$scope.totalTime = 0;
3120031200
$scope.following = false;
31201+
$scope.canEdit = function(){
31202+
if( $scope.origin == 'spotify' && typeof(playlist) !== 'undefined' && typeof(playlist.owner) !== 'undefined' ){
31203+
return ( playlist.owner.id == spotifyUser.id );
31204+
}else if( $scope.origin == 'm3u' ){
31205+
return true;
31206+
}
31207+
}
3120131208

3120231209
$scope.deletePlaylist = function(){
3120331210
MopidyService.deletePlaylist( uri )
@@ -31461,6 +31468,14 @@ angular.module('spotmop.browse.playlist', [])
3146131468

3146231469
// remove our selected tracks
3146331470
$scope.tracklist.tracks = $filter('nullOrUndefined')( $scope.tracklist.tracks, 'selected' );
31471+
31472+
// catch rejections (due to Spotify API or due to denied permission)
31473+
}, function(){
31474+
31475+
// un-transition all our tracks
31476+
angular.forEach( selectedTracks, function( selectedTrack, index ){
31477+
selectedTrack.transitioning = false;
31478+
});
3146431479
});
3146531480
}
3146631481

@@ -32017,11 +32032,13 @@ angular.module('spotmop.directives', [])
3201732032
// check to see if what we're hovering accepts what we're dragging
3201832033
var dropTarget = getDropTarget( event );
3201932034
var accepts = targetAcceptsType( dropTarget );
32035+
3202032036
if( accepts ){
3202132037
dropTarget.addClass('dropping');
3202232038

3202332039
// if we're dropping on a track, add the dropping class to it too
3202432040
// this allows us to style the drop location for Chrome that doesn't listen for :hover
32041+
// TODO: This doesn't seem to fire at all??
3202532042
var trackDroppingOn = $(event.target);
3202632043
if( !trackDroppingOn.hasClass('track') ) trackDroppingOn = trackDroppingOn.closest('.track');
3202732044
if( trackDroppingOn.hasClass('track') ){
@@ -36847,7 +36864,8 @@ angular.module('spotmop.services.playlistManager', [])
3684736864

3684836865
if( playlistOwnerID != currentUserID ){
3684936866
NotifyService.error('Cannot modify to a playlist you don\'t own');
36850-
return false;
36867+
deferred.reject();
36868+
break;
3685136869
}
3685236870

3685336871
// parse these uris to spotify and delete these tracks
@@ -36856,7 +36874,7 @@ angular.module('spotmop.services.playlistManager', [])
3685636874

3685736875
if( typeof(response.error) !== 'undefined' ){
3685836876
NotifyService.error( response.error.message );
36859-
deferred.reject( response.error.message );
36877+
deferred.reject( response.error.message );
3686036878
}else{
3686136879
NotifyService.notify('Removed '+indexes.length+' tracks from playlist');
3686236880
deferred.resolve({ type: playlistUriScheme, indexes: indexes, snapshot_id: response.snapshot_id });

mopidy_spotmop/static/app.min.css

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

mopidy_spotmop/static/app.min.css.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

mopidy_spotmop/static/app.min.js

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

mopidy_spotmop/static/app.min.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

mopidy_spotmop/static/app/browse/playlist/controller.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,13 @@ angular.module('spotmop.browse.playlist', [])
2727
$scope.tracklist = { tracks: [], type: 'track' };
2828
$scope.totalTime = 0;
2929
$scope.following = false;
30+
$scope.canEdit = function(){
31+
if( $scope.origin == 'spotify' && typeof(playlist) !== 'undefined' && typeof(playlist.owner) !== 'undefined' ){
32+
return ( playlist.owner.id == spotifyUser.id );
33+
}else if( $scope.origin == 'm3u' ){
34+
return true;
35+
}
36+
}
3037

3138
$scope.deletePlaylist = function(){
3239
MopidyService.deletePlaylist( uri )
@@ -290,6 +297,14 @@ angular.module('spotmop.browse.playlist', [])
290297

291298
// remove our selected tracks
292299
$scope.tracklist.tracks = $filter('nullOrUndefined')( $scope.tracklist.tracks, 'selected' );
300+
301+
// catch rejections (due to Spotify API or due to denied permission)
302+
}, function(){
303+
304+
// un-transition all our tracks
305+
angular.forEach( selectedTracks, function( selectedTrack, index ){
306+
selectedTrack.transitioning = false;
307+
});
293308
});
294309
}
295310

0 commit comments

Comments
 (0)