(feat) added Junk handling feature from v2

pull/198/head
Ludovic Marcotte 2016-02-08 15:36:01 -05:00
parent ace7e0771f
commit ee3276f01d
9 changed files with 58 additions and 5 deletions

2
NEWS
View File

@ -2,7 +2,7 @@
------------------
Enhancements
-
- [web] added Junk handling feature from v2
Bug fixes
- [web] handle birthday dates before 1970

View File

@ -857,7 +857,9 @@ _compareFetchResultsByMODSEQ (id entry1, id entry2, void *data)
body = [[[NGMimeMultipartBody alloc] initWithPart: messageToSend] autorelease];
}
mailObject = [self lookupName: [uids objectAtIndex: i] inContext: context acquire: NO];
mailObject = [self lookupName: [NSString stringWithFormat: @"%@", [uids objectAtIndex: i]]
inContext: context
acquire: NO];
// We skip emails that might have disappeared before we were able
// to perform the action

View File

@ -276,6 +276,10 @@
"Set as Drafts" = "Set as Drafts";
"Set as Sent" = "Set as Sent";
"Set as Trash" = "Set as Trash";
/* Set the folder as the one holding Junk mails */
"Set as Junk" = "Set as Junk";
"Sort" = "Sort";
"Descending Order" = "Descending Order";
"Back" = "Back";
@ -291,4 +295,4 @@
"More search options" = "More search options";
"Your email has been saved" = "Your email has been saved";
"Your email has been sent" = "Your email has been sent";
"Folder compacted" = "Folder compacted";
"Folder compacted" = "Folder compacted";

View File

@ -155,6 +155,10 @@
<md-button class="sg-icon-button" ng-click="mailbox.confirmDeleteSelectedMessages()">
<md-icon>delete</md-icon>
</md-button>
<md-button class="sg-icon-button" ng-click="mailbox.markOrUnMarkMessagesAsJunk()">
<md-icon ng-hide="mailbox.service.selectedFolder.type == 'junk'">thumb_down</md-icon>
<md-icon ng-hide="mailbox.service.selectedFolder.type != 'junk'">thumb_up</md-icon>
</md-button>
<md-menu>
<md-button class="sg-icon-button" label:aria-label="More messages options" ng-click="$mdOpenMenu()">
<md-icon>more_vert</md-icon>

View File

@ -172,6 +172,11 @@
<var:string label:value="Set as Trash"/>
</md-button>
</md-menu-item>
<md-menu-item ng-show="folder.type == 'folder'">
<md-button type="button" ng-click="app.setFolderAs(folder, 'Junk')">
<var:string label:value="Set as Junk"/>
</md-button>
</md-menu-item>
<md-menu-divider ng-show="folder.type != 'additional'"><!-- divider --></md-menu-divider>
<md-menu-item ng-show="folder.type != 'additional'">
<md-button type="button" ng-click="app.share(folder)">

View File

@ -195,8 +195,7 @@
};
mailbox = _find(this.$mailboxes);
console.debug(mailbox);
console.debug(this.specialMailboxes);
return mailbox;
};
/**

View File

@ -576,6 +576,20 @@
});
};
/**
* @function $markOrUnMarkMessagesAsJunk
* @memberof Mailbox.prototype
* @desc Mark messages as junk/not junk
* @return a promise of the HTTP operation
*/
Mailbox.prototype.$markOrUnMarkMessagesAsJunk = function(messages) {
var _this = this, uids;
var method = (this.type == 'junk' ? 'markMessagesAsNotJunk' : 'markMessagesAsJunk');
uids = _.pluck(messages, 'uid');
return Mailbox.$$resource.post(this.id, method, {uids: uids});
};
/**
* @function $copyMessages
* @memberof Mailbox.prototype

View File

@ -23,6 +23,7 @@
vm.toggleMessageSelection = toggleMessageSelection;
vm.unselectMessages = unselectMessages;
vm.confirmDeleteSelectedMessages = confirmDeleteSelectedMessages;
vm.markOrUnMarkMessagesAsJunk = markOrUnMarkMessagesAsJunk;
vm.copySelectedMessages = copySelectedMessages;
vm.moveSelectedMessages = moveSelectedMessages;
vm.saveSelectedMessages = saveSelectedMessages;
@ -69,6 +70,28 @@
});
}
function markOrUnMarkMessagesAsJunk() {
var moveSelectedMessage = false;
var selectedMessages = _.filter(vm.selectedFolder.$messages, function(message) {
if (message.selected &&
message.uid == vm.selectedFolder.selectedMessage)
moveSelectedMessage = true;
return message.selected;
});
vm.selectedFolder.$markOrUnMarkMessagesAsJunk(selectedMessages).then(function() {
var folder = '/' + vm.account.id + '/folderINBOX';
if (vm.selectedFolder.type != 'junk') {
folder = '/' + vm.account.$getMailboxByType('junk').id;
}
vm.selectedFolder.$moveMessages(selectedMessages, folder).then(function(index) {
unselectMessage(moveSelectedMessage, index);
});
});
}
function unselectMessage(message, index) {
// Unselect current message and cleverly load the next message
var nextMessage, previousMessage, nextIndex = index;

View File

@ -301,6 +301,8 @@
return {name: l('SentFolderName'), icon: 'send'};
else if (folder.type == 'trash')
return {name: l('TrashFolderName'), icon: 'delete'};
else if (folder.type == 'junk')
return {name: l('JunkFolderName'), icon: 'thumb_down'};
else if (folder.type == 'additional')
return {name: folder.name, icon: 'folder_shared'};