angular.module('flashy', [ 'flashy.LogoutController', 'flashy.LoginController', 'flashy.RootController', 'flashy.FeedController', 'flashy.DeckController', 'flashy.ClassAddController', 'flashy.RequestResetController', 'flashy.StudyController', 'flashy.UserService', 'flashy.FlashcardDirective', 'flashy.ResetPasswordController', 'flashy.VerifyEmailController', 'flashy.CardListController', 'ngCookies']). config(function ($stateProvider, $urlRouterProvider, $httpProvider, $locationProvider) { 'use strict'; $httpProvider.defaults.withCredentials = true; $httpProvider.defaults.xsrfCookieName = 'csrftoken'; $httpProvider.defaults.xsrfHeaderName = 'X-CSRFToken'; var arrayMethods = Object.getOwnPropertyNames(Array.prototype); arrayMethods.forEach(attachArrayMethodsToNodeList); function attachArrayMethodsToNodeList(methodName) { if (methodName !== 'length') { NodeList.prototype[methodName] = Array.prototype[methodName]; } }; $httpProvider.interceptors.push(function ($q) { return { 'responseError': function (rejection) { if (rejection.status >= 500) { console.log('got error'); console.log(rejection); $('body').html('
Sorry, the server is not serving requests properly. Try again later
'); } return $q.reject(rejection); } }; }); $locationProvider.html5Mode(true); $urlRouterProvider.otherwise('/404'); var auth_resolve = { authorize: function ($q, $state, UserService) { console.log('resolving user before continuing'); var redirectAsNeeded = function () { if (!UserService.isLoggedIn()) { console.log(UserService.getUserData()); console.log('making the user log in'); $state.go('login'); } }; if (UserService.isResolved()) return redirectAsNeeded(); return UserService.getUserData().then(redirectAsNeeded); } }; $stateProvider. state('login', { url: '/login', templateUrl: 'templates/login.html', controller: 'LoginController' }). state('logout', { resolve: auth_resolve, url: '/logout', templateUrl: 'templates/logout.html', controller: 'LogoutController' }). state('root', { resolve: auth_resolve, url: '/', controller: 'RootController' }). state('feed', { resolve: auth_resolve, url: '/feed/{sectionId}', templateUrl: 'templates/feed.html', controller: 'FeedController' }). state('cardlist', { resolve: auth_resolve, url: '/cards/{sectionId}', templateUrl: 'templates/cardlist.html', controller: 'CardListController' }). state('addclass', { resolve: auth_resolve, url: '/addclass', templateUrl: 'templates/addclass.html', controller: 'ClassAddController' }). state('deck', { resolve: auth_resolve, url: '/deck/{sectionId}', templateUrl: 'templates/deck.html', controller: 'DeckController' }). state('study', { resolve: auth_resolve, url: '/study', templateUrl: 'templates/study.html', controller: 'StudyController' }). state('flashcard', { resolve: auth_resolve, url: '/flashcard', templateUrl: 'templates/flashcard.html', controller: 'FlashcardController' }). state('requestpasswordreset', { url: '/requestpasswordreset', templateUrl: 'templates/requestpasswordreset.html', controller: 'RequestResetController' }). state('resetpassword', { url: '/resetpassword/{uid}/{token}', templateUrl: 'templates/resetpassword.html', controller: 'ResetPasswordController' }). state('verifyemail', { resolve: auth_resolve, url: '/verifyemail/{key}', templateUrl: 'templates/verifyemail.html', controller: 'VerifyEmailController' }). state('404', { url: '/404', template: "

This page doesn't exist!

" }); }). run(function ($rootScope, $state, $stateParams, $location, UserService) { $rootScope.$on('$stateChangeError', function (event, toState, toParams, fromState, fromParams, error) { console.log('failed to change state: ' + error); $state.go('login'); }); $rootScope.$on('$stateChangeStart', function (event, toState, toParams, fromState, fromParams) { if (['feed', 'deck', 'cardlist'].indexOf(toState.name) >= 0) { localStorage.setItem('last_state', toState.name); localStorage.setItem('last_state_params', JSON.stringify(toParams)); } }); });