Update RTT transcript screen.

1. default to show first message
2. fix bug that first timestamp is not full format when it's grouped with previous messages

Bug: 70177426
Test: RttTranscriptAdapterTest
PiperOrigin-RevId: 193542992
Change-Id: Ic7a00f1fad8a9305b6fc1111783d589cc7956d58
diff --git a/java/com/android/dialer/rtt/RttTranscriptActivity.java b/java/com/android/dialer/rtt/RttTranscriptActivity.java
index 2087250..a878520 100644
--- a/java/com/android/dialer/rtt/RttTranscriptActivity.java
+++ b/java/com/android/dialer/rtt/RttTranscriptActivity.java
@@ -61,7 +61,6 @@
 
     RecyclerView recyclerView = findViewById(R.id.rtt_recycler_view);
     LinearLayoutManager layoutManager = new LinearLayoutManager(this);
-    layoutManager.setStackFromEnd(true);
     recyclerView.setLayoutManager(layoutManager);
     recyclerView.setHasFixedSize(true);
     adapter = new RttTranscriptAdapter(this);
diff --git a/java/com/android/dialer/rtt/RttTranscriptAdapter.java b/java/com/android/dialer/rtt/RttTranscriptAdapter.java
index 6e03034..52f9d84 100644
--- a/java/com/android/dialer/rtt/RttTranscriptAdapter.java
+++ b/java/com/android/dialer/rtt/RttTranscriptAdapter.java
@@ -21,6 +21,7 @@
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
+import com.android.dialer.common.LogUtil;
 import com.android.dialer.glidephotomanager.PhotoInfo;
 
 /** Adapter class for holding RTT chat data. */
@@ -30,6 +31,7 @@
 
   private final Context context;
   private RttTranscript rttTranscript;
+  private int firstPositionToShowTimestamp;
 
   RttTranscriptAdapter(Context context) {
     this.context = context;
@@ -65,7 +67,9 @@
       rttChatMessageViewHolder.hideTimestamp();
     } else {
       rttChatMessageViewHolder.showTimestamp(
-          rttTranscriptMessage.getTimestamp(), rttTranscriptMessage.getIsRemote(), i == 0);
+          rttTranscriptMessage.getTimestamp(),
+          rttTranscriptMessage.getIsRemote(),
+          i == firstPositionToShowTimestamp);
     }
   }
 
@@ -78,10 +82,30 @@
   }
 
   void setRttTranscript(RttTranscript rttTranscript) {
+    if (rttTranscript == null) {
+      LogUtil.w("RttTranscriptAdapter.setRttTranscript", "null RttTranscript");
+      return;
+    }
     this.rttTranscript = rttTranscript;
+    firstPositionToShowTimestamp = findFirstPositionToShowTimestamp(rttTranscript);
+
     notifyDataSetChanged();
   }
 
+  /**
+   * Returns first position of message that should show time stamp. This is usually the last one of
+   * first grouped messages.
+   */
+  protected static int findFirstPositionToShowTimestamp(RttTranscript rttTranscript) {
+    int i = 0;
+    while (i + 1 < rttTranscript.getMessagesCount()
+        && rttTranscript.getMessages(i).getIsRemote()
+            == rttTranscript.getMessages(i + 1).getIsRemote()) {
+      i++;
+    }
+    return i;
+  }
+
   void setPhotoInfo(PhotoInfo photoInfo) {
     this.photoInfo = photoInfo;
   }