into the messagelist is now much, much faster. Intentionally loading the
whole mailbox before we let the user interact with the list is
increasingly painful. A 250 message mailbox takes 2+ seconds to "unlock"
on a modern phone.
Consequently, this commit switches us _back_ to progressive loading of
mailboxes from the synchronous version.
Based on user feedback, we may or may not keep this for the production
release.
list, don't "bother" sorting the messagelist again before opening the
message, it adds a _bit_ of slowness when we don't need it and
we'll sort again when we get back to the message list.
for sorting. This will prevent spam with ...less true dates from pushing
messages to the top of your list. Additionally, when downloading
messages from the server, they'll actually appear in the order they were
received - the existing behaviour really screwed up users who were
trying to triage mail as it came in.
- Created "controller" and "mail.filter" package
- Moved a lot of classes to new/other packages
- Removed unused classes: NoSuchProviderException, MessageDateComparator
Simplify WakeLocks use by pushing.
Correct fault in IMAP IDLE WakeLock usage. The ThreadLocal in
MessagingControllerPushReceiver meant that the WakeLock acquired when
the DONE was sent was not being released when entering back into IDLE
state.
Consolidate the account notification so that all Activities use the
methods in MessagingController.
Fixes Issue 1577
Issue 1551:
Some IMAP servers send untagged EXPUNGEs to IDLEing
clients without ever haven't sent an untagged FETCH. The untagged
EXPUNGEs are harder to deal with because they don't have a UID. So,
if the user has elected to have the IDLE connection start with a poll,
we can maintain a map of message sequence numbers to UIDs that we can
use to figure out which message to delete. To mitigate the risk of
the map falling out of date, we do a UID SEARCH UID before removing
the local copy of the message, just to make sure the message is really
gone from the server. If we detect an error, do another poll to
resync the map.
Issue 1577:
Restore the removal of notifications for an account when the account's
unread message count goes to 0.
Keep search results in sync with newly arrived or deleted messages.
Intentionally does not remove messages from search results due to
flag (flagged/starred or read/unread) state changes, because that
would be awkward while manipulating messages in search results.
Pass around simple Serializable MessageReference objects containing
account UUID, folder name and message UID so that MessageView can
traverse lists of messages which span folders and accounts.