Separate string resources for edited message footer.

This commit is contained in:
Nicholas Tinsley
2023-12-19 14:12:53 -05:00
committed by Clark Chen
parent e7c8ecbd31
commit 5b9ef5b6b6
3 changed files with 24 additions and 15 deletions

View File

@@ -29,6 +29,7 @@ import org.signal.core.util.concurrent.SignalExecutors;
import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.animation.AnimationCompleteListener;
import org.thoughtcrime.securesms.conversation.ConversationItemDisplayMode;
import org.thoughtcrime.securesms.conversation.v2.computed.FormattedDate;
import org.thoughtcrime.securesms.database.SignalDatabase;
import org.thoughtcrime.securesms.database.model.MmsMessageRecord;
import org.thoughtcrime.securesms.database.model.MessageRecord;
@@ -325,15 +326,18 @@ public class ConversationItemFooter extends ConstraintLayout {
timestamp = messageRecord.getDateSent();
}
}
String date = DateUtils.getDatelessRelativeTimeSpanString(getContext(), locale, timestamp);
FormattedDate date = DateUtils.getDatelessRelativeTimeSpanFormattedDate(getContext(), locale, timestamp);
String dateLabel = date.getValue();
if (displayMode != ConversationItemDisplayMode.Detailed.INSTANCE && messageRecord.isEditMessage() && messageRecord.isLatestRevision()) {
if (DateUtils.isNow(timestamp)) {
date = getContext().getString(R.string.ConversationItem_edited_now_timestamp_footer);
if (date.isNow()) {
dateLabel = getContext().getString(R.string.ConversationItem_edited_now_timestamp_footer);
} else if (date.isRelative()) {
dateLabel = getContext().getString(R.string.ConversationItem_edited_relative_timestamp_footer, date.getValue());
} else {
date = getContext().getString(R.string.ConversationItem_edited_timestamp_footer, date);
dateLabel = getContext().getString(R.string.ConversationItem_edited_absolute_timestamp_footer, date.getValue());
}
}
dateView.setText(date);
dateView.setText(dateLabel);
}
}

View File

@@ -35,6 +35,7 @@ import org.thoughtcrime.securesms.conversation.colors.ChatColors
import org.thoughtcrime.securesms.conversation.mutiselect.Multiselect
import org.thoughtcrime.securesms.conversation.mutiselect.MultiselectPart
import org.thoughtcrime.securesms.conversation.mutiselect.Multiselectable
import org.thoughtcrime.securesms.conversation.v2.computed.FormattedDate
import org.thoughtcrime.securesms.conversation.v2.data.ConversationMessageElement
import org.thoughtcrime.securesms.database.model.MessageRecord
import org.thoughtcrime.securesms.database.model.MmsMessageRecord
@@ -100,7 +101,7 @@ open class V2ConversationItemTextOnlyViewHolder<Model : MappingModel<Model>>(
override val badgeImageView: View? = binding.senderBadge
private var reactionMeasureListener: ReactionMeasureListener = ReactionMeasureListener()
private var dateString: String = ""
private var formattedDate: FormattedDate? = null
private val bodyBubbleDrawable = ChatColorsDrawable()
private val footerDrawable = ChatColorsDrawable()
@@ -197,7 +198,7 @@ open class V2ConversationItemTextOnlyViewHolder<Model : MappingModel<Model>>(
)
if (ConversationAdapterBridge.PAYLOAD_TIMESTAMP in payload) {
if (conversationMessage.computedProperties.formattedDate.value != dateString) {
if (conversationMessage.computedProperties.formattedDate != formattedDate) {
presentDate()
}
hasProcessedSupportedPayload = true
@@ -616,7 +617,7 @@ open class V2ConversationItemTextOnlyViewHolder<Model : MappingModel<Model>>(
return
}
dateString = conversationMessage.computedProperties.formattedDate.value
formattedDate = conversationMessage.computedProperties.formattedDate
binding.footerDate.setOnClickListener(null)
binding.footerDate.visible = true
@@ -638,12 +639,14 @@ open class V2ConversationItemTextOnlyViewHolder<Model : MappingModel<Model>>(
} else if (record.isScheduled()) {
binding.footerDate.text = conversationMessage.computedProperties.formattedDate.value
} else {
var date = dateString
var dateLabel = conversationMessage.computedProperties.formattedDate.value
if (conversationContext.displayMode != ConversationItemDisplayMode.Detailed && record is MmsMessageRecord && record.isEditMessage()) {
date = if (conversationMessage.computedProperties.formattedDate.isNow) {
dateLabel = if (conversationMessage.computedProperties.formattedDate.isNow) {
getContext().getString(R.string.ConversationItem_edited_now_timestamp_footer)
} else if (conversationMessage.computedProperties.formattedDate.isRelative) {
getContext().getString(R.string.ConversationItem_edited_relative_timestamp_footer, dateLabel)
} else {
getContext().getString(R.string.ConversationItem_edited_timestamp_footer, date)
getContext().getString(R.string.ConversationItem_edited_absolute_timestamp_footer, dateLabel)
}
binding.footerDate.setOnClickListener {
@@ -651,7 +654,7 @@ open class V2ConversationItemTextOnlyViewHolder<Model : MappingModel<Model>>(
}
}
binding.footerDate.text = date
binding.footerDate.text = dateLabel
}
}

View File

@@ -323,10 +323,12 @@
<string name="ConversationItem_cant_download_image_you_will_need_to_send_it_again">Can\'t download image. You will need to send it again.</string>
<!-- Dialog error message shown when user can\'t download a their own video message via a linked device due to a permanent failure (e.g., unable to decrypt) -->
<string name="ConversationItem_cant_download_video_you_will_need_to_send_it_again">Can\'t download video. You will need to send it again.</string>
<!-- Display as the timestamp footer in a message bubble in a conversation when a message has been edited. The timestamp represents a message that has been edited extremely recently. -->
<!-- Display as the timestamp footer in a message bubble in a conversation when a message has been edited. The timestamp represents a message that has been edited within the last minute. -->
<string name="ConversationItem_edited_now_timestamp_footer">Edited\u2000Now</string>
<!-- Display as the timestamp footer in a message bubble in a conversation when a message has been edited. The timestamp will go from \'11m\' to \'edited 11m\' -->
<string name="ConversationItem_edited_timestamp_footer">Edited\u2000%1$s</string>
<!-- Display as the timestamp footer in a message bubble in a conversation when a message has been edited. This is displayed when the edit has occurred between 1-59 minutes ago. -->
<string name="ConversationItem_edited_relative_timestamp_footer">Edited\u2000%1$s</string>
<!-- Display as the timestamp footer in a message bubble in a conversation when a message has been edited. This is displayed when the edit occurred at least 1 hour ago. -->
<string name="ConversationItem_edited_absolute_timestamp_footer">Edited\u2000%1$s</string>
<!-- Displayed if the link preview in the conversation item is for a call link call -->
<string name="ConversationItem__join_call">Join call</string>