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

Commit 492cf846 authored by Ibrahim Yilmaz's avatar Ibrahim Yilmaz Committed by Automerger Merge Worker
Browse files

Decouple MessagingMessage View creation from view binding in Messaging Layouts am: 8a9733fc

parents 0a7b2261 8a9733fc
Loading
Loading
Loading
Loading
+22 −14
Original line number Diff line number Diff line
@@ -397,8 +397,7 @@ public class ConversationLayout extends FrameLayout
                = Notification.MessagingStyle.Message.getMessagesFromBundleArray(histMessages);

        // mUser now set (would be nice to avoid the side effect but WHATEVER)
        setUser(extras.getParcelable(Notification.EXTRA_MESSAGING_PERSON, android.app.Person.class));

        final Person user = extras.getParcelable(Notification.EXTRA_MESSAGING_PERSON, Person.class);
        // Append remote input history to newMessages (again, side effect is lame but WHATEVS)
        RemoteInputHistoryItem[] history = (RemoteInputHistoryItem[])
                extras.getParcelableArray(Notification.EXTRA_REMOTE_INPUT_HISTORY_ITEMS, android.app.RemoteInputHistoryItem.class);
@@ -406,11 +405,18 @@ public class ConversationLayout extends FrameLayout

        boolean showSpinner =
                extras.getBoolean(Notification.EXTRA_SHOW_REMOTE_INPUT_SPINNER, false);
        // bind it, baby
        bind(newMessages, newHistoricMessages, showSpinner);

        int unreadCount = extras.getInt(Notification.EXTRA_CONVERSATION_UNREAD_MESSAGE_COUNT);
        setUnreadCount(unreadCount);

        // convert MessagingStyle.Message to MessagingMessage, re-using ones from a previous binding
        // if they exist
        final List<MessagingMessage> newMessagingMessages =
                createMessages(newMessages, false /* isHistoric */);
        final List<MessagingMessage> newHistoricMessagingMessages =
                createMessages(newHistoricMessages, true /* isHistoric */);
        // bind it, baby
        bindViews(user, showSpinner, unreadCount,
                newMessagingMessages,
                newHistoricMessagingMessages);
    }

    /**
@@ -452,15 +458,17 @@ public class ConversationLayout extends FrameLayout
        }
    }

    private void bind(List<Notification.MessagingStyle.Message> newMessages,
            List<Notification.MessagingStyle.Message> newHistoricMessages,
            boolean showSpinner) {
        // convert MessagingStyle.Message to MessagingMessage, re-using ones from a previous binding
        // if they exist
        List<MessagingMessage> historicMessages = createMessages(newHistoricMessages,
                true /* isHistoric */);
        List<MessagingMessage> messages = createMessages(newMessages, false /* isHistoric */);

    private void bindViews(Person user,
            boolean showSpinner, int unreadCount, List<MessagingMessage> newMessagingMessages,
            List<MessagingMessage> newHistoricMessagingMessages) {
        setUser(user);
        setUnreadCount(unreadCount);
        bind(showSpinner, newMessagingMessages, newHistoricMessagingMessages);
    }

    private void bind(boolean showSpinner, List<MessagingMessage> messages,
            List<MessagingMessage> historicMessages) {
        // Copy our groups, before they get clobbered
        ArrayList<MessagingGroup> oldGroups = new ArrayList<>(mGroups);

+16 −8
Original line number Diff line number Diff line
@@ -172,9 +172,16 @@ public class MessagingLayout extends FrameLayout
        RemoteInputHistoryItem[] history = (RemoteInputHistoryItem[])
                extras.getParcelableArray(Notification.EXTRA_REMOTE_INPUT_HISTORY_ITEMS, android.app.RemoteInputHistoryItem.class);
        addRemoteInputHistoryToMessages(newMessages, history);

        final Person user = extras.getParcelable(Notification.EXTRA_MESSAGING_PERSON, Person.class);
        boolean showSpinner =
                extras.getBoolean(Notification.EXTRA_SHOW_REMOTE_INPUT_SPINNER, false);
        bind(newMessages, newHistoricMessages, showSpinner);

        final List<MessagingMessage> historicMessagingMessages = createMessages(newHistoricMessages,
                true /* isHistoric */);
        final List<MessagingMessage> newMessagingMessages =
                createMessages(newMessages, false /* isHistoric */);
        bindViews(user, showSpinner, historicMessagingMessages, newMessagingMessages);
    }

    /**
@@ -211,14 +218,15 @@ public class MessagingLayout extends FrameLayout
        }
    }

    private void bind(List<Notification.MessagingStyle.Message> newMessages,
            List<Notification.MessagingStyle.Message> newHistoricMessages,
            boolean showSpinner) {

        List<MessagingMessage> historicMessages = createMessages(newHistoricMessages,
                true /* isHistoric */);
        List<MessagingMessage> messages = createMessages(newMessages, false /* isHistoric */);
    private void bindViews(Person user, boolean showSpinner,
            List<MessagingMessage> historicMessagingMessages,
            List<MessagingMessage> newMessagingMessages) {
        setUser(user);
        bind(showSpinner, historicMessagingMessages, newMessagingMessages);
    }

    private void bind(boolean showSpinner, List<MessagingMessage> historicMessages,
            List<MessagingMessage> messages) {
        ArrayList<MessagingGroup> oldGroups = new ArrayList<>(mGroups);
        addMessagesToGroups(historicMessages, messages, showSpinner);