Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4e2d0844 authored by cketti's avatar cketti
Browse files

Use folder database ID for PendingMarkAllAsRead

parent c98943e9
Loading
Loading
Loading
Loading
+15 −12
Original line number Diff line number Diff line
@@ -955,13 +955,18 @@ public class MessagingController {
    }

    void processPendingMarkAllAsRead(PendingMarkAllAsRead command, Account account) throws MessagingException {
        String folder = command.folder;
        LocalFolder localFolder = null;
        try {
        LocalStore localStore = localStoreProvider.getInstance(account);
            localFolder = localStore.getFolder(folder);
        LocalFolder localFolder = localStore.getFolder(command.folderId);

        String folderServerId;
        try {
            localFolder.open();
            List<? extends Message> messages = localFolder.getMessages(null, false);
            folderServerId = localFolder.getServerId();

            Timber.i("Marking all messages in %s:%s as read", account, folderServerId);

            // TODO: Make this one database UPDATE operation
            List<LocalMessage> messages = localFolder.getMessages(null, false);
            for (Message message : messages) {
                if (!message.isSet(Flag.SEEN)) {
                    message.setFlag(Flag.SEEN, true);
@@ -969,22 +974,20 @@ public class MessagingController {
            }

            for (MessagingListener l : getListeners()) {
                l.folderStatusChanged(account, folder);
                l.folderStatusChanged(account, folderServerId);
            }
        } finally {
            closeFolder(localFolder);
            localFolder.close();
        }

        Backend backend = getBackend(account);
        if (backend.getSupportsSeenFlag()) {
            backend.markAllAsRead(folder);
            backend.markAllAsRead(folderServerId);
        }
    }

    public void markAllMessagesRead(final Account account, final String folder) {
        Timber.i("Marking all messages in %s:%s as read", account.getDescription(), folder);

        PendingCommand command = PendingMarkAllAsRead.create(folder);
    public void markAllMessagesRead(Account account, long folderId) {
        PendingCommand command = PendingMarkAllAsRead.create(folderId);
        queuePendingCommand(account, command);
        processPendingCommands(account);
    }
+5 −6
Original line number Diff line number Diff line
@@ -178,16 +178,15 @@ public class MessagingControllerCommands {
    }

    public static class PendingMarkAllAsRead extends PendingCommand {
        public final String folder;
        public final long folderId;


        public static PendingMarkAllAsRead create(String folder) {
            checkNotNull(folder);
            return new PendingMarkAllAsRead(folder);
        public static PendingMarkAllAsRead create(long folderId) {
            return new PendingMarkAllAsRead(folderId);
        }

        private PendingMarkAllAsRead(String folder) {
            this.folder = folder;
        private PendingMarkAllAsRead(long folderId) {
            this.folderId = folderId;
        }

        @Override
+1 −1
Original line number Diff line number Diff line
@@ -2343,7 +2343,7 @@ public class MessageListFragment extends Fragment implements OnItemClickListener

    private void markAllAsRead() {
        if (isMarkAllAsReadSupported()) {
            messagingController.markAllMessagesRead(account, folderServerId);
            messagingController.markAllMessagesRead(account, currentFolder.databaseId);
        }
    }