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 a928994ac5..39fc46c392 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 e3580f1def..eded06a4ce 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,7 +20,9 @@ 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 org.jetbrains.annotations.NotNull; import java.util.HashMap; import java.util.Objects; @@ -90,6 +93,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 +176,9 @@ public ProgressBar getPreviewContactProgressBar() { @NonNull @Override public EmojiTextView getMessageCaption() { return binding.messageCaption; } + + @Override + public @NotNull 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 4321b7b6d4..b568c2c1b8 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 @@ -113,11 +113,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 6c58809661..df661a2d1a 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 @@ -172,31 +172,14 @@ app:layout_alignSelf="flex_start" app:layout_flexGrow="1" app:layout_wrapBefore="true" - 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 4839c7d504..b018730bf9 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 @@ -149,27 +149,12 @@ app:layout_wrapBefore="true" tools:text="A simple message" /> - - + + + + + + + +