Mailspring/packages/local-sync
Juan Tejada b4ef3f47a7 [local-sync] Batch imap operations in syncback tasks for faster performance
Summary:
This commit makes it so our syncback tasks send as few imap commands as possible by passing a set of UIDs whenever possible. Previously, we would send 1 command per message, with a single UID, which was very wasteful given that we can pass a set of UIDs. This is especially helpful for operating on threads with a large number of messages.

Syncback actions will now group all messages in a thread by the folder they belong to, and issue a single operation on the folder box. When removing all labels from a thread (setting labels to []), we need to issue a command of the form `box.delLabels(uids, labels)`, so we also group messages by set their set of labels to issue as few commands as possible.

This commit only batches imap commands, but we can still batch syncback actions themselves, which can be implemented in a separate patch.

Test Plan: manual

Reviewers: evan, mark, spang

Reviewed By: spang

Subscribers: halla, mg

Differential Revision: https://phab.nylas.com/D3719
2017-01-19 09:53:34 -08:00
..
images
spec Fix unit test path. 2017-01-15 14:09:05 -08:00
src [local-sync] Batch imap operations in syncback tasks for faster performance 2017-01-19 09:53:34 -08:00
stylesheets
main.es6 [local-sync] Cleanup sync tasks to be more consistent with syncback tasks 2017-01-13 12:30:43 -08:00
package.json Update Nylas N1 to Nylas Mail 2017-01-12 11:25:39 -08:00