From 34dda1b568abb687c6cbfe690bb13800f65a03c9 Mon Sep 17 00:00:00 2001 From: David Langley Date: Fri, 27 Oct 2023 13:06:33 +0100 Subject: [PATCH] Fix naming and waveform previews --- .../composer/VoiceMessageComposerStateProvider.kt | 2 +- .../android/libraries/textcomposer/TextComposer.kt | 2 +- .../textcomposer/components/LiveWaveformView.kt | 14 ++++++++------ .../components/VoiceMessageRecording.kt | 2 +- 4 files changed, 11 insertions(+), 9 deletions(-) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/voicemessages/composer/VoiceMessageComposerStateProvider.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/voicemessages/composer/VoiceMessageComposerStateProvider.kt index f7e3263287..150381461b 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/voicemessages/composer/VoiceMessageComposerStateProvider.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/voicemessages/composer/VoiceMessageComposerStateProvider.kt @@ -37,6 +37,6 @@ internal fun aVoiceMessageComposerState( eventSink = {}, ) -internal var aWaveformLevels = List(100) { it.toFloat() / 200 }.toPersistentList() +internal var aWaveformLevels = List(100) { it.toFloat() / 100 }.toPersistentList() diff --git a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/TextComposer.kt b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/TextComposer.kt index fca12fcf48..d601629baa 100644 --- a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/TextComposer.kt +++ b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/TextComposer.kt @@ -817,7 +817,7 @@ internal fun TextComposerVoicePreview() = ElementPreview { enableVoiceMessages = true, ) PreviewColumn(items = persistentListOf({ - VoicePreview(voiceMessageState = VoiceMessageState.Recording(61.seconds, List(100) { it.toFloat() / 200 }.toPersistentList())) + VoicePreview(voiceMessageState = VoiceMessageState.Recording(61.seconds, List(100) { it.toFloat() / 100 }.toPersistentList())) }, { VoicePreview(voiceMessageState = VoiceMessageState.Preview(isPlaying = false)) }, { diff --git a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/LiveWaveformView.kt b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/LiveWaveformView.kt index 0d083fe3e2..d92851c378 100644 --- a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/LiveWaveformView.kt +++ b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/LiveWaveformView.kt @@ -58,27 +58,29 @@ fun LiveWaveformView( ) { var canvasSize by remember { mutableStateOf(DpSize(0.dp, 0.dp)) } + var parentWidth by remember { mutableIntStateOf(0) } + val waveformWidth by remember(levels, lineWidth, linePadding) { derivedStateOf { levels.size * (lineWidth.value + linePadding.value) } } - var width by remember { mutableIntStateOf(0) } + Box(contentAlignment = Alignment.CenterEnd, modifier = modifier .fillMaxWidth() .height(waveFormHeight) - .onSizeChanged { width = it.width } + .onSizeChanged { parentWidth = it.width } ) { Canvas( modifier = Modifier - .width(canvasSize.width) + .width(Dp(waveformWidth)) .graphicsLayer(alpha = DEFAULT_GRAPHICS_LAYER_ALPHA) .then(modifier) ) { - canvasSize = DpSize(Dp(min(waveformWidth, width.toFloat())), size.height.toDp()) - val countThatFitsWidth = (width.toFloat() / (lineWidth.toPx() + linePadding.toPx())).toInt() + canvasSize = DpSize(Dp(min(waveformWidth, parentWidth.toFloat())), size.height.toDp()) + val countThatFitsWidth = (parentWidth.toFloat() / (lineWidth.toPx() + linePadding.toPx())).toInt() drawWaveform( waveformData = levels.takeLast(countThatFitsWidth).toPersistentList(), canvasSize = canvasSize, @@ -96,7 +98,7 @@ internal fun LiveWaveformViewPreview() = ElementPreview { Column { LiveWaveformView( - levels = List(100) { it.toFloat() / 200 }.toPersistentList(), + levels = List(100) { it.toFloat() / 100 }.toPersistentList(), modifier = Modifier.height(34.dp), ) LiveWaveformView( diff --git a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/VoiceMessageRecording.kt b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/VoiceMessageRecording.kt index 038864d4da..6930441e4b 100644 --- a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/VoiceMessageRecording.kt +++ b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/VoiceMessageRecording.kt @@ -92,5 +92,5 @@ private fun RedRecordingDot( @PreviewsDayNight @Composable internal fun VoiceMessageRecordingPreview() = ElementPreview { - VoiceMessageRecording(List(100) { it.toFloat() / 200 }.toPersistentList(), 0.seconds) + VoiceMessageRecording(List(100) { it.toFloat() / 100 }.toPersistentList(), 0.seconds) }