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

Commit d80a1d41 authored by cketti's avatar cketti
Browse files

Merge pull request #1510

Loader helper fixes
parents 47175424 af5856d2
Loading
Loading
Loading
Loading
+14 −5
Original line number Diff line number Diff line
@@ -71,11 +71,11 @@ public class MessageLoaderHelper {
    private static final int DECODE_MESSAGE_LOADER_ID = 2;


    // injected state
    private final Context context;
    private final FragmentManager fragmentManager;
    private final LoaderManager loaderManager;
    @Nullable // may be cleared
    // injected state - all of this may be cleared to avoid data leakage!
    private Context context;
    private FragmentManager fragmentManager;
    private LoaderManager loaderManager;
    @Nullable // make this explicitly nullable, make sure to cancel/ignore any operation if this is null
    private MessageLoaderCallbacks callback;


@@ -137,6 +137,9 @@ public class MessageLoaderHelper {
        }

        callback = null;
        context = null;
        fragmentManager = null;
        loaderManager = null;
    }

    /** Prevents future callbacks, but retains loading state to pick up from in a call to
@@ -148,6 +151,9 @@ public class MessageLoaderHelper {
        }

        callback = null;
        context = null;
        fragmentManager = null;
        loaderManager = null;
    }

    @UiThread
@@ -416,6 +422,9 @@ public class MessageLoaderHelper {
    MessagingListener downloadMessageListener = new MessagingListener() {
        @Override
        public void loadMessageRemoteFinished(Account account, String folder, String uid) {
            if (messageReference.equals(account.getUuid(), folder, uid)) {
                return;
            }
            onMessageDownloadFinished();
        }

+9 −7
Original line number Diff line number Diff line
@@ -109,16 +109,18 @@ public class MessageReference implements Parcelable {

    @Override
    public boolean equals(Object o) {
        if (o instanceof MessageReference == false) {
        if (!(o instanceof MessageReference)) {
            return false;
        }
        MessageReference other = (MessageReference) o;
        if ((accountUuid == other.accountUuid || (accountUuid != null && accountUuid.equals(other.accountUuid)))
                && (folderName == other.folderName || (folderName != null && folderName.equals(other.folderName)))
                && (uid == other.uid || (uid != null && uid.equals(other.uid)))) {
            return true;
        return equals(other.accountUuid, other.folderName, other.uid);
    }
        return false;

    public boolean equals(String accountUuid, String folderName, String uid) {
        // noinspection StringEquality, we check for null values here
        return ((accountUuid == this.accountUuid || (accountUuid != null && accountUuid.equals(this.accountUuid)))
                && (folderName == this.folderName || (folderName != null && folderName.equals(this.folderName)))
                && (uid == this.uid || (uid != null && uid.equals(this.uid))));
    }

    @Override