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

Unverified Commit f4a9d843 authored by cketti's avatar cketti Committed by GitHub
Browse files

Merge pull request #4706 from k9mail/Message_type_cleanup

More specific Message types for method parameters
parents db34c3e6 94489bf5
Loading
Loading
Loading
Loading
+4 −6
Original line number Diff line number Diff line
@@ -9,7 +9,6 @@ import android.content.Intent;
import android.net.Uri;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;

import com.fsck.k9.mail.Message;
import com.fsck.k9.mailstore.LocalMessage;
import com.fsck.k9.provider.EmailProvider;

@@ -139,12 +138,11 @@ public class EmailProviderCache {
        }
    }

    public void unhideMessages(List<? extends Message> messages) {
    public void unhideMessages(List<LocalMessage> messages) {
        synchronized (mHiddenMessageCache) {
            for (Message message : messages) {
                LocalMessage localMessage = (LocalMessage) message;
                long messageId = localMessage.getDatabaseId();
                long folderId = localMessage.getFolder().getDatabaseId();
            for (LocalMessage message : messages) {
                long messageId = message.getDatabaseId();
                long folderId = message.getFolder().getDatabaseId();
                Long hiddenInFolder = mHiddenMessageCache.get(messageId);

                if (hiddenInFolder != null && hiddenInFolder == folderId) {
+19 −20
Original line number Diff line number Diff line
@@ -327,7 +327,7 @@ public class MessagingController {
        cache.hideMessages(messages);
    }

    private void unsuppressMessages(Account account, List<? extends Message> messages) {
    private void unsuppressMessages(Account account, List<LocalMessage> messages) {
        EmailProviderCache cache = EmailProviderCache.getCache(account.getUuid(), context);
        cache.unhideMessages(messages);
    }
@@ -1121,7 +1121,7 @@ public class MessagingController {
     * @param newState
     *         {@code true}, if the flag should be set. {@code false} if it should be removed.
     */
    public void setFlag(Account account, String folderServerId, List<? extends Message> messages, Flag flag,
    public void setFlag(Account account, String folderServerId, List<LocalMessage> messages, Flag flag,
            boolean newState) {
        // TODO: Put this into the background, but right now some callers depend on the message
        //       objects being modified right after this method returns.
@@ -1177,7 +1177,7 @@ public class MessagingController {
            localFolder = localStore.getFolder(folderServerId);
            localFolder.open();

            Message message = localFolder.getMessage(uid);
            LocalMessage message = localFolder.getMessage(uid);
            if (message != null) {
                setFlag(account, folderServerId, Collections.singletonList(message), flag, newState);
            }
@@ -1767,7 +1767,7 @@ public class MessagingController {
                    @Override
                    public void run() {
                        try {
                            List<Message> messagesInThreads = collectMessagesInThreads(account, messages);
                            List<LocalMessage> messagesInThreads = collectMessagesInThreads(account, messages);
                            moveOrCopyMessageSynchronous(account, srcFolder, messagesInThreads, destFolder,
                                    MoveOrCopyFlavor.MOVE);
                        } catch (MessagingException e) {
@@ -1809,7 +1809,7 @@ public class MessagingController {
                    @Override
                    public void run() {
                        try {
                            List<Message> messagesInThreads = collectMessagesInThreads(account, messages);
                            List<LocalMessage> messagesInThreads = collectMessagesInThreads(account, messages);
                            moveOrCopyMessageSynchronous(account, srcFolder, messagesInThreads, destFolder,
                                    MoveOrCopyFlavor.COPY);
                        } catch (MessagingException e) {
@@ -1828,7 +1828,7 @@ public class MessagingController {
    }

    private void moveOrCopyMessageSynchronous(final Account account, final String srcFolder,
            final List<? extends Message> inMessages, final String destFolder,
            final List<LocalMessage> inMessages, final String destFolder,
            MoveOrCopyFlavor operation) {

        try {
@@ -1971,9 +1971,9 @@ public class MessagingController {
        });
    }

    private void deleteThreadsSynchronous(Account account, String folderServerId, List<? extends Message> messages) {
    private void deleteThreadsSynchronous(Account account, String folderServerId, List<LocalMessage> messages) {
        try {
            List<Message> messagesToDelete = collectMessagesInThreads(account, messages);
            List<LocalMessage> messagesToDelete = collectMessagesInThreads(account, messages);

            deleteMessagesSynchronous(account, folderServerId,
                    messagesToDelete, null);
@@ -1982,18 +1982,17 @@ public class MessagingController {
        }
    }

    private List<Message> collectMessagesInThreads(Account account, List<? extends Message> messages)
    private List<LocalMessage> collectMessagesInThreads(Account account, List<LocalMessage> messages)
            throws MessagingException {

        LocalStore localStore = localStoreProvider.getInstance(account);

        List<Message> messagesInThreads = new ArrayList<>();
        for (Message message : messages) {
            LocalMessage localMessage = (LocalMessage) message;
            long rootId = localMessage.getRootId();
            long threadId = (rootId == -1) ? localMessage.getThreadId() : rootId;
        List<LocalMessage> messagesInThreads = new ArrayList<>();
        for (LocalMessage message : messages) {
            long rootId = message.getRootId();
            long threadId = (rootId == -1) ? message.getThreadId() : rootId;

            List<? extends Message> messagesInThread = localStore.getMessagesInThread(threadId);
            List<LocalMessage> messagesInThread = localStore.getMessagesInThread(threadId);

            messagesInThreads.addAll(messagesInThread);
        }
@@ -2054,15 +2053,15 @@ public class MessagingController {
    }

    private void deleteMessagesSynchronous(final Account account, final String folder,
            final List<? extends Message> messages,
            final List<LocalMessage> messages,
            MessagingListener listener) {
        LocalFolder localFolder = null;
        LocalFolder localTrashFolder = null;
        try {
            List<Message> localOnlyMessages = new ArrayList<>();
            List<Message> syncedMessages = new ArrayList<>();
            List<LocalMessage> localOnlyMessages = new ArrayList<>();
            List<LocalMessage> syncedMessages = new ArrayList<>();
            List<String> syncedMessageUids = new ArrayList<>();
            for (Message message : messages) {
            for (LocalMessage message : messages) {
                String uid = message.getUid();
                if (uid.startsWith(K9.LOCAL_UID_PREFIX)) {
                    localOnlyMessages.add(message);
@@ -2153,7 +2152,7 @@ public class MessagingController {
        }
    }

    private static List<String> getUidsFromMessages(List<? extends Message> messages) {
    private static List<String> getUidsFromMessages(List<LocalMessage> messages) {
        List<String> uids = new ArrayList<>(messages.size());
        for (int i = 0; i < messages.size(); i++) {
            uids.add(messages.get(i).getUid());
+14 −18
Original line number Diff line number Diff line
@@ -572,10 +572,8 @@ public class LocalFolder {
                    try {
                        open();
                        if (fp.contains(FetchProfile.Item.BODY)) {
                            for (Message message : messages) {
                                LocalMessage localMessage = (LocalMessage) message;

                                loadMessageParts(db, localMessage);
                            for (LocalMessage message : messages) {
                                loadMessageParts(db, message);
                            }
                        }
                    } catch (MessagingException e) {
@@ -865,11 +863,11 @@ public class LocalFolder {
        return messages;
    }

    public Map<String, String> copyMessages(List<? extends Message> msgs, LocalFolder folder) throws MessagingException {
    public Map<String, String> copyMessages(List<LocalMessage> msgs, LocalFolder folder) throws MessagingException {
        return folder.appendMessages(msgs, true);
    }

    public Map<String, String> moveMessages(final List<? extends Message> msgs, final LocalFolder destFolder) throws MessagingException {
    public Map<String, String> moveMessages(final List<LocalMessage> msgs, final LocalFolder destFolder) throws MessagingException {
        final Map<String, String> uidMap = new HashMap<>();

        try {
@@ -878,16 +876,14 @@ public class LocalFolder {
                public Void doDbWork(final SQLiteDatabase db) throws WrappedException, UnavailableStorageException {
                    try {
                        destFolder.open();
                        for (Message message : msgs) {
                            LocalMessage lMessage = (LocalMessage)message;

                        for (LocalMessage message : msgs) {
                            String oldUID = message.getUid();

                            Timber.d("Updating folder_id to %s for message with UID %s, " +
                                    "id %d currently in folder %s",
                                    destFolder.getDatabaseId(),
                                    message.getUid(),
                                    lMessage.getDatabaseId(),
                                    message.getDatabaseId(),
                                    getServerId());

                            String newUid = K9.LOCAL_UID_PREFIX + UUID.randomUUID().toString();
@@ -901,7 +897,7 @@ public class LocalFolder {
                            /*
                             * "Move" the message into the new folder
                             */
                            long msgId = lMessage.getDatabaseId();
                            long msgId = message.getDatabaseId();
                            String[] idArg = new String[] { Long.toString(msgId) };

                            ContentValues cv = new ContentValues();
@@ -972,7 +968,7 @@ public class LocalFolder {
                            cv.clear();
                            cv.put("message_id", newId);
                            db.update("threads", cv, "id = ?",
                                    new String[] { Long.toString(lMessage.getThreadId()) });
                                    new String[] { Long.toString(message.getThreadId()) });
                        }
                    } catch (MessagingException e) {
                        throw new WrappedException(e);
@@ -1001,16 +997,16 @@ public class LocalFolder {
     * fact, in most cases, they are not). Therefore, if you want to make local changes only to a
     * message, retrieve the appropriate local message instance first (if it already exists).
     */
    public Map<String, String> appendMessages(List<? extends Message> messages) throws MessagingException {
    public Map<String, String> appendMessages(List<Message> messages) throws MessagingException {
        return appendMessages(messages, false);
    }

    public void destroyMessages(final List<? extends Message> messages) {
    public void destroyMessages(final List<LocalMessage> messages) {
        try {
            this.localStore.getDatabase().execute(true, new DbCallback<Void>() {
                @Override
                public Void doDbWork(final SQLiteDatabase db) throws WrappedException, UnavailableStorageException {
                    for (Message message : messages) {
                    for (LocalMessage message : messages) {
                        try {
                            message.destroy();
                        } catch (MessagingException e) {
@@ -1534,7 +1530,7 @@ public class LocalFolder {
        this.localStore.notifyChange();
    }

    public void setFlags(final List<? extends Message> messages, final Set<Flag> flags, final boolean value)
    public void setFlags(final List<LocalMessage> messages, final Set<Flag> flags, final boolean value)
    throws MessagingException {
        open();

@@ -1545,7 +1541,7 @@ public class LocalFolder {
                public Void doDbWork(final SQLiteDatabase db) throws WrappedException,
                        UnavailableStorageException {

                    for (Message message : messages) {
                    for (LocalMessage message : messages) {
                        try {
                            message.setFlags(flags, value);
                        } catch (MessagingException e) {
@@ -1564,7 +1560,7 @@ public class LocalFolder {
    public void setFlags(final Set<Flag> flags, boolean value)
    throws MessagingException {
        open();
        for (Message message : getMessages(null)) {
        for (LocalMessage message : getMessages(null)) {
            message.setFlags(flags, value);
        }
    }
+2 −2
Original line number Diff line number Diff line
@@ -6,9 +6,9 @@ import java.util.Collection;
import java.util.List;
import java.util.Map;

import com.fsck.k9.mail.Message;
import com.fsck.k9.mail.MessagingException;
import com.fsck.k9.mail.store.imap.ImapFolder;
import com.fsck.k9.mail.store.imap.ImapMessage;
import com.fsck.k9.mail.store.imap.ImapStore;
import org.jetbrains.annotations.NotNull;
import timber.log.Timber;
@@ -40,7 +40,7 @@ class CommandMoveOrCopyMessages {
        try {
            remoteSrcFolder = imapStore.getFolder(srcFolder);

            List<Message> messages = new ArrayList<>();
            List<ImapMessage> messages = new ArrayList<>();

            for (String uid : uids) {
                messages.add(remoteSrcFolder.getMessage(uid));
+2 −2
Original line number Diff line number Diff line
@@ -6,9 +6,9 @@ import java.util.Collections;
import java.util.List;

import com.fsck.k9.mail.Flag;
import com.fsck.k9.mail.Message;
import com.fsck.k9.mail.MessagingException;
import com.fsck.k9.mail.store.imap.ImapFolder;
import com.fsck.k9.mail.store.imap.ImapMessage;
import com.fsck.k9.mail.store.imap.ImapStore;
import org.jetbrains.annotations.NotNull;

@@ -34,7 +34,7 @@ class CommandSetFlag {
            if (remoteFolder.getMode() != ImapFolder.OPEN_MODE_RW) {
                return;
            }
            List<Message> messages = new ArrayList<>();
            List<ImapMessage> messages = new ArrayList<>();
            for (String uid : messageServerIds) {
                messages.add(remoteFolder.getMessage(uid));
            }
Loading