mail: fix catchall ui

This commit is contained in:
Girish Ramakrishnan
2022-09-28 22:10:43 +02:00
parent dd2fbf820a
commit 3cd3740f92
2 changed files with 9 additions and 4 deletions
+1 -1
View File
@@ -544,7 +544,7 @@
<div class="row">
<div class="col-md-6">
<multiselect ng-model="catchall.mailboxes" options="mailbox.display for mailbox in catchall.availableMailboxes" data-compare-by="name" data-multiple="true" filter-after-rows="5" scroll-after-rows="10"></multiselect>
<multiselect ng-model="catchall.mailboxes" options="mailbox.display for mailbox in catchall.availableMailboxes" data-compare-by="display" data-multiple="true" filter-after-rows="5" scroll-after-rows="10"></multiselect>
<button class="btn btn-outline btn-primary" ng-click="catchall.submit()" ng-disabled="catchall.busy || !domain.mailConfig.enabled" tooltip-enable="!domain.mailConfig.enabled" uib-tooltip="{{ 'email.incoming.mailboxes.disabledTooltip' | tr }}">
<i class="fa fa-circle-notch fa-spin" ng-show="catchall.busy"></i> {{ 'email.incoming.catchall.saveAction' | tr }}
</button>
+8 -3
View File
@@ -84,6 +84,7 @@ angular.module('Application').controller('EmailController', ['$scope', '$locatio
refresh: function () {
var allMailboxes = [];
async.eachSeries($scope.incomingDomains, function (domain, iteratorDone) {
Client.listMailboxes(domain.domain, '', 1, 1000, function (error, result) {
if (error) return console.error(error);
@@ -95,10 +96,13 @@ angular.module('Application').controller('EmailController', ['$scope', '$locatio
}, function () {
$scope.catchall.availableMailboxes = allMailboxes;
console.log($scope.domain.mailConfig.catchAll);
$scope.catchall.mailboxes = $scope.domain.mailConfig.catchAll.map(function (address) {
const parts = address.split('@');
return $scope.catchall.availableMailboxes.find(function (m) { return m.name === parts[0] && m.domain === parts[1]; });
return allMailboxes.find(function (m) { return m.display === address; });
}).filter(function (m) { return !!m; }); // remove not found addresses
console.log($scope.catchall.mailboxes);
});
}
};
@@ -1021,7 +1025,6 @@ angular.module('Application').controller('EmailController', ['$scope', '$locatio
$scope.domain = result.filter(function (d) { return d.domain === domainName; })[0];
$scope.adminDomain = result.filter(function (d) { return d.domain === $scope.config.adminDomain; })[0];
$scope.refreshDomain();
async.eachSeries(result, function (domain, iteratorDone) {
Client.getMailConfigForDomain(domain.domain, function (error, mailConfig) {
@@ -1033,6 +1036,8 @@ angular.module('Application').controller('EmailController', ['$scope', '$locatio
}, function iteratorDone(error) {
if (error) return console.error(error);
$scope.refreshDomain(); // this calls catchall.refresh() which in turn relies on incomingDomains
$scope.setView($routeParams.view || 'mailboxes', true /* always set */);
$scope.ready = true;
});