feat: allow copying multiple messages (#601)

Refs: https://github.com/FossifyOrg/Messages/issues/600
This commit is contained in:
Naveen Singh 2025-11-22 22:21:34 +05:30 committed by GitHub
parent 7dff7d62b8
commit 30ecbbe3cb
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 14 additions and 5 deletions

View file

@ -115,14 +115,14 @@ class ThreadAdapter(
override fun prepareActionMode(menu: Menu) {
val isOneItemSelected = isOneItemSelected()
val selectedItem = getSelectedItems().firstOrNull() as? Message
val hasText = selectedItem?.body != null && selectedItem.body != ""
val selectedMessages = getSelectedItems().filterIsInstance<Message>()
val hasText = selectedMessages.any { it.body.isNotEmpty() }
val showSaveAs = getSelectedItems().all {
it is Message && (it.attachment?.attachments?.size ?: 0) > 0
} && getSelectedAttachments().isNotEmpty()
menu.apply {
findItem(R.id.cab_copy_to_clipboard).isVisible = isOneItemSelected && hasText
findItem(R.id.cab_copy_to_clipboard).isVisible = hasText
findItem(R.id.cab_save_as).isVisible = showSaveAs
findItem(R.id.cab_share).isVisible = isOneItemSelected && hasText
findItem(R.id.cab_forward_message).isVisible = isOneItemSelected
@ -219,8 +219,14 @@ class ThreadAdapter(
}
private fun copyToClipboard() {
val firstItem = getSelectedItems().firstOrNull() as? Message ?: return
activity.copyToClipboard(firstItem.body)
val selectedMessages = getSelectedItems().filterIsInstance<Message>()
val textToCopy = selectedMessages
.mapNotNull { message -> message.body.takeIf { it.isNotEmpty() } }
.joinToString("\n\n")
if (textToCopy.isNotEmpty()) {
activity.copyToClipboard(textToCopy)
}
}
private fun getSelectedAttachments(): List<Attachment> {