summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDanny Baumann <dannybaumann@web.de>2017-05-29 12:07:19 +0200
committerDanny Baumann <dannybaumann@web.de>2017-05-29 12:08:49 +0200
commitb76ada5c52890087d42258d80e664ccbedeeb116 (patch)
tree93db8b68ad461da1536d2ed622bde5d914e4785c
parent70ccb25cd8109f9f4473fc7ea32ec9d83e2d4036 (diff)
downloadandroid_packages_apps_Email-b76ada5c52890087d42258d80e664ccbedeeb116.tar.gz
android_packages_apps_Email-b76ada5c52890087d42258d80e664ccbedeeb116.tar.bz2
android_packages_apps_Email-b76ada5c52890087d42258d80e664ccbedeeb116.zip
Fix check for deleted messages.
If we deleted a message locally, there won't be a local message map entry for the DELETED flag update case, so we need to remove the message from the unsynced message list before checking the local map entry. Change-Id: Ib83703dde85ce65d2f292fb37241e3be23eeb5d8
-rwxr-xr-xprovider_src/com/android/email/service/ImapService.java47
1 files changed, 25 insertions, 22 deletions
diff --git a/provider_src/com/android/email/service/ImapService.java b/provider_src/com/android/email/service/ImapService.java
index 8d8dbd41f..bef3c8f6b 100755
--- a/provider_src/com/android/email/service/ImapService.java
+++ b/provider_src/com/android/email/service/ImapService.java
@@ -1868,32 +1868,35 @@ public class ImapService extends Service {
// 8.- Remove remote deleted messages
for (final Message remoteMessage : remoteMessages) {
- if (remoteMessage.isSet(Flag.DELETED)) {
- LocalMessageInfo info = localMessageMap.get(remoteMessage.getUid());
- if (info == null) {
- continue;
- }
+ if (!remoteMessage.isSet(Flag.DELETED)) {
+ continue;
+ }
- // Delete associated data (attachment files)
- // Attachment & Body records are auto-deleted when we delete the Message record
- AttachmentUtilities.deleteAllAttachmentFiles(ctx, acct.mId, info.mId);
+ // Make sure we don't sync messages (again) that we deleted locally
+ // before and now get a flag update (DELETED being set) for now.
+ unsyncedMessages.remove(remoteMessage);
- // Make sure we don't sync deleted messages we just got a flag update for
- unsyncedMessages.remove(remoteMessage);
+ LocalMessageInfo info = localMessageMap.get(remoteMessage.getUid());
+ if (info == null) {
+ continue;
+ }
- // Delete the message itself
- final Uri uriToDelete = ContentUris.withAppendedId(
- EmailContent.Message.CONTENT_URI, info.mId);
- resolver.delete(uriToDelete, null, null);
+ // Delete associated data (attachment files)
+ // Attachment & Body records are auto-deleted when we delete the Message record
+ AttachmentUtilities.deleteAllAttachmentFiles(ctx, acct.mId, info.mId);
- // Delete extra rows (e.g. updated or deleted)
- final Uri updateRowToDelete = ContentUris.withAppendedId(
- EmailContent.Message.UPDATED_CONTENT_URI, info.mId);
- resolver.delete(updateRowToDelete, null, null);
- final Uri deleteRowToDelete = ContentUris.withAppendedId(
- EmailContent.Message.DELETED_CONTENT_URI, info.mId);
- resolver.delete(deleteRowToDelete, null, null);
- }
+ // Delete the message itself
+ final Uri uriToDelete = ContentUris.withAppendedId(
+ EmailContent.Message.CONTENT_URI, info.mId);
+ resolver.delete(uriToDelete, null, null);
+
+ // Delete extra rows (e.g. updated or deleted)
+ final Uri updateRowToDelete = ContentUris.withAppendedId(
+ EmailContent.Message.UPDATED_CONTENT_URI, info.mId);
+ resolver.delete(updateRowToDelete, null, null);
+ final Uri deleteRowToDelete = ContentUris.withAppendedId(
+ EmailContent.Message.DELETED_CONTENT_URI, info.mId);
+ resolver.delete(deleteRowToDelete, null, null);
}
// 9.- Load unsynced messages