diff --git a/features/messages/api/src/main/kotlin/io/element/android/features/messages/api/timeline/voicemessages/composer/VoiceMessageComposerStateProvider.kt b/features/messages/api/src/main/kotlin/io/element/android/features/messages/api/timeline/voicemessages/composer/VoiceMessageComposerStateProvider.kt index aaba414b79..f089af2dd3 100644 --- a/features/messages/api/src/main/kotlin/io/element/android/features/messages/api/timeline/voicemessages/composer/VoiceMessageComposerStateProvider.kt +++ b/features/messages/api/src/main/kotlin/io/element/android/features/messages/api/timeline/voicemessages/composer/VoiceMessageComposerStateProvider.kt @@ -9,7 +9,6 @@ package io.element.android.features.messages.api.timeline.voicemessages.composer import androidx.compose.ui.tooling.preview.PreviewParameterProvider import io.element.android.libraries.designsystem.components.media.WaveFormSamples -import io.element.android.libraries.designsystem.components.media.createFakeWaveform import io.element.android.libraries.textcomposer.model.VoiceMessageState import kotlin.time.Duration.Companion.seconds @@ -39,5 +38,5 @@ fun aVoiceMessagePreviewState() = VoiceMessageState.Preview( showCursor = false, playbackProgress = 0f, time = 10.seconds, - waveform = createFakeWaveform(), + waveform = WaveFormSamples.realisticWaveForm, ) diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/media/WaveFormSamples.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/media/WaveFormSamples.kt index 7185dba072..6fbb217392 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/media/WaveFormSamples.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/media/WaveFormSamples.kt @@ -9,6 +9,7 @@ package io.element.android.libraries.designsystem.components.media import kotlinx.collections.immutable.persistentListOf import kotlinx.collections.immutable.toImmutableList +import kotlinx.collections.immutable.toPersistentList object WaveFormSamples { val allRangeWaveForm = List(100) { it.toFloat() / 100 }.toImmutableList() @@ -23,4 +24,6 @@ object WaveFormSamples { 1.000f, 0.334f, 0.321f, 0.011f, 0.000f, 0.000f, 0.003f, ) + + val longRealisticWaveForm = List(4) { realisticWaveForm }.flatten().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 1126a39466..e1a72e04ca 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 @@ -52,7 +52,7 @@ import androidx.compose.ui.unit.dp import io.element.android.compound.theme.ElementTheme import io.element.android.compound.tokens.generated.CompoundIcons import io.element.android.libraries.androidutils.ui.showKeyboard -import io.element.android.libraries.designsystem.components.media.createFakeWaveform +import io.element.android.libraries.designsystem.components.media.WaveFormSamples import io.element.android.libraries.designsystem.preview.DAY_MODE_NAME import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.NIGHT_MODE_NAME @@ -808,30 +808,33 @@ internal fun TextComposerCaptionPreview() = ElementPreview { internal fun TextComposerVoicePreview() = ElementPreview { PreviewColumn( items = persistentListOf( - VoiceMessageState.Recording(61.seconds, createFakeWaveform()), + VoiceMessageState.Recording( + duration = 61.seconds, + levels = WaveFormSamples.realisticWaveForm, + ), VoiceMessageState.Preview( isSending = false, isPlaying = false, showCursor = false, - waveform = createFakeWaveform(), + waveform = WaveFormSamples.realisticWaveForm, time = 0.seconds, - playbackProgress = 0.0f + playbackProgress = 0.0f, ), VoiceMessageState.Preview( isSending = false, isPlaying = true, showCursor = true, - waveform = createFakeWaveform(), + waveform = WaveFormSamples.realisticWaveForm, time = 3.seconds, - playbackProgress = 0.2f + playbackProgress = 0.2f, ), VoiceMessageState.Preview( isSending = true, isPlaying = false, showCursor = false, - waveform = createFakeWaveform(), + waveform = WaveFormSamples.realisticWaveForm, time = 61.seconds, - playbackProgress = 0.0f + playbackProgress = 0.0f, ), ) ) { voiceMessageState -> @@ -848,12 +851,15 @@ internal fun TextComposerVoicePreview() = ElementPreview { internal fun TextComposerVoiceNotEncryptedPreview() = ElementPreview { PreviewColumn( items = persistentListOf( - VoiceMessageState.Recording(61.seconds, createFakeWaveform()), + VoiceMessageState.Recording( + duration = 61.seconds, + levels = WaveFormSamples.realisticWaveForm, + ), VoiceMessageState.Preview( isSending = false, isPlaying = false, showCursor = false, - waveform = createFakeWaveform(), + waveform = WaveFormSamples.realisticWaveForm, time = 0.seconds, playbackProgress = 0.0f ), @@ -861,7 +867,7 @@ internal fun TextComposerVoiceNotEncryptedPreview() = ElementPreview { isSending = false, isPlaying = true, showCursor = true, - waveform = createFakeWaveform(), + waveform = WaveFormSamples.realisticWaveForm, time = 3.seconds, playbackProgress = 0.2f ), @@ -869,7 +875,7 @@ internal fun TextComposerVoiceNotEncryptedPreview() = ElementPreview { isSending = true, isPlaying = false, showCursor = false, - waveform = createFakeWaveform(), + waveform = WaveFormSamples.realisticWaveForm, time = 61.seconds, playbackProgress = 0.0f ), diff --git a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/VoiceMessagePreview.kt b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/VoiceMessagePreview.kt index d965a3d0d6..fbe45866c9 100644 --- a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/VoiceMessagePreview.kt +++ b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/VoiceMessagePreview.kt @@ -29,8 +29,8 @@ import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import io.element.android.compound.theme.ElementTheme import io.element.android.compound.tokens.generated.CompoundIcons +import io.element.android.libraries.designsystem.components.media.WaveFormSamples import io.element.android.libraries.designsystem.components.media.WaveformPlaybackView -import io.element.android.libraries.designsystem.components.media.createFakeWaveform import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.theme.components.Icon @@ -138,14 +138,18 @@ private fun PlayerButton( private fun PauseIcon() = Icon( imageVector = CompoundIcons.PauseSolid(), contentDescription = stringResource(id = CommonStrings.a11y_pause), - modifier = Modifier.size(20.dp).padding(2.dp), + modifier = Modifier + .size(20.dp) + .padding(2.dp), ) @Composable private fun PlayIcon() = Icon( imageVector = CompoundIcons.PlaySolid(), contentDescription = stringResource(id = CommonStrings.a11y_play), - modifier = Modifier.size(20.dp).padding(2.dp), + modifier = Modifier + .size(20.dp) + .padding(2.dp), ) @PreviewsDayNight @@ -160,7 +164,7 @@ internal fun VoiceMessagePreviewPreview() = ElementPreview { time = 2.seconds, playbackProgress = 0.2f, showCursor = true, - waveform = createFakeWaveform() + waveform = WaveFormSamples.longRealisticWaveForm, ) AVoiceMessagePreview( isInteractive = true, @@ -168,7 +172,7 @@ internal fun VoiceMessagePreviewPreview() = ElementPreview { time = 0.seconds, playbackProgress = 0.0f, showCursor = true, - waveform = createFakeWaveform() + waveform = WaveFormSamples.longRealisticWaveForm, ) AVoiceMessagePreview( isInteractive = false, @@ -176,7 +180,7 @@ internal fun VoiceMessagePreviewPreview() = ElementPreview { time = 789.seconds, playbackProgress = 0.0f, showCursor = false, - waveform = createFakeWaveform() + waveform = WaveFormSamples.longRealisticWaveForm, ) } }