2016-04-17 17:38:58 +02:00
|
|
|
'use strict';
|
|
|
|
|
2016-04-17 19:37:16 +02:00
|
|
|
(function(){
|
|
|
|
|
2016-04-17 23:20:24 +02:00
|
|
|
var app = angular.module('app',['ui.router', 'ngStorage']);
|
2016-04-17 19:37:16 +02:00
|
|
|
|
2016-04-17 20:05:11 +02:00
|
|
|
app.config(['$stateProvider','$urlRouterProvider',function($stateProvider, $urlRouterProvider){
|
|
|
|
$stateProvider
|
|
|
|
.state('finder_public',{
|
|
|
|
templateUrl:'partials/home.html',
|
|
|
|
url: '/',
|
|
|
|
controller: 'HomeCtrl'
|
|
|
|
})
|
|
|
|
.state('finder',{
|
2016-04-17 22:38:45 +02:00
|
|
|
abstract: true,
|
2016-04-17 20:05:11 +02:00
|
|
|
templateUrl:'partials/logged.html',
|
|
|
|
url: '/finder',
|
|
|
|
controller: 'MainCtrl'
|
|
|
|
})
|
|
|
|
.state('finder.playlist',{
|
|
|
|
url: '/playlist',
|
|
|
|
views: {
|
|
|
|
playlist:{
|
|
|
|
templateUrl: 'partials/playlist.html',
|
|
|
|
controller: 'PlaylistCtrl'
|
2016-04-17 22:38:45 +02:00
|
|
|
},
|
|
|
|
dups:{
|
|
|
|
template: ''
|
2016-04-17 20:05:11 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
})
|
|
|
|
.state('finder.playlist.dups',{
|
2016-04-17 23:26:15 +02:00
|
|
|
url: '/:uid/:id/:playlist',
|
2016-04-17 20:05:11 +02:00
|
|
|
views: {
|
2016-04-17 22:38:45 +02:00
|
|
|
'dups@finder': {
|
2016-04-17 20:05:11 +02:00
|
|
|
templateUrl: 'partials/dups.html',
|
|
|
|
controller: 'DupsCtrl'
|
|
|
|
}
|
|
|
|
}
|
2016-04-17 20:06:50 +02:00
|
|
|
});
|
|
|
|
$urlRouterProvider.otherwise("/");
|
2016-04-17 20:05:11 +02:00
|
|
|
}]);
|
2016-04-17 19:37:16 +02:00
|
|
|
|
2016-04-17 23:20:24 +02:00
|
|
|
app.run(['$rootScope', '$state', '$localStorage',function($rootScope, $state, $localStorage){
|
|
|
|
$rootScope.$storage = $localStorage.$default({
|
|
|
|
access_token: "",
|
|
|
|
refresh_token: ""
|
|
|
|
});
|
|
|
|
$rootScope.access_token = $rootScope.$storage.access_token;
|
|
|
|
$rootScope.refresh_token = $rootScope.$storage.refresh_token;
|
|
|
|
|
|
|
|
$rootScope.$watch('access_token', function(newVal, oldVal, scope){
|
|
|
|
|
|
|
|
$rootScope.$storage.access_token = $rootScope.access_token;
|
|
|
|
$rootScope.$storage.refresh_token = $rootScope.refresh_token;
|
|
|
|
|
2016-04-17 21:47:17 +02:00
|
|
|
if(oldVal == "" && newVal != ""){
|
|
|
|
$state.go('finder.playlist');
|
|
|
|
} else if (oldVal != "" && newVal == ""){
|
|
|
|
$state.go('finder_public');
|
|
|
|
}
|
|
|
|
});
|
2016-04-17 22:38:45 +02:00
|
|
|
$rootScope.$on('$stateChangeStart',
|
|
|
|
function (event, toState) {
|
|
|
|
if ((toState.name != "finder_public") && $rootScope.access_token == "") {
|
|
|
|
event.preventDefault();
|
|
|
|
$state.go('finder_public');
|
|
|
|
}
|
|
|
|
});
|
2016-04-17 20:37:09 +02:00
|
|
|
}]);
|
|
|
|
|
|
|
|
app.controller("HomeCtrl",['$scope',function($scope){
|
|
|
|
|
|
|
|
}]);
|
|
|
|
|
2016-04-17 22:38:45 +02:00
|
|
|
app.controller("MainCtrl",['$scope', '$state',function($scope, $state){
|
2016-04-17 23:20:24 +02:00
|
|
|
$scope.current = {playlistId: undefined};
|
2016-04-17 20:37:09 +02:00
|
|
|
}]);
|
|
|
|
|
2016-04-17 21:47:17 +02:00
|
|
|
app.controller("PlaylistCtrl",['$scope', '$http', '$state',function($scope, $http, $state){
|
|
|
|
$scope.playlists = [];
|
|
|
|
$scope.load = function(){
|
|
|
|
$http.get('/get_playlists', {
|
|
|
|
params:{
|
|
|
|
access_token: $scope.access_token
|
|
|
|
}
|
|
|
|
}).then(function(result){
|
|
|
|
var r = result.data;
|
|
|
|
if(r.data){
|
|
|
|
$scope.playlists = r.data;
|
|
|
|
}
|
|
|
|
})
|
|
|
|
};
|
|
|
|
$scope.open = function(playlist) {
|
2016-04-17 23:20:24 +02:00
|
|
|
$scope.current.playlistId = playlist.id;
|
2016-04-17 23:26:15 +02:00
|
|
|
$state.go('finder.playlist.dups',{uid: playlist.owner.id, id: playlist.id, playlist: encodeURIComponent(playlist.name)})
|
2016-04-17 22:40:28 +02:00
|
|
|
};
|
|
|
|
$scope.load();
|
2016-04-17 20:37:09 +02:00
|
|
|
}]);
|
|
|
|
|
2016-04-17 23:01:35 +02:00
|
|
|
app.controller("DupsCtrl",['$scope', '$stateParams', '$http',function($scope, $stateParams, $http){
|
2016-04-17 21:47:17 +02:00
|
|
|
$scope.uid = $stateParams['uid'];
|
|
|
|
$scope.id = $stateParams['id'];
|
2016-04-17 23:26:15 +02:00
|
|
|
$scope.playlistName = decodeURIComponent($stateParams.playlist);
|
2016-04-17 23:20:24 +02:00
|
|
|
$scope.current.playlistId = $scope.id;
|
2016-04-17 23:01:35 +02:00
|
|
|
$scope.tracks = [];
|
|
|
|
$scope.loaded = false;
|
|
|
|
$scope.load = function () {
|
|
|
|
$http.get('/pl/' + $scope.uid + '/' + $scope.id, {
|
|
|
|
params: {
|
|
|
|
access_token: $scope.access_token
|
|
|
|
}
|
|
|
|
}).then(function(result) {
|
|
|
|
var r = result.data;
|
|
|
|
$scope.tracks = r.data;
|
|
|
|
$scope.loaded = true;
|
|
|
|
});
|
|
|
|
};
|
|
|
|
$scope.load();
|
2016-04-17 20:37:09 +02:00
|
|
|
}]);
|
|
|
|
|
2016-04-17 21:19:01 +02:00
|
|
|
app.controller('AuthCtrl',['$scope', '$rootScope', '$interval', '$http', function($scope, $rootScope, $interval, $http){
|
2016-04-17 20:37:09 +02:00
|
|
|
$scope.login = function(){
|
|
|
|
var openUrl = '/login';
|
|
|
|
window.$windowScope = $scope;
|
2016-04-17 20:54:06 +02:00
|
|
|
$scope.popup = window.open(openUrl, "Authenticate Account", "width=500, height=500");
|
|
|
|
var checker = $interval(function(){
|
|
|
|
if($scope.popup.closed){
|
|
|
|
$interval.cancel(checker);
|
|
|
|
} else if ($scope.popup.token != undefined && $scope.popup.token != null) {
|
|
|
|
$rootScope.access_token = $scope.popup.token.access_token;
|
|
|
|
$rootScope.refresh_token = $scope.popup.token.refresh_token;
|
|
|
|
$scope.popup.close();
|
|
|
|
$interval.cancel(checker);
|
|
|
|
}
|
|
|
|
}, 500);
|
2016-04-17 21:19:01 +02:00
|
|
|
return false;
|
2016-04-17 20:37:09 +02:00
|
|
|
};
|
2016-04-17 23:33:54 +02:00
|
|
|
$scope.logout = function(){
|
|
|
|
$rootScope.refresh_token = "";
|
|
|
|
$rootScope.access_token = "";
|
|
|
|
};
|
2016-04-17 20:37:09 +02:00
|
|
|
$scope.refresh = function(){
|
2016-04-17 21:19:01 +02:00
|
|
|
if($rootScope.refresh_token)
|
|
|
|
$http.get('/refresh_token',{params: {refresh_token: $rootScope.refresh_token}})
|
|
|
|
.then(function(result){
|
|
|
|
$rootScope.access_token = result.data.access_token || "";
|
|
|
|
}, function(failResult){
|
|
|
|
$rootScope.access_token = "";
|
|
|
|
$rootScope.refresh_token = "";
|
|
|
|
});
|
|
|
|
return false;
|
2016-04-17 20:37:09 +02:00
|
|
|
}
|
2016-04-17 19:37:16 +02:00
|
|
|
}])
|
|
|
|
|
2016-04-17 22:38:45 +02:00
|
|
|
})();
|