Do not redirect to error.html if the angular main application fails to init

We now only show the offline banner and retry the application init until
box comes back up
This commit is contained in:
Johannes Zellner
2019-09-05 22:22:42 +02:00
parent 8b8b137cad
commit b6e00a3107
9 changed files with 154 additions and 222 deletions

View File

@@ -1,11 +1,13 @@
'use strict';
/* global angular */
/* global moment */
/* global $ */
// create main application module
var app = angular.module('Application', ['angular-md5', 'ui-notification']);
app.controller('LogsController', ['$scope', '$timeout', '$location', 'Client', function ($scope, $timeout, $location, Client) {
app.controller('LogsController', ['$scope', 'Client', function ($scope, Client) {
var search = decodeURIComponent(window.location.search).slice(1).split('&').map(function (item) { return item.split('='); }).reduce(function (o, k) { o[k[0]] = k[1]; return o; }, {});
$scope.initialized = false;
@@ -16,11 +18,6 @@ app.controller('LogsController', ['$scope', '$timeout', '$location', 'Client', f
$scope.selectedAppInfo = null;
$scope.selectedTaskInfo = null;
$scope.error = function (error) {
console.error(error);
window.location.href = '/error.html';
};
function ab2str(buf) {
return String.fromCharCode.apply(null, new Uint16Array(buf));
}
@@ -143,43 +140,48 @@ app.controller('LogsController', ['$scope', '$timeout', '$location', 'Client', f
}
}
Client.getStatus(function (error, status) {
if (error) return $scope.error(error);
function init() {
if (!status.activated) {
console.log('Not activated yet, redirecting', status);
window.location.href = '/';
return;
}
Client.getStatus(function (error, status) {
if (error) return Client.initError(error, init);
// check version and force reload if needed
if (!localStorage.version) {
localStorage.version = status.version;
} else if (localStorage.version !== status.version) {
localStorage.version = status.version;
window.location.reload(true);
}
if (!status.activated) {
console.log('Not activated yet, redirecting', status);
window.location.href = '/';
return;
}
console.log('Running log version ', localStorage.version);
// check version and force reload if needed
if (!localStorage.version) {
localStorage.version = status.version;
} else if (localStorage.version !== status.version) {
localStorage.version = status.version;
window.location.reload(true);
}
// get user profile as the first thing. this populates the "scope" and affects subsequent API calls
Client.refreshUserInfo(function (error) {
if (error) return $scope.error(error);
console.log('Running log version ', localStorage.version);
Client.refreshConfig(function (error) {
if (error) return $scope.error(error);
// get user profile as the first thing. this populates the "scope" and affects subsequent API calls
Client.refreshUserInfo(function (error) {
if (error) return Client.initError(error, init);
select({ id: search.id, taskId: search.taskId, appId: search.appId, crashId: search.crashId }, function (error) {
if (error) return $scope.error(error);
Client.refreshConfig(function (error) {
if (error) return Client.initError(error, init);
// now mark the Client to be ready
Client.setReady();
select({ id: search.id, taskId: search.taskId, appId: search.appId, crashId: search.crashId }, function (error) {
if (error) return Client.initError(error, init);
$scope.initialized = true;
// now mark the Client to be ready
Client.setReady();
showLogs();
$scope.initialized = true;
showLogs();
});
});
});
});
});
}
init();
}]);