diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/menu/ActionItem.kt b/app/src/main/java/org/thoughtcrime/securesms/components/menu/ActionItem.kt index d0b101a9f1..16b0dc914f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/menu/ActionItem.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/menu/ActionItem.kt @@ -9,5 +9,6 @@ data class ActionItem @JvmOverloads constructor( @AttrRes val iconRes: Int, val title: CharSequence, val action: Runnable, - val contentDescription: String? = null + val contentDescription: String? = null, + val subtitle: String? = null ) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/menu/ContextMenuList.kt b/app/src/main/java/org/thoughtcrime/securesms/components/menu/ContextMenuList.kt index c86b40dfa5..7cedffb044 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/menu/ContextMenuList.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/menu/ContextMenuList.kt @@ -5,6 +5,7 @@ import android.view.View import android.widget.ImageView import android.widget.TextView import androidx.core.content.ContextCompat +import androidx.core.view.isVisible import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import network.loki.messenger.R @@ -70,6 +71,7 @@ class ContextMenuList(recyclerView: RecyclerView, onItemClick: () -> Unit) { ) : MappingViewHolder(itemView) { val icon: ImageView = itemView.findViewById(R.id.context_menu_item_icon) val title: TextView = itemView.findViewById(R.id.context_menu_item_title) + val subtitle: TextView = itemView.findViewById(R.id.context_menu_item_subtitle) override fun bind(model: DisplayItem) { if (model.item.iconRes > 0) { @@ -79,6 +81,8 @@ class ContextMenuList(recyclerView: RecyclerView, onItemClick: () -> Unit) { } itemView.contentDescription = model.item.contentDescription title.text = model.item.title + subtitle.text = model.item.subtitle + subtitle.isVisible = model.item.subtitle != null itemView.setOnClickListener { model.item.action.run() onItemClick() diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationReactionOverlay.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationReactionOverlay.kt index 9665fd0738..ecb5217fed 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationReactionOverlay.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationReactionOverlay.kt @@ -37,6 +37,7 @@ import org.thoughtcrime.securesms.dependencies.DatabaseComponent.Companion.get import org.thoughtcrime.securesms.util.AnimationCompleteListener import org.thoughtcrime.securesms.util.DateUtils import java.util.Locale +import kotlin.time.Duration.Companion.milliseconds class ConversationReactionOverlay : FrameLayout { private val emojiViewGlobalRect = Rect() @@ -518,7 +519,13 @@ class ConversationReactionOverlay : FrameLayout { } // Delete message if (userCanDeleteSelectedItems(context, message, openGroup, userPublicKey, blindedPublicKey)) { - items += ActionItem(R.attr.menu_trash_icon, context.resources.getString(R.string.delete), { handleActionItemClicked(Action.DELETE) }, context.resources.getString(R.string.AccessibilityId_delete_message)) + items += ActionItem( + R.attr.menu_trash_icon, + context.resources.getString(R.string.delete), + { handleActionItemClicked(Action.DELETE) }, + context.resources.getString(R.string.AccessibilityId_delete_message), + message.takeIf { it.expireStarted > 0 }?.run { expiresIn.milliseconds }?.let { "Auto-deletes in $it" } + ) } // Ban user if (userCanBanSelectedUsers(context, message, openGroup, userPublicKey, blindedPublicKey)) { diff --git a/app/src/main/res/layout/context_menu_item.xml b/app/src/main/res/layout/context_menu_item.xml index 04354f5b10..12a049162d 100644 --- a/app/src/main/res/layout/context_menu_item.xml +++ b/app/src/main/res/layout/context_menu_item.xml @@ -18,13 +18,28 @@ android:layout_height="24dp" tools:src="@drawable/ic_message"/> - + android:layout_height="wrap_content" + android:orientation="vertical"> + + + + + + \ No newline at end of file