
- It makes it easier to use localStorage and sessionStorage "the angular way". It also does all the error handling so we don't need to. - Adds back the automatic saving of the current track's position and playing queue in localStorage. It's fully unit tested. - Adds back the notifications. Every time we change songs (if the setting is true), it displays a notification. Clicking on it goes to the next song, just like before. - Bumps up the versions to the actual value on the various json files.
57 lines
3 KiB
JavaScript
Executable file
57 lines
3 KiB
JavaScript
Executable file
'use strict';
|
|
|
|
/* Declare app level module */
|
|
angular.module('JamStash', ['ngCookies', 'ngRoute', 'ngSanitize',
|
|
'jamstash.subsonic.controller', 'jamstash.archive.controller', 'jamstash.player.controller', 'jamstash.queue.controller', 'angular-locker'])
|
|
|
|
.config(['$routeProvider',function($routeProvider) {
|
|
$routeProvider
|
|
.when('/index', { redirectTo: '/library' })
|
|
.when('/settings', { templateUrl: 'settings/settings.html', controller: 'SettingsController' })
|
|
.when('/queue', { templateUrl: 'queue/queue.html', controller: 'QueueController' })
|
|
.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($httpProvider) {
|
|
$httpProvider.interceptors.push(['$rootScope', '$location', '$q', 'globals', function ($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);
|
|
}
|
|
};
|
|
}]);
|
|
}])
|
|
|
|
.config(['lockerProvider', function (lockerProvider) {
|
|
lockerProvider.setDefaultDriver('local')
|
|
.setDefaultNamespace('jamstash')
|
|
.setEventsEnabled(false);
|
|
}]);
|