Skip to content

Commit 1822c9b

Browse files
authored
Merge pull request #4003 from element-hq/feature/bma/mediaViewerTopBar
MediaViewer: Align title to left and move action bottom to top bar.
2 parents 317931d + 332a382 commit 1822c9b

12 files changed

+63
-76
lines changed

libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerView.kt

Lines changed: 41 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@ import androidx.compose.animation.fadeOut
1717
import androidx.compose.foundation.background
1818
import androidx.compose.foundation.layout.Box
1919
import androidx.compose.foundation.layout.Column
20-
import androidx.compose.foundation.layout.Row
21-
import androidx.compose.foundation.layout.Spacer
2220
import androidx.compose.foundation.layout.fillMaxSize
2321
import androidx.compose.foundation.layout.fillMaxWidth
2422
import androidx.compose.foundation.layout.height
@@ -53,6 +51,7 @@ import io.element.android.compound.theme.ElementTheme
5351
import io.element.android.compound.tokens.generated.CompoundIcons
5452
import io.element.android.libraries.architecture.AsyncData
5553
import io.element.android.libraries.core.mimetype.MimeTypes
54+
import io.element.android.libraries.core.mimetype.MimeTypes.isMimeTypeVideo
5655
import io.element.android.libraries.designsystem.components.button.BackButton
5756
import io.element.android.libraries.designsystem.components.dialogs.RetryDialog
5857
import io.element.android.libraries.designsystem.preview.ElementPreviewDark
@@ -117,20 +116,19 @@ fun MediaViewerView(
117116
) {
118117
MediaViewerTopBar(
119118
actionsEnabled = state.downloadedMedia is AsyncData.Success,
119+
canDownload = state.canDownload,
120+
canShare = state.canShare,
121+
mimeType = state.mediaInfo.mimeType,
120122
senderName = state.mediaInfo.senderName,
121123
dateSent = state.mediaInfo.dateSent,
122124
onBackClick = onBackClick,
123125
eventSink = state.eventSink
124126
)
125127
MediaViewerBottomBar(
126128
modifier = Modifier.align(Alignment.BottomCenter),
127-
actionsEnabled = state.downloadedMedia is AsyncData.Success,
128-
canDownload = state.canDownload,
129-
canShare = state.canShare,
130-
mimeType = state.mediaInfo.mimeType,
129+
showDivider = state.mediaInfo.mimeType.isMimeTypeVideo(),
131130
caption = state.mediaInfo.caption,
132131
onHeightChange = { bottomPaddingInPixels = it },
133-
eventSink = state.eventSink
134132
)
135133
}
136134
}
@@ -276,11 +274,13 @@ private fun rememberShowProgress(downloadedMedia: AsyncData<LocalMedia>): Boolea
276274
return showProgress
277275
}
278276

279-
@Suppress("UNUSED_PARAMETER")
280277
@OptIn(ExperimentalMaterial3Api::class)
281278
@Composable
282279
private fun MediaViewerTopBar(
283280
actionsEnabled: Boolean,
281+
canDownload: Boolean,
282+
canShare: Boolean,
283+
mimeType: String,
284284
senderName: String?,
285285
dateSent: String?,
286286
onBackClick: () -> Unit,
@@ -292,8 +292,6 @@ private fun MediaViewerTopBar(
292292
Column(
293293
modifier = Modifier
294294
.fillMaxWidth()
295-
.padding(end = 48.dp),
296-
horizontalAlignment = Alignment.CenterHorizontally,
297295
) {
298296
Text(
299297
text = senderName,
@@ -313,63 +311,19 @@ private fun MediaViewerTopBar(
313311
),
314312
navigationIcon = { BackButton(onClick = onBackClick) },
315313
actions = {
316-
// TODO Add action to open infos.
317-
}
318-
)
319-
}
320-
321-
@Composable
322-
private fun MediaViewerBottomBar(
323-
actionsEnabled: Boolean,
324-
canDownload: Boolean,
325-
canShare: Boolean,
326-
mimeType: String,
327-
caption: String?,
328-
onHeightChange: (Int) -> Unit,
329-
eventSink: (MediaViewerEvents) -> Unit,
330-
modifier: Modifier = Modifier,
331-
) {
332-
Column(
333-
modifier = modifier
334-
.fillMaxWidth()
335-
.background(Color(0x99101317))
336-
.onSizeChanged {
337-
onHeightChange(it.height)
338-
},
339-
) {
340-
HorizontalDivider()
341-
if (caption != null) {
342-
Text(
343-
modifier = Modifier
344-
.fillMaxWidth()
345-
.padding(16.dp),
346-
text = caption,
347-
maxLines = 5,
348-
overflow = TextOverflow.Ellipsis,
349-
style = ElementTheme.typography.fontBodyLgRegular,
350-
)
351-
}
352-
Row(
353-
modifier = Modifier
354-
.fillMaxWidth()
355-
.padding(start = 8.dp, end = 8.dp, bottom = 8.dp),
356-
verticalAlignment = Alignment.CenterVertically,
357-
) {
358314
if (canShare) {
359315
IconButton(
360316
enabled = actionsEnabled,
361317
onClick = {
362318
eventSink(MediaViewerEvents.Share)
363319
},
364-
modifier = Modifier.align(Alignment.CenterVertically)
365320
) {
366321
Icon(
367322
imageVector = CompoundIcons.ShareAndroid(),
368323
contentDescription = stringResource(id = CommonStrings.action_share)
369324
)
370325
}
371326
}
372-
Spacer(modifier = Modifier.weight(1f))
373327
IconButton(
374328
enabled = actionsEnabled,
375329
onClick = {
@@ -400,6 +354,39 @@ private fun MediaViewerBottomBar(
400354
)
401355
}
402356
}
357+
// TODO Add action to open infos.
358+
}
359+
)
360+
}
361+
362+
@Composable
363+
private fun MediaViewerBottomBar(
364+
caption: String?,
365+
showDivider: Boolean,
366+
onHeightChange: (Int) -> Unit,
367+
modifier: Modifier = Modifier,
368+
) {
369+
Column(
370+
modifier = modifier
371+
.fillMaxWidth()
372+
.background(Color(0x99101317))
373+
.onSizeChanged {
374+
onHeightChange(it.height)
375+
},
376+
) {
377+
if (caption != null) {
378+
if (showDivider) {
379+
HorizontalDivider()
380+
}
381+
Text(
382+
modifier = Modifier
383+
.fillMaxWidth()
384+
.padding(16.dp),
385+
text = caption,
386+
maxLines = 5,
387+
overflow = TextOverflow.Ellipsis,
388+
style = ElementTheme.typography.fontBodyLgRegular,
389+
)
403390
}
404391
}
405392
}
Lines changed: 2 additions & 2 deletions
Loading
Lines changed: 2 additions & 2 deletions
Loading
Lines changed: 2 additions & 2 deletions
Loading
Lines changed: 2 additions & 2 deletions
Loading
Lines changed: 2 additions & 2 deletions
Loading
Lines changed: 2 additions & 2 deletions
Loading
Lines changed: 2 additions & 2 deletions
Loading
Lines changed: 2 additions & 2 deletions
Loading
Lines changed: 2 additions & 2 deletions
Loading

0 commit comments

Comments
 (0)