Fix multiselect to make in memory messages unselectable.

This commit is contained in:
lisa-signal
2025-06-09 09:53:19 -04:00
committed by Greyson Parrelli
parent d20abec813
commit e2c32c1172
3 changed files with 9 additions and 2 deletions

View File

@@ -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<Multiselectable> {
return children.map { getChildViewHolder(it) }.filterIsInstance<Multiselectable>()
return children.map { getChildViewHolder(it) }.filterIsInstance<Multiselectable>().filter { child -> child.conversationMessage.messageRecord !is InMemoryMessageRecord }
}
private fun RecyclerView.getInteractableChildren(): Sequence<InteractiveConversationElement> {
@@ -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
}

View File

@@ -306,6 +306,8 @@ class ConversationAdapterV2(
}
fun toggleSelection(multiselectPart: MultiselectPart) {
if (multiselectPart.getMessageRecord().isInMemoryMessageRecord) { return }
if (multiselectPart in _selected) {
_selected.remove(multiselectPart)
} else {

View File

@@ -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