@ -50,6 +50,7 @@ import androidx.compose.ui.unit.dp
@@ -50,6 +50,7 @@ import androidx.compose.ui.unit.dp
import io.element.android.libraries.designsystem.preview.ElementPreview
import io.element.android.libraries.designsystem.preview.PreviewsDayNight
import io.element.android.libraries.designsystem.text.applyScaleUp
import io.element.android.libraries.designsystem.theme.components.CircularProgressIndicator
import io.element.android.libraries.designsystem.theme.components.Icon
import io.element.android.libraries.designsystem.theme.components.Text
import io.element.android.libraries.designsystem.utils.CommonDrawables
@ -153,24 +154,35 @@ fun TextComposer(
@@ -153,24 +154,35 @@ fun TextComposer(
composerMode = composerMode ,
)
}
val uploadVoiceProgress = @Composable {
CircularProgressIndicator (
modifier = Modifier . size ( 24. dp ) ,
)
}
val textFormattingOptions = @Composable { TextFormatting ( state = state ) }
val sendOrRecordButton = when {
enableVoiceMessages && ! canSendMessage ->
when ( voiceMessageState ) {
VoiceMessageState . Idle ,
is VoiceMessageState . Recording -> recordVoiceButton
is VoiceMessageState . Preview -> sendVoiceButton
else -> recordVoiceButton
is Voic eMessageState . S ending -> uploadVoiceProgress
}
else ->
sendButton
}
val voiceRecording = @Composable {
if ( voiceMessageState is VoiceMessageState . Recording ) {
VoiceMessageRecording ( voiceMessageState . level )
} else if ( voiceMessageState is VoiceMessageState . Preview ) {
VoiceMessagePreview ( )
when ( voiceMessageState ) {
VoiceMessageState . Preview ->
VoiceMessagePreview ( isInteractive = true )
VoiceMessageState . Sending ->
VoiceMessagePreview ( isInteractive = false )
is VoiceMessageState . Recording ->
VoiceMessageRecording ( voiceMessageState . level )
VoiceMessageState . Idle -> { }
}
}
@ -245,6 +257,8 @@ private fun StandardLayout(
@@ -245,6 +257,8 @@ private fun StandardLayout(
Box (
Modifier
. padding ( bottom = 5. dp , top = 5. dp , end = 6. dp , start = 6. dp )
. size ( 48. dp . applyScaleUp ( ) ) ,
contentAlignment = Alignment . Center ,
) {
endButton ( )
}
@ -721,6 +735,30 @@ internal fun TextComposerReplyPreview() = ElementPreview {
@@ -721,6 +735,30 @@ internal fun TextComposerReplyPreview() = ElementPreview {
)
}
@PreviewsDayNight
@Composable
internal fun TextComposerVoicePreview ( ) = ElementPreview {
@Composable
fun VoicePreview (
voiceMessageState : VoiceMessageState
) = TextComposer (
RichTextEditorState ( " " , initialFocus = true ) ,
voiceMessageState = voiceMessageState ,
onSendMessage = { } ,
composerMode = MessageComposerMode . Normal ,
onResetComposerMode = { } ,
enableTextFormatting = true ,
enableVoiceMessages = true ,
)
PreviewColumn ( items = persistentListOf ( {
VoicePreview ( voiceMessageState = VoiceMessageState . Recording ( 0.5 ) )
} , {
VoicePreview ( voiceMessageState = VoiceMessageState . Preview )
} , {
VoicePreview ( voiceMessageState = VoiceMessageState . Sending )
} ) )
}
@Composable
private fun PreviewColumn (
items : ImmutableList < @Composable ( ) -> Unit > ,