diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/mutiselect/MultiselectItemDecoration.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/mutiselect/MultiselectItemDecoration.kt index 360a6f2257..7aa761cff8 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/mutiselect/MultiselectItemDecoration.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/mutiselect/MultiselectItemDecoration.kt @@ -36,6 +36,7 @@ import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.conversation.ConversationAdapterBridge import org.thoughtcrime.securesms.conversation.ConversationAdapterBridge.PulseRequest import org.thoughtcrime.securesms.conversation.v2.items.InteractiveConversationElement +import org.thoughtcrime.securesms.database.model.InMemoryMessageRecord import org.thoughtcrime.securesms.util.ThemeUtil import org.thoughtcrime.securesms.util.ViewUtil import org.thoughtcrime.securesms.wallpaper.ChatWallpaper @@ -566,7 +567,7 @@ class MultiselectItemDecoration( } private fun RecyclerView.getMultiselectableChildren(): Sequence { - return children.map { getChildViewHolder(it) }.filterIsInstance() + return children.map { getChildViewHolder(it) }.filterIsInstance().filter { child -> child.conversationMessage.messageRecord !is InMemoryMessageRecord } } private fun RecyclerView.getInteractableChildren(): Sequence { @@ -576,6 +577,8 @@ class MultiselectItemDecoration( private fun resolveMultiselectable(parent: RecyclerView, child: View): Multiselectable? { val multiselectable = parent.getChildViewHolder(child) as? Multiselectable + if (multiselectable?.conversationMessage?.messageRecord?.isInMemoryMessageRecord == true) { return null } + return multiselectable ?: child as? Multiselectable } diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationAdapterV2.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationAdapterV2.kt index bb59abc679..fa2cc6ea8d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationAdapterV2.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationAdapterV2.kt @@ -306,6 +306,8 @@ class ConversationAdapterV2( } fun toggleSelection(multiselectPart: MultiselectPart) { + if (multiselectPart.getMessageRecord().isInMemoryMessageRecord) { return } + if (multiselectPart in _selected) { _selected.remove(multiselectPart) } else { diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt index 65c454f632..a59553f135 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt @@ -3220,7 +3220,9 @@ class ConversationFragment : override fun onItemLongClick(itemView: View, item: MultiselectPart) { Log.d(TAG, "onItemLongClick") - if (actionMode != null) return + if (actionMode != null) { return } + + if (item.getMessageRecord().isInMemoryMessageRecord) { return } val messageRecord = item.getMessageRecord() val recipient = viewModel.recipientSnapshot ?: return