Fix naming and waveform previews

This commit is contained in:
David Langley
2023-10-27 13:06:33 +01:00
parent ad81e2898c
commit 34dda1b568
4 changed files with 11 additions and 9 deletions

View File

@@ -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()

View File

@@ -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))
}, {

View File

@@ -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(

View File

@@ -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)
}