feat: improve multi-message copy formatting (#671)
* feat: improve multi-message copy formatting * use date-first format and preserve blank line separator Refs: #600
This commit is contained in:
parent
5adf13bc32
commit
fffe72b367
2 changed files with 16 additions and 4 deletions
|
|
@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||
|
||||
### Changed
|
||||
- Made "Add number to contact" option visible for alphanumeric senders ([#232])
|
||||
- Improved multi-message copy formatting with timestamps and sender names
|
||||
|
||||
### Fixed
|
||||
- Fixed missing notifications in some cases ([#159])
|
||||
|
|
|
|||
|
|
@ -38,6 +38,7 @@ import org.fossify.commons.extensions.formatDateOrTime
|
|||
import org.fossify.commons.extensions.getContrastColor
|
||||
import org.fossify.commons.extensions.getProperPrimaryColor
|
||||
import org.fossify.commons.extensions.getTextSize
|
||||
import org.fossify.commons.extensions.getTimeFormat
|
||||
import org.fossify.commons.extensions.shareTextIntent
|
||||
import org.fossify.commons.extensions.showErrorToast
|
||||
import org.fossify.commons.extensions.usableScreenSize
|
||||
|
|
@ -85,6 +86,7 @@ import org.fossify.messages.models.ThreadItem.ThreadDateTime
|
|||
import org.fossify.messages.models.ThreadItem.ThreadError
|
||||
import org.fossify.messages.models.ThreadItem.ThreadSending
|
||||
import org.fossify.messages.models.ThreadItem.ThreadSent
|
||||
import org.joda.time.DateTime
|
||||
|
||||
class ThreadAdapter(
|
||||
activity: SimpleActivity,
|
||||
|
|
@ -220,10 +222,19 @@ class ThreadAdapter(
|
|||
|
||||
private fun copyToClipboard() {
|
||||
val selectedMessages = getSelectedItems().filterIsInstance<Message>()
|
||||
val textToCopy = selectedMessages
|
||||
.mapNotNull { message -> message.body.takeIf { it.isNotEmpty() } }
|
||||
.joinToString("\n\n")
|
||||
|
||||
if (selectedMessages.isEmpty()) return
|
||||
|
||||
val textToCopy = if (selectedMessages.size == 1) {
|
||||
selectedMessages.first().body
|
||||
} else {
|
||||
selectedMessages.filter { it.body.isNotEmpty() }.joinToString("\n\n") { message ->
|
||||
val format = "${activity.config.dateFormat}, ${activity.getTimeFormat()}"
|
||||
val dateTime = DateTime(message.millis()).toString(format)
|
||||
val sender = if (message.isReceivedMessage()) message.senderName else activity.getString(R.string.me)
|
||||
"[$dateTime] $sender: ${message.body}"
|
||||
}
|
||||
}
|
||||
|
||||
if (textToCopy.isNotEmpty()) {
|
||||
activity.copyToClipboard(textToCopy)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue