diff --git a/src/js/client.js b/src/js/client.js index 1ca4e2021..86d2601d5 100644 --- a/src/js/client.js +++ b/src/js/client.js @@ -2090,7 +2090,26 @@ angular.module('Application').service('Client', ['$http', '$interval', '$timeout get('/api/v1/mailserver/usage', config, function (error, data, status) { if (error) return callback(error); if (status !== 200) return callback(new ClientError(status, data)); - callback(null, data.usage); + callback(null, data.usage); + }); + }; + + Client.prototype.getMaxEmailSize = function (callback) { + var config = {}; + + get('/api/v1/mailserver/max_email_size', config, function (error, data, status) { + if (error) return callback(error); + if (status !== 200) return callback(new ClientError(status, data)); + callback(null, data.size); + }); + }; + + Client.prototype.setMaxEmailSize = function (size, callback) { + post('/api/v1/mailserver/max_email_size', { size: size }, null, function (error, data, status) { + if (error) return callback(error); + if (status !== 200) return callback(new ClientError(status, data)); + + callback(null); }); }; diff --git a/src/views/emails.html b/src/views/emails.html index 32b505924..5c7ae7946 100644 --- a/src/views/emails.html +++ b/src/views/emails.html @@ -44,7 +44,7 @@ @@ -188,7 +188,7 @@ Maximum email size
- 25MB + {{ maxEmailSize.currentSize | prettyDiskSize }}
Always allowed origins @@ -277,6 +277,7 @@ + {{ eventlog.ts | prettyDate }} @@ -295,6 +296,7 @@ Connection from {{ eventlog.remote.ip }} denied. {{ eventlog.details.message || eventlog.details.reason }} Spam filter trained using mailbox content + Maximum email size was set to {{ eventlog.size | prettyDiskSize }} diff --git a/src/views/emails.js b/src/views/emails.js index dfc5e9b31..870284e79 100644 --- a/src/views/emails.js +++ b/src/views/emails.js @@ -102,8 +102,7 @@ angular.module('Application').controller('EmailsController', ['$scope', '$locati show: function() { $scope.maxEmailSize.busy = false; $scope.maxEmailSize.error = null; - $scope.maxEmailSize.size = 25 * 1024 * 1024; - $scope.maxEmailSize.currentSize = 25 * 1024 * 1024; + $scope.maxEmailSize.size = $scope.maxEmailSize.currentSize; $scope.maxEmailSizeChangeForm.$setUntouched(); $scope.maxEmailSizeChangeForm.$setPristine(); @@ -112,7 +111,18 @@ angular.module('Application').controller('EmailsController', ['$scope', '$locati }, submit: function () { - console.log('tbd'); + $scope.maxEmailSize.busy = true; + + Client.setMaxEmailSize($scope.maxEmailSize.size, function (error) { + $scope.maxEmailSize.busy = false; + + if (error) return console.error(error); + + $scope.maxEmailSize.currentSize = $scope.maxEmailSize.size; + + $('#maxEmailSizeChangeModal').modal('hide'); + }); + } }; @@ -217,6 +227,11 @@ angular.module('Application').controller('EmailsController', ['$scope', '$locati }); }); + Client.getMaxEmailSize(function (error, size) { + if (error) return console.error('Failed to get max email size', error); + + $scope.maxEmailSize.currentSize = size; + }); }); }