diff --git a/changelog.d/3983.bugfix b/changelog.d/3983.bugfix new file mode 100644 index 0000000000..4b3fdc454d --- /dev/null +++ b/changelog.d/3983.bugfix @@ -0,0 +1 @@ +Voice Message - Cannot render voice message if the waveform data is corrupted \ No newline at end of file diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/model/message/AudioWaveformInfo.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/model/message/AudioWaveformInfo.kt index d576f1057a..aa05eb7189 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/model/message/AudioWaveformInfo.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/model/message/AudioWaveformInfo.kt @@ -32,5 +32,5 @@ data class AudioWaveformInfo( * List of integers between zero and 1024, inclusive. */ @Json(name = "waveform") - val waveform: List? = null + val waveform: List? = null ) diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/send/DefaultSendService.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/send/DefaultSendService.kt index a64b903947..6dbb71e096 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/send/DefaultSendService.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/send/DefaultSendService.kt @@ -185,7 +185,7 @@ internal class DefaultSendService @AssistedInject constructor( name = messageContent.body, queryUri = Uri.parse(messageContent.url), type = ContentAttachmentData.Type.AUDIO, - waveform = messageContent.audioWaveformInfo?.waveform + waveform = messageContent.audioWaveformInfo?.waveform?.filterNotNull() ) localEchoRepository.updateSendState(localEcho.eventId, roomId, SendState.UNSENT) internalSendMedia(listOf(localEcho.root), attachmentData, true) diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/factory/MessageItemFactory.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/factory/MessageItemFactory.kt index e67fa7cca0..287cd014e9 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/factory/MessageItemFactory.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/factory/MessageItemFactory.kt @@ -622,11 +622,13 @@ class MessageItemFactory @Inject constructor( .highlighted(highlight) } - private fun List?.toFft(): List? { - return this?.map { - // Value comes from AudioRecordView.maxReportableAmp, and 1024 is the max value in the Matrix spec - it * 22760 / 1024 - } + private fun List?.toFft(): List? { + return this + ?.filterNotNull() + ?.map { + // Value comes from AudioRecordView.maxReportableAmp, and 1024 is the max value in the Matrix spec + it * 22760 / 1024 + } } companion object {