Show mail domain change task progress

This commit is contained in:
Johannes Zellner
2020-09-01 16:31:23 +02:00
parent 31947127d9
commit 8fa58eb108
2 changed files with 50 additions and 8 deletions

View File

@@ -1,7 +1,6 @@
'use strict';
/* global angular:false */
/* global $:false */
/* global $, angular, TASK_TYPES */
angular.module('Application').controller('EmailsController', ['$scope', '$location', '$timeout', 'Client', function ($scope, $location, $timeout, Client) {
Client.onReady(function () { if (!Client.getUserInfo().isAtLeastAdmin) $location.path('/'); });
@@ -78,6 +77,7 @@ angular.module('Application').controller('EmailsController', ['$scope', '$locati
currentLocation: { domain: null, subdomain: '' },
domain: null,
subdomain: '',
taskId: null,
refresh: function () {
Client.getMailLocation(function (error, location) {
@@ -85,6 +85,14 @@ angular.module('Application').controller('EmailsController', ['$scope', '$locati
$scope.mailLocation.currentLocation.subdomain = location.subdomain;
$scope.mailLocation.currentLocation.domain = $scope.domains.find(function (d) { return location.domain === d.domain; });
Client.getLatestTaskByType(TASK_TYPES.TASK_CHANGE_MAIL_LOCATION, function (error, task) {
if (error) return console.error(error);
if (!task) return;
$scope.mailLocation.taskId = task.id;
$scope.mailLocation.updateStatus();
});
});
},
@@ -102,21 +110,44 @@ angular.module('Application').controller('EmailsController', ['$scope', '$locati
$('#mailLocationModal').modal('show');
},
updateStatus: function () {
Client.getTask($scope.mailLocation.taskId, function (error, data) {
if (error) return window.setTimeout($scope.mailLocation.updateStatus, 5000);
if (!data.active) {
$scope.mailLocation.taskId = null;
$scope.mailLocation.busy = false;
$scope.mailLocation.message = '';
$scope.mailLocation.percent = 100; // indicates that 'result' is valid
$scope.mailLocation.errorMessage = data.success ? '' : data.error.message;
return;
}
$scope.mailLocation.busy = true;
$scope.mailLocation.percent = data.percent;
$scope.mailLocation.message = data.message;
window.setTimeout($scope.mailLocation.updateStatus, 1000);
});
},
submit: function () {
$scope.mailLocation.busy = true;
Client.setMailLocation($scope.mailLocation.subdomain, $scope.mailLocation.domain.domain, function (error) {
Client.setMailLocation($scope.mailLocation.subdomain, $scope.mailLocation.domain.domain, function (error, result) {
if (error) {
$scope.mailLocation.busy = false;
$scope.mailLocation.error = error;
return;
}
$timeout(function () {
$scope.mailLocation.currentLocation = { subdomain: $scope.mailLocation.subdomain, domain: $scope.mailLocation.domain };
$scope.mailLocation.busy = false;
$('#mailLocationModal').modal('hide');
}, 3000);
// update UI immediately
$scope.mailLocation.currentLocation = { subdomain: $scope.mailLocation.subdomain, domain: $scope.mailLocation.domain };
$scope.mailLocation.taskId = result.taskId;
$scope.mailLocation.updateStatus();
$('#mailLocationModal').modal('hide');
});
}
};
@@ -323,6 +354,7 @@ angular.module('Application').controller('EmailsController', ['$scope', '$locati
if ($scope.user.role === 'owner') $scope.activity.refresh();
$scope.mailLocation.refresh();
refreshDomainStatuses();
});
});