Avoid some flickering during appstore view loading

This commit is contained in:
Johannes Zellner
2022-06-01 17:33:49 +02:00
parent c133c704b5
commit d9aa73192f

View File

@@ -635,17 +635,19 @@ angular.module('Application').controller('AppStoreController', ['$scope', '$tran
}
function getSubscription(callback) {
var validSubscription = false;
Client.getSubscription(function (error, subscription) {
if (error) {
if (error.statusCode === 412) { // not registered yet
$scope.validSubscription = false;
validSubscription = false;
} else if (error.statusCode === 402) { // invalid token, license error
$scope.validSubscription = false;
validSubscription = false;
} else { // 424/external error?
return callback(error);
}
} else {
$scope.validSubscription = true;
validSubscription = true;
$scope.subscription = subscription;
}
@@ -655,45 +657,50 @@ angular.module('Application').controller('AppStoreController', ['$scope', '$tran
// also update the root controller status
if ($scope.$parent) $scope.$parent.updateSubscriptionStatus();
callback();
callback(null, validSubscription);
});
}
function init() {
Client.getAppstoreAppsFast(function (error) {
$scope.ready = true;
if (error && error.statusCode === 402) {
$scope.validSubscription = false;
$scope.ready = true;
return;
} else if (error) {
console.error('Failed to get apps. Will retry.', error);
return $timeout(init, 1000);
console.warning('Failed to get apps. Will retry.', error);
$timeout(init, 1000);
return;
}
$scope.validSubscription = true;
$scope.showCategory('');
// refresh everything in background
getSubscription(function (error) { if (error) console.error('Failed to get subscription.', error); });
Client.getAppstoreApps(function (error) { if (error) console.error('Failed to fetch apps.', error); });
Client.refreshConfig(); // refresh domain, user, group limit etc
fetchUsers();
fetchGroups();
fetchMemory();
getSubscription(function (error, validSubscription) {
if (error) console.error('Failed to get subscription.', error);
// domains is required since we populate the dropdown with domains[0]
Client.getDomains(function (error, result) {
if (error) return console.error('Error getting domains.', error);
$scope.validSubscription = validSubscription;
$scope.ready = true;
$scope.domains = result;
// show install app dialog immediately if an app id was passed in the query
// hashChangeListener calls $apply, so make sure we don't double digest here
setTimeout(hashChangeListener, 1);
// refresh everything in background
Client.getAppstoreApps(function (error) { if (error) console.error('Failed to fetch apps.', error); });
Client.refreshConfig(); // refresh domain, user, group limit etc
fetchUsers();
fetchGroups();
fetchMemory();
setTimeout(function () { $('#appstoreSearch').focus(); }, 1);
// domains is required since we populate the dropdown with domains[0]
Client.getDomains(function (error, result) {
if (error) return console.error('Error getting domains.', error);
$scope.domains = result;
// show install app dialog immediately if an app id was passed in the query
// hashChangeListener calls $apply, so make sure we don't double digest here
setTimeout(hashChangeListener, 1);
setTimeout(function () { $('#appstoreSearch').focus(); }, 1);
});
});
});
}