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

Commit 8362a52c authored by Steve Elliott's avatar Steve Elliott
Browse files

Make smart reply insertion logic more robust

Specifically, this removes the assumptions that the smart reply view
container should only container one child, and that the smart replies
will be the first view.

Bug: 174575121
Test: manual, atest
Change-Id: If2b98f6faac3e7cc4ac63bd114f25df1f604aa5e
parent 708d39e5
Loading
Loading
Loading
Loading
+15 −7
Original line number Diff line number Diff line
@@ -1481,18 +1481,26 @@ public class NotificationContentView extends FrameLayout {
            return null;
        }

        SmartReplyView smartReplyView = null;
        if (smartReplyContainer.getChildCount() == 1
                && smartReplyContainer.getChildAt(0) instanceof SmartReplyView) {
        // Search for an existing SmartReplyView
        int index = 0;
        final int childCount = smartReplyContainer.getChildCount();
        for (; index < childCount; index++) {
            View child = smartReplyContainer.getChildAt(index);
            if (child.getId() == R.id.smart_reply_view && child instanceof SmartReplyView) {
                break;
            }
        }

        if (index < childCount) {
            // If we already have a SmartReplyView - replace it with the newly inflated one. The
            // newly inflated one is connected to the new inflated smart reply/action buttons.
            smartReplyContainer.removeAllViews();
            smartReplyContainer.removeViewAt(index);
        }
        if (smartReplyContainer.getChildCount() == 0
                && inflatedSmartReplyViewHolder != null
        SmartReplyView smartReplyView = null;
        if (inflatedSmartReplyViewHolder != null
                && inflatedSmartReplyViewHolder.getSmartReplyView() != null) {
            smartReplyView = inflatedSmartReplyViewHolder.getSmartReplyView();
            smartReplyContainer.addView(smartReplyView);
            smartReplyContainer.addView(smartReplyView, index);
        }
        if (smartReplyView != null) {
            smartReplyView.resetSmartSuggestions(smartReplyContainer);