@@ -32,6 +32,7 @@ import androidx.compose.foundation.layout.size
3232import androidx.compose.foundation.shape.CircleShape
3333import androidx.compose.material.icons.Icons
3434import androidx.compose.material.icons.outlined.Attachment
35+ import androidx.compose.material.icons.outlined.GraphicEq
3536import androidx.compose.material3.MaterialTheme
3637import androidx.compose.runtime.Composable
3738import androidx.compose.runtime.LaunchedEffect
@@ -47,7 +48,6 @@ import androidx.compose.ui.res.painterResource
4748import androidx.compose.ui.text.style.TextAlign
4849import androidx.compose.ui.text.style.TextOverflow
4950import androidx.compose.ui.unit.dp
50- import androidx.compose.ui.unit.sp
5151import androidx.compose.ui.viewinterop.AndroidView
5252import androidx.lifecycle.Lifecycle
5353import androidx.media3.common.MediaItem
@@ -59,7 +59,9 @@ import io.element.android.features.messages.impl.media.helper.formatFileExtensio
5959import io.element.android.features.messages.impl.media.local.exoplayer.ExoPlayerWrapper
6060import io.element.android.features.messages.impl.media.local.pdf.PdfViewer
6161import io.element.android.features.messages.impl.media.local.pdf.rememberPdfViewerState
62+ import io.element.android.libraries.core.bool.orFalse
6263import io.element.android.libraries.core.mimetype.MimeTypes
64+ import io.element.android.libraries.core.mimetype.MimeTypes.isMimeTypeAudio
6365import io.element.android.libraries.core.mimetype.MimeTypes.isMimeTypeImage
6466import io.element.android.libraries.core.mimetype.MimeTypes.isMimeTypeVideo
6567import io.element.android.libraries.designsystem.R
@@ -103,6 +105,7 @@ fun LocalMediaView(
103105 zoomableState = zoomableState,
104106 modifier = modifier
105107 )
108+ // TODO handle audio with exoplayer
106109 else -> MediaFileView (
107110 localMediaViewState = localMediaViewState,
108111 uri = localMedia?.uri,
@@ -215,6 +218,7 @@ fun MediaFileView(
215218 info : MediaInfo ? ,
216219 modifier : Modifier = Modifier ,
217220) {
221+ val isAudio = info?.mimeType.isMimeTypeAudio().orFalse()
218222 localMediaViewState.isReady = uri != null
219223 Box (modifier = modifier.padding(horizontal = 8 .dp), contentAlignment = Alignment .Center ) {
220224 Column (horizontalAlignment = Alignment .CenterHorizontally ) {
@@ -226,12 +230,12 @@ fun MediaFileView(
226230 contentAlignment = Alignment .Center ,
227231 ) {
228232 Icon (
229- imageVector = Icons .Outlined .Attachment ,
233+ imageVector = if (isAudio) Icons . Outlined . GraphicEq else Icons .Outlined .Attachment ,
230234 contentDescription = null ,
231235 tint = MaterialTheme .colorScheme.background,
232236 modifier = Modifier
233237 .size(32 .dp)
234- .rotate(- 45f ),
238+ .rotate(if (isAudio) 0f else - 45f ),
235239 )
236240 }
237241 if (info != null ) {
0 commit comments