freeswitch/html5/verto/verto_communicator/src/vertoControllers/controllers/SplashScreenController.js

88 lines
2.5 KiB
JavaScript

(function() {
'use strict';
angular
.module('vertoControllers')
.controller('SplashScreenController', ['$scope', '$rootScope', '$location', '$timeout', 'splashscreen', 'prompt', 'verto',
function($scope, $rootScope, $location, $timeout, splashscreen, prompt, verto) {
console.debug('Executing SplashScreenController.');
$scope.progress_percentage = splashscreen.progress_percentage;
$scope.message = '';
$scope.interrupt_next = false;
$scope.errors = [];
var redirectTo = function(link, activity) {
if(activity) {
if(activity == 'browser-upgrade') {
link = activity;
}
}
$location.path(link);
}
var checkProgressState = function(current_progress, status, promise, activity, soft, interrupt, message) {
$scope.progress_percentage = splashscreen.calculate(current_progress);
$scope.message = message;
if(interrupt && status == 'error') {
$scope.errors.push(message);
if(!soft) {
redirectTo('', activity);
return;
} else {
message = message + '. Continue?';
};
if(!confirm(message)) {
$scope.interrupt_next = true;
};
};
if($scope.interrupt_next) {
return;
};
$scope.message = splashscreen.getProgressMessage(current_progress+1);
return true;
};
$rootScope.$on('progress.next', function(ev, current_progress, status, promise, activity, soft, interrupt, message) {
$timeout(function() {
if(promise) {
promise.then(function(response) {
message = response['message'];
status = response['status'];
if(checkProgressState(current_progress, status, promise, activity, soft, interrupt, message)) {
splashscreen.next();
};
});
return;
}
if(!checkProgressState(current_progress, status, promise, activity, soft, interrupt, message)) {
return;
}
splashscreen.next();
}, 400);
});
$rootScope.$on('progress.complete', function(ev, current_progress) {
$scope.message = 'Complete';
if(verto.data.connected) {
redirectTo('/dialpad');
} else {
redirectTo('/login');
}
});
splashscreen.next();
}]);
})();