From bce575a53d16a00739fb1a0af8d53859585226ff Mon Sep 17 00:00:00 2001 From: smizrahi Date: Sat, 16 Nov 2024 09:49:55 +0100 Subject: [PATCH] feat(mail): Deletion of mail older than x --- UI/MailerUI/English.lproj/Localizable.strings | 3 + UI/MailerUI/French.lproj/Localizable.strings | 3 + UI/MailerUI/UIxMailFolderActions.m | 18 ++++++ UI/MailerUI/product.plist | 5 ++ .../MailerUI/UIxMailFolderTemplate.wox | 59 +++++++++++++++++++ UI/Templates/MailerUI/UIxMailMainFrame.wox | 5 ++ .../js/Mailer/Mailbox.service.js | 6 ++ .../js/Mailer/MailboxesController.js | 39 ++++++++++++ .../js/Mailer/sgMailboxListItem.directive.js | 8 +++ 9 files changed, 146 insertions(+) diff --git a/UI/MailerUI/English.lproj/Localizable.strings b/UI/MailerUI/English.lproj/Localizable.strings index 7095b54e4..f71b108aa 100644 --- a/UI/MailerUI/English.lproj/Localizable.strings +++ b/UI/MailerUI/English.lproj/Localizable.strings @@ -514,3 +514,6 @@ /* Hotkey to forward to a message */ "hotkey_forward" = "f"; + +/* Email deletion */ +"Removal of old emails..." = "Removal of old emails..."; \ No newline at end of file diff --git a/UI/MailerUI/French.lproj/Localizable.strings b/UI/MailerUI/French.lproj/Localizable.strings index fa8b8cec9..ac6755cf5 100644 --- a/UI/MailerUI/French.lproj/Localizable.strings +++ b/UI/MailerUI/French.lproj/Localizable.strings @@ -514,3 +514,6 @@ /* Hotkey to forward to a message */ "hotkey_forward" = "f"; + +/* Email deletion */ +"Removal of old emails..." = "Suppression des anciens emails..."; \ No newline at end of file diff --git a/UI/MailerUI/UIxMailFolderActions.m b/UI/MailerUI/UIxMailFolderActions.m index 660b81a4b..7a6f3d997 100644 --- a/UI/MailerUI/UIxMailFolderActions.m +++ b/UI/MailerUI/UIxMailFolderActions.m @@ -46,6 +46,8 @@ #import #import +#import + #import "UIxMailFolderActions.h" @implementation UIxMailFolderActions @@ -1298,4 +1300,20 @@ return [self _markMessagesAsJunkOrNotJunk: NO]; } +- (WOResponse *) cleanMailboxAction +{ + NSString *searchString; + EOQualifier *searchQualifier; + + searchString = [NSString stringWithFormat: @"(date >= (NSCalendarDate)\"%@\")", @"2020-01-12"]; + searchQualifier = [EOQualifier qualifierWithQualifierFormat: searchString]; + + id foo; + foo = [[self clientObject] fetchUIDsMatchingQualifier: searchQualifier + sortOrdering: @"date" + threaded: NO]; + + return [self responseWithStatus: 200]; +} + @end diff --git a/UI/MailerUI/product.plist b/UI/MailerUI/product.plist index fd1d96fe6..278fb3d33 100644 --- a/UI/MailerUI/product.plist +++ b/UI/MailerUI/product.plist @@ -49,6 +49,11 @@ actionClass = "UIxMailFolderActions"; actionName = "expunge"; }; + cleanMailbox = { + protectedBy = "View"; + actionClass = "UIxMailFolderActions"; + actionName = "cleanMailbox"; + }; createFolder = { protectedBy = "View"; actionClass = "UIxMailFolderActions"; diff --git a/UI/Templates/MailerUI/UIxMailFolderTemplate.wox b/UI/Templates/MailerUI/UIxMailFolderTemplate.wox index c66cd9e6b..6fdb4f601 100644 --- a/UI/Templates/MailerUI/UIxMailFolderTemplate.wox +++ b/UI/Templates/MailerUI/UIxMailFolderTemplate.wox @@ -632,4 +632,63 @@ + + diff --git a/UI/Templates/MailerUI/UIxMailMainFrame.wox b/UI/Templates/MailerUI/UIxMailMainFrame.wox index 2e9b0fade..02d48c47e 100644 --- a/UI/Templates/MailerUI/UIxMailMainFrame.wox +++ b/UI/Templates/MailerUI/UIxMailMainFrame.wox @@ -179,6 +179,11 @@ + + + + + diff --git a/UI/WebServerResources/js/Mailer/Mailbox.service.js b/UI/WebServerResources/js/Mailer/Mailbox.service.js index 7dca6d67a..20b87dce8 100644 --- a/UI/WebServerResources/js/Mailer/Mailbox.service.js +++ b/UI/WebServerResources/js/Mailer/Mailbox.service.js @@ -1312,4 +1312,10 @@ Mailbox.prototype.getHighlightWords = function () { return this.$highlightWords; }; + + /* TODO */ + Mailbox.prototype.cleanMailbox = function () { + Mailbox.$$resource.post(this.id, 'cleanMailbox'); + }; + })(); diff --git a/UI/WebServerResources/js/Mailer/MailboxesController.js b/UI/WebServerResources/js/Mailer/MailboxesController.js index 83f01735c..44ff21071 100644 --- a/UI/WebServerResources/js/Mailer/MailboxesController.js +++ b/UI/WebServerResources/js/Mailer/MailboxesController.js @@ -53,6 +53,10 @@ $rootScope.$on('resetMailAdvancedSearchPanel', function () { vm.reset(); }); + + $rootScope.$on('showRemoveOldEmailsPanel', function (e, d) { + vm.showRemoveOldEmailsPanel(d.folder); + }); }; @@ -447,6 +451,41 @@ }); }; + this.showRemoveOldEmailsPanel = function (folder) { + // Close sidenav on small devices + if (!$mdMedia(sgConstant['gt-md'])) + $mdSidenav('left').close(); + + $mdDialog.show({ + template: document.getElementById('removeOldEmails').innerHTML, + parent: angular.element(document.body), + controller: function () { + var dialogCtrl = this; + + this.$onInit = function () { + // Pass main controller + this.mainController = vm; + this.folder = folder; + this.folderName = folder.$displayName; + }; + + dialogCtrl.closeDialog = function () { + $mdDialog.hide(); + }; + + dialogCtrl.apply = function () { + console.log(this.mailbox); + this.folder.cleanMailbox(); + // $mdDialog.hide(); + }; + }, + controllerAs: 'dialogCtrl', + clickOutsideToClose: false, + escapeToClose: false, + }); + }; + + this.delegate = function(account) { $mdDialog.show({ templateUrl: account.id + '/delegation', // UI/Templates/MailerUI/UIxMailUserDelegation.wox diff --git a/UI/WebServerResources/js/Mailer/sgMailboxListItem.directive.js b/UI/WebServerResources/js/Mailer/sgMailboxListItem.directive.js index 08a4b5be3..1b07c394c 100644 --- a/UI/WebServerResources/js/Mailer/sgMailboxListItem.directive.js +++ b/UI/WebServerResources/js/Mailer/sgMailboxListItem.directive.js @@ -271,6 +271,14 @@ }); }; + this.removeOldEmails = function () { + // Close sidenav on small devices + if (!$mdMedia(sgConstant['gt-md'])) + $mdSidenav('left').close(); + + $rootScope.$broadcast('showRemoveOldEmailsPanel', {folder: this.folder}); // Show remove old emails panel (broadcast event to MailboxesController) + }; + this.emptyJunkFolder = function() { return this.emptyFolder(l('Junk folder emptied')); };