Loading app/core/src/main/java/com/fsck/k9/controller/MessagingController.java +9 −10 Original line number Diff line number Diff line Loading @@ -927,20 +927,18 @@ public class MessagingController { backend.setFlag(command.folder, command.uids, command.flag, command.newState); } private void queueDelete(final Account account, final String folderServerId, final List<String> uids) { putBackground("queueDelete " + account.getDescription() + ":" + folderServerId, null, new Runnable() { @Override public void run() { PendingCommand command = PendingDelete.create(folderServerId, uids); private void queueDelete(Account account, long folderId, List<String> uids) { putBackground("queueDelete", null, () -> { PendingCommand command = PendingDelete.create(folderId, uids); queuePendingCommand(account, command); processPendingCommands(account); } }); } void processPendingDelete(PendingDelete command, Account account) throws MessagingException { Backend backend = getBackend(account); backend.deleteMessages(command.folder, command.uids); String folderServerId = getFolderServerId(account, command.folderId); backend.deleteMessages(folderServerId, command.uids); } private void queueExpunge(Account account, long folderId) { Loading Loading @@ -2080,7 +2078,8 @@ public class MessagingController { if (account.getDeletePolicy() == DeletePolicy.ON_DELETE) { if (!account.hasTrashFolder() || folder.equals(account.getTrashFolder()) || !backend.isDeleteMoveToTrash()) { queueDelete(account, folder, syncedMessageUids); long folderId = localFolder.getDatabaseId(); queueDelete(account, folderId, syncedMessageUids); } else if (account.isMarkMessageAsReadOnDelete()) { queueMoveOrCopy(account, folder, account.getTrashFolder(), MoveOrCopyFlavor.MOVE_AND_MARK_AS_READ, uidMap); Loading app/core/src/main/java/com/fsck/k9/controller/MessagingControllerCommands.java +5 −6 Original line number Diff line number Diff line Loading @@ -201,18 +201,17 @@ public class MessagingControllerCommands { } public static class PendingDelete extends PendingCommand { public final String folder; public final long folderId; public final List<String> uids; public static PendingDelete create(String folder, List<String> uids) { checkNotNull(folder); public static PendingDelete create(long folderId, List<String> uids) { requireValidUids(uids); return new PendingDelete(folder, uids); return new PendingDelete(folderId, uids); } private PendingDelete(String folder, List<String> uids) { this.folder = folder; private PendingDelete(long folderId, List<String> uids) { this.folderId = folderId; this.uids = uids; } Loading app/storage/build.gradle +1 −0 Original line number Diff line number Diff line Loading @@ -10,6 +10,7 @@ dependencies { implementation project(":app:core") implementation "com.jakewharton.timber:timber:${versions.timber}" implementation "org.apache.james:apache-mime4j-core:${versions.mime4j}" implementation "com.squareup.moshi:moshi:${versions.moshi}" testImplementation project(':mail:testing') testImplementation project(':app:testing') Loading app/storage/src/main/java/com/fsck/k9/storage/migrations/LegacyPendingDelete.java 0 → 100644 +23 −0 Original line number Diff line number Diff line package com.fsck.k9.storage.migrations; import java.util.List; import static com.fsck.k9.controller.Preconditions.requireValidUids; import static com.fsck.k9.helper.Preconditions.checkNotNull; class LegacyPendingDelete { public final String folder; public final List<String> uids; static LegacyPendingDelete create(String folder, List<String> uids) { checkNotNull(folder); requireValidUids(uids); return new LegacyPendingDelete(folder, uids); } private LegacyPendingDelete(String folder, List<String> uids) { this.folder = folder; this.uids = uids; } } app/storage/src/main/java/com/fsck/k9/storage/migrations/MigrationTo69.kt +6 −3 Original line number Diff line number Diff line Loading @@ -2,10 +2,10 @@ package com.fsck.k9.storage.migrations import android.content.ContentValues import android.database.sqlite.SQLiteDatabase import com.fsck.k9.controller.MessagingControllerCommands.PendingDelete import com.fsck.k9.controller.MessagingControllerCommands.PendingSetFlag import com.fsck.k9.controller.PendingCommandSerializer import com.fsck.k9.mail.Flag import com.squareup.moshi.Moshi internal class MigrationTo69(private val db: SQLiteDatabase) { private val serializer: PendingCommandSerializer = PendingCommandSerializer.getInstance() Loading @@ -26,11 +26,14 @@ internal class MigrationTo69(private val db: SQLiteDatabase) { } } val moshi = Moshi.Builder().build() val adapter = moshi.adapter(LegacyPendingDelete::class.java) for (pendingSetFlag in pendingSetFlagsToConvert) { val pendingDelete = PendingDelete.create(pendingSetFlag.folder, pendingSetFlag.uids) val pendingDelete = LegacyPendingDelete.create(pendingSetFlag.folder, pendingSetFlag.uids) val contentValues = ContentValues().apply { put("command", "delete") put("data", serializer.serialize(pendingDelete)) put("data", adapter.toJson(pendingDelete)) } db.update("pending_commands", contentValues, "id = ?", arrayOf(pendingSetFlag.databaseId.toString())) Loading Loading
app/core/src/main/java/com/fsck/k9/controller/MessagingController.java +9 −10 Original line number Diff line number Diff line Loading @@ -927,20 +927,18 @@ public class MessagingController { backend.setFlag(command.folder, command.uids, command.flag, command.newState); } private void queueDelete(final Account account, final String folderServerId, final List<String> uids) { putBackground("queueDelete " + account.getDescription() + ":" + folderServerId, null, new Runnable() { @Override public void run() { PendingCommand command = PendingDelete.create(folderServerId, uids); private void queueDelete(Account account, long folderId, List<String> uids) { putBackground("queueDelete", null, () -> { PendingCommand command = PendingDelete.create(folderId, uids); queuePendingCommand(account, command); processPendingCommands(account); } }); } void processPendingDelete(PendingDelete command, Account account) throws MessagingException { Backend backend = getBackend(account); backend.deleteMessages(command.folder, command.uids); String folderServerId = getFolderServerId(account, command.folderId); backend.deleteMessages(folderServerId, command.uids); } private void queueExpunge(Account account, long folderId) { Loading Loading @@ -2080,7 +2078,8 @@ public class MessagingController { if (account.getDeletePolicy() == DeletePolicy.ON_DELETE) { if (!account.hasTrashFolder() || folder.equals(account.getTrashFolder()) || !backend.isDeleteMoveToTrash()) { queueDelete(account, folder, syncedMessageUids); long folderId = localFolder.getDatabaseId(); queueDelete(account, folderId, syncedMessageUids); } else if (account.isMarkMessageAsReadOnDelete()) { queueMoveOrCopy(account, folder, account.getTrashFolder(), MoveOrCopyFlavor.MOVE_AND_MARK_AS_READ, uidMap); Loading
app/core/src/main/java/com/fsck/k9/controller/MessagingControllerCommands.java +5 −6 Original line number Diff line number Diff line Loading @@ -201,18 +201,17 @@ public class MessagingControllerCommands { } public static class PendingDelete extends PendingCommand { public final String folder; public final long folderId; public final List<String> uids; public static PendingDelete create(String folder, List<String> uids) { checkNotNull(folder); public static PendingDelete create(long folderId, List<String> uids) { requireValidUids(uids); return new PendingDelete(folder, uids); return new PendingDelete(folderId, uids); } private PendingDelete(String folder, List<String> uids) { this.folder = folder; private PendingDelete(long folderId, List<String> uids) { this.folderId = folderId; this.uids = uids; } Loading
app/storage/build.gradle +1 −0 Original line number Diff line number Diff line Loading @@ -10,6 +10,7 @@ dependencies { implementation project(":app:core") implementation "com.jakewharton.timber:timber:${versions.timber}" implementation "org.apache.james:apache-mime4j-core:${versions.mime4j}" implementation "com.squareup.moshi:moshi:${versions.moshi}" testImplementation project(':mail:testing') testImplementation project(':app:testing') Loading
app/storage/src/main/java/com/fsck/k9/storage/migrations/LegacyPendingDelete.java 0 → 100644 +23 −0 Original line number Diff line number Diff line package com.fsck.k9.storage.migrations; import java.util.List; import static com.fsck.k9.controller.Preconditions.requireValidUids; import static com.fsck.k9.helper.Preconditions.checkNotNull; class LegacyPendingDelete { public final String folder; public final List<String> uids; static LegacyPendingDelete create(String folder, List<String> uids) { checkNotNull(folder); requireValidUids(uids); return new LegacyPendingDelete(folder, uids); } private LegacyPendingDelete(String folder, List<String> uids) { this.folder = folder; this.uids = uids; } }
app/storage/src/main/java/com/fsck/k9/storage/migrations/MigrationTo69.kt +6 −3 Original line number Diff line number Diff line Loading @@ -2,10 +2,10 @@ package com.fsck.k9.storage.migrations import android.content.ContentValues import android.database.sqlite.SQLiteDatabase import com.fsck.k9.controller.MessagingControllerCommands.PendingDelete import com.fsck.k9.controller.MessagingControllerCommands.PendingSetFlag import com.fsck.k9.controller.PendingCommandSerializer import com.fsck.k9.mail.Flag import com.squareup.moshi.Moshi internal class MigrationTo69(private val db: SQLiteDatabase) { private val serializer: PendingCommandSerializer = PendingCommandSerializer.getInstance() Loading @@ -26,11 +26,14 @@ internal class MigrationTo69(private val db: SQLiteDatabase) { } } val moshi = Moshi.Builder().build() val adapter = moshi.adapter(LegacyPendingDelete::class.java) for (pendingSetFlag in pendingSetFlagsToConvert) { val pendingDelete = PendingDelete.create(pendingSetFlag.folder, pendingSetFlag.uids) val pendingDelete = LegacyPendingDelete.create(pendingSetFlag.folder, pendingSetFlag.uids) val contentValues = ContentValues().apply { put("command", "delete") put("data", serializer.serialize(pendingDelete)) put("data", adapter.toJson(pendingDelete)) } db.update("pending_commands", contentValues, "id = ?", arrayOf(pendingSetFlag.databaseId.toString())) Loading