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

Commit 01df652d authored by Vincent Breitmoser's avatar Vincent Breitmoser
Browse files

don't create superfluous RetainFragments

parent 19b7d449
Loading
Loading
Loading
Loading
+8 −4
Original line number Original line Diff line number Diff line
@@ -258,7 +258,7 @@ public class MessageLoaderHelper {
    // process with crypto helper
    // process with crypto helper


    private void startOrResumeCryptoOperation() {
    private void startOrResumeCryptoOperation() {
        RetainFragment<MessageCryptoHelper> retainCryptoHelperFragment = getMessageCryptoHelperRetainFragment();
        RetainFragment<MessageCryptoHelper> retainCryptoHelperFragment = getMessageCryptoHelperRetainFragment(true);
        if (retainCryptoHelperFragment.hasData()) {
        if (retainCryptoHelperFragment.hasData()) {
            messageCryptoHelper = retainCryptoHelperFragment.getData();
            messageCryptoHelper = retainCryptoHelperFragment.getData();
        } else {
        } else {
@@ -270,7 +270,7 @@ public class MessageLoaderHelper {
    }
    }


    private void cancelAndClearCryptoOperation() {
    private void cancelAndClearCryptoOperation() {
        RetainFragment<MessageCryptoHelper> retainCryptoHelperFragment = getMessageCryptoHelperRetainFragment();
        RetainFragment<MessageCryptoHelper> retainCryptoHelperFragment = getMessageCryptoHelperRetainFragment(false);
        if (retainCryptoHelperFragment != null) {
        if (retainCryptoHelperFragment != null) {
            if (retainCryptoHelperFragment.hasData()) {
            if (retainCryptoHelperFragment.hasData()) {
                messageCryptoHelper = retainCryptoHelperFragment.getData();
                messageCryptoHelper = retainCryptoHelperFragment.getData();
@@ -281,8 +281,12 @@ public class MessageLoaderHelper {
        }
        }
    }
    }


    private RetainFragment<MessageCryptoHelper> getMessageCryptoHelperRetainFragment() {
    private RetainFragment<MessageCryptoHelper> getMessageCryptoHelperRetainFragment(boolean createIfNotExists) {
        if (createIfNotExists) {
            return RetainFragment.findOrCreate(fragmentManager, "crypto_helper_" + messageReference.hashCode());
            return RetainFragment.findOrCreate(fragmentManager, "crypto_helper_" + messageReference.hashCode());
        } else {
            return RetainFragment.findOrNull(fragmentManager, "crypto_helper_" + messageReference.hashCode());
        }
    }
    }


    private MessageCryptoCallback messageCryptoCallback = new MessageCryptoCallback() {
    private MessageCryptoCallback messageCryptoCallback = new MessageCryptoCallback() {
+5 −0
Original line number Original line Diff line number Diff line
@@ -30,6 +30,11 @@ public class RetainFragment<T> extends Fragment {
        this.data = data;
        this.data = data;
    }
    }


    public static <T> RetainFragment<T> findOrNull(FragmentManager fm, String tag) {
        // noinspection unchecked, we know this is the the right type
        return (RetainFragment<T>) fm.findFragmentByTag(tag);
    }

    public static <T> RetainFragment<T> findOrCreate(FragmentManager fm, String tag) {
    public static <T> RetainFragment<T> findOrCreate(FragmentManager fm, String tag) {
        // noinspection unchecked, we know this is the the right type
        // noinspection unchecked, we know this is the the right type
        RetainFragment<T> retainFragment = (RetainFragment<T>) fm.findFragmentByTag(tag);
        RetainFragment<T> retainFragment = (RetainFragment<T>) fm.findFragmentByTag(tag);