mail: make virtual "All Mail" togglable

Mac clients behave poorly when this virtual mailbox is present
This commit is contained in:
Girish Ramakrishnan
2023-09-20 21:55:24 +05:30
parent 9d0914ecc1
commit 17e6266384
8 changed files with 89 additions and 3 deletions
+24
View File
@@ -24,6 +24,24 @@
</div>
</div>
<!-- Modal change virtual all mail -->
<div class="modal fade" id="virtualAllMailChangeModal" tabindex="-1" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title">{{ 'emails.changeVirtualAllMailDialog.title' | tr }}</h4>
</div>
<div class="modal-body">
<div ng-bind-html=" 'emails.changeVirtualAllMailDialog.description' | tr "></div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">{{ 'main.dialog.cancel' | tr }}</button>
<button class="btn btn-primary" ng-click="virtualAllMail.submit(!virtualAllMail.enabled)"><i class="fa fa-circle-notch fa-spin" ng-show="virtualAllMail.busy"></i> {{ virtualAllMail.enabled ? ('main.disableAction' | tr) : ('main.enableAction' | tr) }} </button>
</div>
</div>
</div>
</div>
<!-- Modal solr config -->
<div class="modal fade" id="solrConfigModal" tabindex="-1" role="dialog">
<div class="modal-dialog">
@@ -297,6 +315,12 @@
<div class="col-xs-6 text-right">
<span>{{ maxEmailSize.currentSize | prettyDecimalSize }} <a href="" ng-click="maxEmailSize.show()"><i class="fa fa-edit text-small"></i></a></span>
</div>
<div class="col-xs-6">
<span class="text-muted">{{ 'emails.settings.virtualAllMail' | tr }}</span>
</div>
<div class="col-xs-6 text-right">
<span>{{ virtualAllMail.enabled ? 'main.statusEnabled' : 'main.statusDisabled' | tr }} <a href="" ng-click="virtualAllMail.show()"><i class="fa fa-edit text-small"></i></a></span>
</div>
<div class="col-xs-6">
<span class="text-muted">{{ 'emails.settings.acl' | tr }}</span>
</div>
+36
View File
@@ -133,6 +133,41 @@ angular.module('Application').controller('EmailsController', ['$scope', '$locati
}
};
$scope.virtualAllMail = {
busy: false,
error: null,
enabled: false,
refresh: function () {
Client.getVirtualAllMail(function (error, enabled) {
if (error) return console.error('Failed to get max email size', error);
$scope.virtualAllMail.enabled = enabled;
});
},
show: function() {
$scope.virtualAllMail.busy = false;
$scope.virtualAllMail.error = null;
$('#virtualAllMailChangeModal').modal('show');
},
submit: function (enable) {
$scope.virtualAllMail.busy = true;
Client.setVirtualAllMail(enable, function (error) {
$scope.virtualAllMail.busy = false;
if (error) return console.error(error);
$scope.virtualAllMail.enabled = enable;
$('#virtualAllMailChangeModal').modal('hide');
});
}
};
$scope.mailboxSharing = {
busy: false,
error: null,
@@ -422,6 +457,7 @@ angular.module('Application').controller('EmailsController', ['$scope', '$locati
if ($scope.user.isAtLeastOwner) {
$scope.mailLocation.refresh();
$scope.maxEmailSize.refresh();
$scope.virtualAllMail.refresh();
$scope.mailboxSharing.refresh();
$scope.spamConfig.refresh();
$scope.solrConfig.refresh();