Jamstash/app/app.js
Hyzual 9f24576d04 Refactor queue.js
- Added angular-ui's ui-sortable directive
- Removed our custom drag & drop handlers, they are replaced by ui-sortable.
- Refactored queue.js to better comply with https://github.com/johnpapa/angular-styleguide#controllers. Having the exposed
2015-07-12 01:53:01 +02:00

84 lines
3.4 KiB
JavaScript
Executable file

'use strict';
/* Declare app level module */
angular.module('JamStash', [
'ngCookies',
'ngRoute',
'ngSanitize',
'ngLodash',
'ui.keypress',
'jamstash.subsonic.controller',
'jamstash.archive.controller',
'jamstash.player.controller',
'jamstash.queue.controller',
'jamstash.settings.controller',
'jamstash.persistence',
'jamstash.loading'
])
.config(['$routeProvider',function ($routeProvider) {
$routeProvider
.when('/index', { redirectTo: '/library' })
.when('/settings', { templateUrl: 'settings/settings.html', controller: 'SettingsController' })
.when('/library', { templateUrl: 'subsonic/subsonic.html', controller: 'SubsonicController' })
.when('/library/:artistId', { templateUrl: 'subsonic/subsonic.html', controller: 'SubsonicController', reloadOnSearch: false })
.when('/library/:artistId/:albumId', { templateUrl: 'subsonic/subsonic.html', controller: 'SubsonicController', reloadOnSearch: false })
.when('/podcasts', { templateUrl: 'podcasts/podcasts.html', controller: 'PodcastController' })
.when('/archive', { templateUrl: 'archive/archive.html', controller: 'ArchiveController' })
.when('/archive/:artist', { templateUrl: 'archive/archive.html', controller: 'ArchiveController' })
.when('/archive/:artist/:album', { templateUrl: 'archive/archive.html', controller: 'ArchiveController' })
.otherwise({ redirectTo: '/index' });
}])
.config(['$httpProvider', function httpConfig ($httpProvider) {
$httpProvider.interceptors.push(authenticationInterceptor);
$httpProvider.interceptors.push(loadingInterceptor);
}]);
authenticationInterceptor.$inject = ['$rootScope', '$location', '$q', 'globals'];
function authenticationInterceptor($rootScope, $location, $q, globals) {
return {
'request': function (request) {
// if we're not logged-in to the AngularJS app, redirect to login page
//$rootScope.loggedIn = $rootScope.loggedIn || globals.settings.Username;
$rootScope.loggedIn = false;
if (globals.settings.Username != "" && globals.settings.Password != "" && globals.settings.Server != "") {
$rootScope.loggedIn = true;
}
var path = '';
path = $location.path();
if (globals.settings.Debug) { console.log('Logged In: ' + $rootScope.loggedIn); }
if (globals.settings.Debug) { console.log('Current Path: ' + path); }
if (!$rootScope.loggedIn && path != '/settings' && path.search('archive') < 0) {
$location.path('/settings');
}
return request;
},
'responseError': function (rejection) {
// if we're not logged-in to the web service, redirect to login page
if (rejection.status === 401 && $location.path() != '/settings') {
$rootScope.loggedIn = false;
$location.path('/settings');
}
return $q.reject(rejection);
}
};
}
loadingInterceptor.$inject = ['Loading'];
function loadingInterceptor(Loading) {
return {
request: function (request) {
Loading.isLoading = true;
return request;
},
response: function (response) {
Loading.isLoading = false;
return response;
},
responseError: function (error) {
Loading.isLoading = false;
return error;
}
};
}