diff --git a/app/src/main/java/com/nextcloud/talk/adapters/messages/IncomingPreviewMessageViewHolder.java b/app/src/main/java/com/nextcloud/talk/adapters/messages/IncomingPreviewMessageViewHolder.java index 00fe1e6669..248c4c83a2 100644 --- a/app/src/main/java/com/nextcloud/talk/adapters/messages/IncomingPreviewMessageViewHolder.java +++ b/app/src/main/java/com/nextcloud/talk/adapters/messages/IncomingPreviewMessageViewHolder.java @@ -90,6 +90,9 @@ public void onBind(@NonNull ChatMessage message) { binding.messageTime.setTextColor(ContextCompat.getColor(binding.messageText.getContext(), R.color.no_emphasis_text)); + binding.messageEditIndicator.setTextColor(ContextCompat.getColor(binding.messageText.getContext(), + R.color.no_emphasis_text)); + if(!message.isThread()) { binding.threadTitleWrapperContainer.setVisibility(View.GONE); } else { @@ -97,6 +100,13 @@ public void onBind(@NonNull ChatMessage message) { } } + @NonNull + @Override + public android.widget.TextView getMessageEditIndicator() { + return binding.messageEditIndicator; + } + + @NonNull @Override public EmojiTextView getMessageText() { diff --git a/app/src/main/java/com/nextcloud/talk/adapters/messages/OutcomingPreviewMessageViewHolder.java b/app/src/main/java/com/nextcloud/talk/adapters/messages/OutcomingPreviewMessageViewHolder.java index fa98e6685c..204957abb8 100644 --- a/app/src/main/java/com/nextcloud/talk/adapters/messages/OutcomingPreviewMessageViewHolder.java +++ b/app/src/main/java/com/nextcloud/talk/adapters/messages/OutcomingPreviewMessageViewHolder.java @@ -12,6 +12,7 @@ import android.view.View; import android.widget.ImageView; import android.widget.ProgressBar; +import android.widget.TextView; import com.google.android.material.card.MaterialCardView; import com.nextcloud.talk.R; @@ -19,6 +20,7 @@ import com.nextcloud.talk.databinding.ItemThreadTitleBinding; import com.nextcloud.talk.databinding.ReactionsInsideMessageBinding; import com.nextcloud.talk.chat.data.model.ChatMessage; +import com.nextcloud.talk.models.json.chat.ReadStatus; import com.nextcloud.talk.utils.TextMatchers; import java.util.HashMap; @@ -90,6 +92,33 @@ public void onBind(@NonNull ChatMessage message) { binding.messageTime.setTextColor(ContextCompat.getColor(binding.messageText.getContext(), R.color.no_emphasis_text)); + binding.messageEditIndicator.setTextColor(ContextCompat.getColor(binding.messageText.getContext(), + R.color.no_emphasis_text)); + + binding.checkMark.setVisibility(View.GONE); + Integer readStatusDrawableInt = null; + String readStatusContentDescriptionString = null; + if (message.getReadStatus() == ReadStatus.READ) { + readStatusDrawableInt = R.drawable.ic_check_all; + readStatusContentDescriptionString = + binding.checkMark.getContext().getString(R.string.nc_message_read); + } else if (message.getReadStatus() == ReadStatus.SENT) { + readStatusDrawableInt = R.drawable.ic_check; + readStatusContentDescriptionString = + binding.checkMark.getContext().getString(R.string.nc_message_sent); + } + + if (readStatusDrawableInt != null) { + binding.checkMark.setVisibility(View.VISIBLE); + binding.checkMark.setImageDrawable(ContextCompat.getDrawable(binding.checkMark.getContext(), + readStatusDrawableInt)); + if (viewThemeUtils != null) { + viewThemeUtils.talk.themeMessageCheckMark(binding.checkMark); + } + } + binding.checkMark.setContentDescription(readStatusContentDescriptionString); + + if(!message.isThread()) { binding.threadTitleWrapperContainer.setVisibility(View.GONE); } else { @@ -146,4 +175,10 @@ public ProgressBar getPreviewContactProgressBar() { @NonNull @Override public EmojiTextView getMessageCaption() { return binding.messageCaption; } + + @NonNull + @Override + public TextView getMessageEditIndicator() { + return binding.messageEditIndicator; + } } diff --git a/app/src/main/java/com/nextcloud/talk/adapters/messages/PreviewMessageViewHolder.kt b/app/src/main/java/com/nextcloud/talk/adapters/messages/PreviewMessageViewHolder.kt index 9449526bd8..f4e56892cf 100644 --- a/app/src/main/java/com/nextcloud/talk/adapters/messages/PreviewMessageViewHolder.kt +++ b/app/src/main/java/com/nextcloud/talk/adapters/messages/PreviewMessageViewHolder.kt @@ -19,6 +19,7 @@ import android.util.Log import android.view.View import android.widget.ImageView import android.widget.ProgressBar +import android.widget.TextView import androidx.core.content.ContextCompat import androidx.core.net.toUri import androidx.emoji2.widget.EmojiTextView @@ -99,7 +100,13 @@ abstract class PreviewMessageViewHolder(itemView: View?, payload: Any?) : super.onBind(message) image.minimumHeight = DisplayUtils.convertDpToPixel(MIN_IMAGE_HEIGHT, context!!).toInt() - time.text = dateUtils.getLocalTimeStringFromTimestamp(message.timestamp) + if (message.lastEditTimestamp != 0L && !message.isDeleted) { + time.text = dateUtils.getLocalTimeStringFromTimestamp(message.lastEditTimestamp!!) + messageEditIndicator.visibility = View.VISIBLE + } else { + time.text = dateUtils.getLocalTimeStringFromTimestamp(message.timestamp) + messageEditIndicator.visibility = View.GONE + } viewThemeUtils!!.platform.colorCircularProgressBar(progressBar!!, ColorRole.PRIMARY) clickView = image @@ -342,6 +349,7 @@ abstract class PreviewMessageViewHolder(itemView: View?, payload: Any?) : abstract val previewContactPhoto: ImageView abstract val previewContactName: EmojiTextView abstract val previewContactProgressBar: ProgressBar? + abstract val messageEditIndicator: TextView companion object { private const val TAG = "PreviewMsgViewHolder" diff --git a/app/src/main/java/com/nextcloud/talk/ui/dialog/MessageActionsDialog.kt b/app/src/main/java/com/nextcloud/talk/ui/dialog/MessageActionsDialog.kt index 80a3e6ace9..7f9c07c178 100644 --- a/app/src/main/java/com/nextcloud/talk/ui/dialog/MessageActionsDialog.kt +++ b/app/src/main/java/com/nextcloud/talk/ui/dialog/MessageActionsDialog.kt @@ -116,11 +116,13 @@ class MessageActionsDialog( ) && !isOlderThanTwentyFourHours + private val messageHasCaptions = messageHasFileAttachment && message.message != "{file}" && !message.isDeleted + private var messageIsEditable = hasSpreedFeatureCapability( spreedCapabilities, SpreedFeatures.EDIT_MESSAGES ) && - messageHasRegularText && + (messageHasRegularText || messageHasCaptions) && !isOlderThanTwentyFourHours && isUserAllowedToEdit diff --git a/app/src/main/res/layout/item_custom_incoming_preview_message.xml b/app/src/main/res/layout/item_custom_incoming_preview_message.xml index 6b22a8bd85..82baab9af0 100644 --- a/app/src/main/res/layout/item_custom_incoming_preview_message.xml +++ b/app/src/main/res/layout/item_custom_incoming_preview_message.xml @@ -187,22 +187,6 @@ tools:ignore="TextContrastCheck" tools:text="A simple message" /> - - + + + + + - + \ No newline at end of file diff --git a/app/src/main/res/layout/item_custom_outcoming_preview_message.xml b/app/src/main/res/layout/item_custom_outcoming_preview_message.xml index f660723814..e847fdf2fa 100644 --- a/app/src/main/res/layout/item_custom_outcoming_preview_message.xml +++ b/app/src/main/res/layout/item_custom_outcoming_preview_message.xml @@ -161,21 +161,6 @@ app:layout_wrapBefore="true" tools:text="A simple message" /> - - + + + + + + - + \ No newline at end of file