Viewing File: /usr/local/cpanel/base/frontend/jupiter/mail/spam/views/spamBox.js

/*
# mail/spam/views/spamBox.js      Copyright 2022 cPanel, L.L.C.
#                                                           All rights reserved.
# copyright@cpanel.net                                         http://cpanel.net
# This code is subject to the cPanel license. Unauthorized copying is prohibited
*/

/* global define */

define(
    [
        "angular",
        "cjt/util/locale",
        "app/services/spamAssassin",
        "cjt/directives/toggleSwitchDirective",
        "cjt/directives/actionButtonDirective"
    ],
    function(angular, LOCALE) {

        "use strict";

        var app = angular.module("cpanel.apacheSpamAssassin");

        var controller = app.controller(
            "spamBox",
            ["$scope", "spamAssassin",
                function($scope, $service) {

                    var _enable = $service.enableSpamBox;
                    var _disable = $service.disableSpamBox;
                    var folderSizeSet = false;

                    function _getSpamBoxSize() {
                        if (folderSizeSet) {
                            return;
                        }

                        folderSizeSet = true;
                        return $service.getSpamBoxSize().then(function(size) {
                            $scope.folderSizeString = LOCALE.format_bytes(size);
                            $scope.folderSize = size;
                        }, function() {
                            folderSizeSet = false;
                        });
                    }

                    function toggleEnable() {
                        if ($scope.settings.spam_box_enabled) {
                            return _disable();
                        }

                        return _enable();
                    }

                    function _clearDefaultFolder() {
                        return $service.clearSpamBoxFolder().then(function() {
                            folderSizeSet = false;
                            return _getSpamBoxSize();
                        });
                    }

                    function _clearAllSpamBoxFolders() {
                        return $service.clearAllSpamBoxFolders().then(function() {
                            folderSizeSet = false;
                            return _getSpamBoxSize();
                        }).finally(function() {
                            $scope.showConfirmClearAll = false;
                        });
                    }

                    function _toggleConfirmDeleteAll() {
                        $scope.showConfirmClearAll = !$scope.showConfirmClearAll;
                    }

                    angular.extend($scope, {
                        toggleEnable: toggleEnable,
                        showConfirmClearAll: false,
                        folderSize: 0,
                        clearFolder: _clearDefaultFolder,
                        clearAllSpamBoxFolders: _clearAllSpamBoxFolders,
                        settings: $service.spamAssassinSettings,
                        preferences: $service.userPreferences,
                        toggleConfirmDeleteAll: _toggleConfirmDeleteAll,
                    });

                    $scope.$watch("settings.spam_box_enabled", function() {
                        if ($scope.settings.spam_box_enabled) {
                            _getSpamBoxSize();
                        }
                    });

                }
            ]
        );

        return controller;
    }
);
Back to Directory File Manager