Avoid duplicate BigText notification content
This commit is contained in:
@@ -22,15 +22,33 @@ data class NotificationSnapshot(
|
||||
|
||||
object NotificationContents {
|
||||
fun extract(notification: Notification): String? {
|
||||
val parts = linkedSetOf<String>()
|
||||
val extras = notification.extras ?: Bundle.EMPTY
|
||||
messagingContents(extras)?.let { return it }
|
||||
extras.getCharSequence(Notification.EXTRA_TITLE)?.addTo(parts)
|
||||
extras.getCharSequence(Notification.EXTRA_TEXT)?.addTo(parts)
|
||||
extras.getCharSequence(Notification.EXTRA_BIG_TEXT)?.addTo(parts)
|
||||
extras.getCharSequence(Notification.EXTRA_SUB_TEXT)?.addTo(parts)
|
||||
extras.getCharSequence(Notification.EXTRA_SUMMARY_TEXT)?.addTo(parts)
|
||||
extras.getCharSequenceArray(Notification.EXTRA_TEXT_LINES)?.forEach { it?.addTo(parts) }
|
||||
return genericContents(
|
||||
title = extras.getCharSequence(Notification.EXTRA_TITLE),
|
||||
text = extras.getCharSequence(Notification.EXTRA_TEXT),
|
||||
bigText = extras.getCharSequence(Notification.EXTRA_BIG_TEXT),
|
||||
subText = extras.getCharSequence(Notification.EXTRA_SUB_TEXT),
|
||||
summaryText = extras.getCharSequence(Notification.EXTRA_SUMMARY_TEXT),
|
||||
textLines = extras.getCharSequenceArray(Notification.EXTRA_TEXT_LINES).orEmpty().asList(),
|
||||
)
|
||||
}
|
||||
|
||||
/** Uses BigTextStyle's expanded content instead of its alternate collapsed rendering. */
|
||||
internal fun genericContents(
|
||||
title: CharSequence?,
|
||||
text: CharSequence?,
|
||||
bigText: CharSequence?,
|
||||
subText: CharSequence?,
|
||||
summaryText: CharSequence?,
|
||||
textLines: List<CharSequence?>,
|
||||
): String? {
|
||||
val parts = linkedSetOf<String>()
|
||||
title?.addTo(parts)
|
||||
(bigText.takeIf { it.hasText() } ?: text)?.addTo(parts)
|
||||
subText?.addTo(parts)
|
||||
summaryText?.addTo(parts)
|
||||
textLines.forEach { it?.addTo(parts) }
|
||||
return parts.takeIf { it.isNotEmpty() }?.joinToString("\n")
|
||||
}
|
||||
|
||||
@@ -92,5 +110,7 @@ object NotificationContents {
|
||||
toString().trim().takeIf { it.isNotEmpty() }?.let(parts::add)
|
||||
}
|
||||
|
||||
private fun CharSequence?.hasText(): Boolean = !this.isNullOrBlank()
|
||||
|
||||
private const val MAX_IMAGE_DIMENSION = 1600
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user