From 7f853314480cb45c527ddcf92f169128c043107e Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Tue, 22 Sep 2020 18:40:37 +0200 Subject: [PATCH] Add a setting to show timestamp for all messages (#2123) --- CHANGES.md | 1 + .../timeline/helper/MessageInformationDataFactory.kt | 5 +++-- .../home/room/detail/timeline/item/AbsMessageItem.kt | 12 ++++++++++-- .../detail/timeline/item/MessageInformationData.kt | 1 + .../src/main/res/xml/vector_settings_preferences.xml | 3 +-- 5 files changed, 16 insertions(+), 6 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 081877c313..5252a1ef0b 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -7,6 +7,7 @@ Features ✨: Improvements 🙌: - Add "show password" in import Megolm keys dialog - Visually disable call buttons in menu and prohibit calling when permissions are insufficient (#2112) + - Add a setting to show timestamp for all messages (#2123) Bugfix 🐛: - Long message cannot be sent/takes infinite time & blocks other messages #1397 diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/helper/MessageInformationDataFactory.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/helper/MessageInformationDataFactory.kt index e050889dbd..f7a1a18d9f 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/helper/MessageInformationDataFactory.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/helper/MessageInformationDataFactory.kt @@ -21,13 +21,13 @@ package im.vector.app.features.home.room.detail.timeline.helper import im.vector.app.core.date.DateFormatKind import im.vector.app.core.date.VectorDateFormatter import im.vector.app.core.extensions.localDateTime -import im.vector.app.core.resources.ColorProvider import im.vector.app.features.home.room.detail.timeline.item.E2EDecoration import im.vector.app.features.home.room.detail.timeline.item.MessageInformationData import im.vector.app.features.home.room.detail.timeline.item.PollResponseData import im.vector.app.features.home.room.detail.timeline.item.ReactionInfoData import im.vector.app.features.home.room.detail.timeline.item.ReadReceiptData import im.vector.app.features.home.room.detail.timeline.item.ReferencesInfoData +import im.vector.app.features.settings.VectorPreferences import org.matrix.android.sdk.api.extensions.orFalse import org.matrix.android.sdk.api.session.Session import org.matrix.android.sdk.api.session.events.model.EventType @@ -49,7 +49,7 @@ import javax.inject.Inject class MessageInformationDataFactory @Inject constructor(private val session: Session, private val roomSummaryHolder: RoomSummaryHolder, private val dateFormatter: VectorDateFormatter, - private val colorProvider: ColorProvider) { + private val vectorPreferences: VectorPreferences) { fun create(event: TimelineEvent, nextEvent: TimelineEvent?): MessageInformationData { // Non nullability has been tested before @@ -81,6 +81,7 @@ class MessageInformationDataFactory @Inject constructor(private val session: Ses avatarUrl = event.senderInfo.avatarUrl, memberName = event.senderInfo.disambiguatedDisplayName, showInformation = showInformation, + forceShowTimestamp = vectorPreferences.alwaysShowTimeStamps(), orderedReactionList = event.annotations?.reactionsSummary // ?.filter { isSingleEmoji(it.key) } ?.map { diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/AbsMessageItem.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/AbsMessageItem.kt index 7c2a6286b9..3fdd0f6f83 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/AbsMessageItem.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/AbsMessageItem.kt @@ -21,6 +21,8 @@ import android.view.View import android.widget.ImageView import android.widget.TextView import androidx.annotation.IdRes +import androidx.core.view.isInvisible +import androidx.core.view.isVisible import com.airbnb.epoxy.EpoxyAttribute import im.vector.app.R import im.vector.app.core.utils.DebouncedClickListener @@ -69,8 +71,14 @@ abstract class AbsMessageItem : AbsBaseMessageItem holder.avatarImageView.setOnClickListener(null) holder.memberNameView.setOnClickListener(null) holder.avatarImageView.visibility = View.GONE - holder.memberNameView.visibility = View.GONE - holder.timeView.visibility = View.GONE + if (attributes.informationData.forceShowTimestamp) { + holder.memberNameView.isInvisible = true + holder.timeView.isVisible = true + holder.timeView.text = attributes.informationData.time + } else { + holder.memberNameView.isVisible = false + holder.timeView.isVisible = false + } holder.avatarImageView.setOnLongClickListener(null) holder.memberNameView.setOnLongClickListener(null) } diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/MessageInformationData.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/MessageInformationData.kt index b26c9315d4..fd8a9653e6 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/MessageInformationData.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/MessageInformationData.kt @@ -32,6 +32,7 @@ data class MessageInformationData( val avatarUrl: String?, val memberName: CharSequence? = null, val showInformation: Boolean = true, + val forceShowTimestamp: Boolean = false, /*List of reactions (emoji,count,isSelected)*/ val orderedReactionList: List? = null, val pollResponseAggregatedSummary: PollResponseData? = null, diff --git a/vector/src/main/res/xml/vector_settings_preferences.xml b/vector/src/main/res/xml/vector_settings_preferences.xml index ba8ba0d64b..29831f9de4 100644 --- a/vector/src/main/res/xml/vector_settings_preferences.xml +++ b/vector/src/main/res/xml/vector_settings_preferences.xml @@ -56,8 +56,7 @@ + android:title="@string/settings_always_show_timestamps" />