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;
}