Skip to content

Commit 70f133a

Browse files
committed
Gallery: Actions on files are actually only for voice messages.
1 parent c6dfc14 commit 70f133a

File tree

9 files changed

+52
-173
lines changed

9 files changed

+52
-173
lines changed

libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/EventItemFactory.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,6 @@ class EventItemFactory @Inject constructor(
104104
waveform = null,
105105
),
106106
mediaSource = type.source,
107-
duration = type.info?.duration?.inWholeMilliseconds?.toHumanReadableDuration(),
108107
)
109108
is FileMessageType -> MediaItem.File(
110109
id = currentTimelineItem.uniqueId,

libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryView.kt

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -267,24 +267,18 @@ private fun MediaGalleryFilesList(
267267
items(files) { item ->
268268
when (item) {
269269
is MediaItem.File -> FileItemView(
270-
item,
270+
file = item,
271271
onClick = { onItemClick(item) },
272-
onShareClick = { eventSink(MediaGalleryEvents.Share(item)) },
273-
onDownloadClick = { eventSink(MediaGalleryEvents.SaveOnDisk(item)) },
274-
onInfoClick = { eventSink(MediaGalleryEvents.OpenInfo(item)) },
275272
)
276273
is MediaItem.Audio -> AudioItemView(
277-
item,
274+
audio = item,
278275
onClick = { onItemClick(item) },
279-
onShareClick = { eventSink(MediaGalleryEvents.Share(item)) },
280-
onDownloadClick = { eventSink(MediaGalleryEvents.SaveOnDisk(item)) },
281-
onInfoClick = { eventSink(MediaGalleryEvents.OpenInfo(item)) },
282276
)
283277
is MediaItem.Voice -> {
284278
val presenter: Presenter<VoiceMessageState> = presenterFactories.rememberPresenter(item)
285279
VoiceItemView(
286-
presenter.present(),
287-
item,
280+
state = presenter.present(),
281+
voice = item,
288282
onShareClick = { eventSink(MediaGalleryEvents.Share(item)) },
289283
onDownloadClick = { eventSink(MediaGalleryEvents.SaveOnDisk(item)) },
290284
onInfoClick = { eventSink(MediaGalleryEvents.OpenInfo(item)) },

libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaItem.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,6 @@ sealed interface MediaItem {
5757
val eventId: EventId?,
5858
val mediaInfo: MediaInfo,
5959
val mediaSource: MediaSource,
60-
val duration: String?,
6160
) : Event
6261

6362
data class Voice(

libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/ui/AudioItemView.kt

Lines changed: 5 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ package io.element.android.libraries.mediaviewer.impl.gallery.ui
99

1010
import androidx.compose.foundation.background
1111
import androidx.compose.foundation.clickable
12-
import androidx.compose.foundation.layout.Arrangement
1312
import androidx.compose.foundation.layout.Column
1413
import androidx.compose.foundation.layout.Row
1514
import androidx.compose.foundation.layout.Spacer
@@ -30,45 +29,36 @@ import androidx.compose.ui.text.style.TextOverflow
3029
import androidx.compose.ui.tooling.preview.PreviewParameter
3130
import androidx.compose.ui.unit.dp
3231
import io.element.android.compound.theme.ElementTheme
33-
import io.element.android.compound.tokens.generated.CompoundIcons
3432
import io.element.android.libraries.core.extensions.withBrackets
3533
import io.element.android.libraries.designsystem.preview.ElementPreview
3634
import io.element.android.libraries.designsystem.preview.PreviewsDayNight
3735
import io.element.android.libraries.designsystem.theme.components.HorizontalDivider
3836
import io.element.android.libraries.designsystem.theme.components.Icon
39-
import io.element.android.libraries.designsystem.theme.components.IconButton
4037
import io.element.android.libraries.designsystem.theme.components.Text
4138
import io.element.android.libraries.mediaviewer.impl.gallery.MediaItem
4239

4340
@Composable
4441
fun AudioItemView(
4542
audio: MediaItem.Audio,
4643
onClick: () -> Unit,
47-
onShareClick: () -> Unit,
48-
onDownloadClick: () -> Unit,
49-
onInfoClick: () -> Unit,
5044
modifier: Modifier = Modifier,
5145
) {
5246
Column(
5347
modifier = modifier
5448
.fillMaxWidth()
55-
.padding(top = 20.dp, start = 16.dp, end = 16.dp),
49+
.padding(horizontal = 16.dp),
5650
) {
51+
Spacer(modifier = Modifier.height(20.dp))
5752
FilenameRow(
5853
audio = audio,
5954
onClick = onClick,
6055
)
6156
val caption = audio.mediaInfo.caption
6257
if (caption != null) {
63-
Spacer(modifier = Modifier.height(16.dp))
64-
Caption(caption)
58+
CaptionView(caption)
59+
} else {
60+
Spacer(modifier = Modifier.height(20.dp))
6561
}
66-
Spacer(modifier = Modifier.height(16.dp))
67-
ActionIconsRow(
68-
onShareClick = onShareClick,
69-
onDownloadClick = onDownloadClick,
70-
onInfoClick = onInfoClick,
71-
)
7262
HorizontalDivider()
7363
}
7464
}
@@ -101,16 +91,6 @@ private fun FilenameRow(
10191
imageVector = Icons.Outlined.GraphicEq,
10292
contentDescription = null,
10393
)
104-
audio.duration?.let {
105-
Spacer(modifier = Modifier.width(8.dp))
106-
Text(
107-
text = audio.duration,
108-
style = ElementTheme.typography.fontBodyMdMedium,
109-
color = ElementTheme.colors.textSecondary,
110-
maxLines = 1,
111-
overflow = TextOverflow.Ellipsis,
112-
)
113-
}
11494
Spacer(modifier = Modifier.width(8.dp))
11595
Text(
11696
text = audio.mediaInfo.filename,
@@ -131,55 +111,6 @@ private fun FilenameRow(
131111
}
132112
}
133113

134-
@Composable
135-
private fun Caption(caption: String) {
136-
Text(
137-
modifier = Modifier.fillMaxWidth(),
138-
text = caption,
139-
maxLines = 5,
140-
overflow = TextOverflow.Ellipsis,
141-
style = ElementTheme.typography.fontBodyLgRegular,
142-
color = ElementTheme.colors.textPrimary,
143-
)
144-
}
145-
146-
@Composable
147-
private fun ActionIconsRow(
148-
onShareClick: () -> Unit,
149-
onDownloadClick: () -> Unit,
150-
onInfoClick: () -> Unit,
151-
) {
152-
Row(
153-
modifier = Modifier.fillMaxWidth(),
154-
horizontalArrangement = Arrangement.End
155-
) {
156-
IconButton(
157-
onClick = onShareClick,
158-
) {
159-
Icon(
160-
imageVector = CompoundIcons.ShareAndroid(),
161-
contentDescription = null,
162-
)
163-
}
164-
IconButton(
165-
onClick = onDownloadClick,
166-
) {
167-
Icon(
168-
imageVector = CompoundIcons.Download(),
169-
contentDescription = null,
170-
)
171-
}
172-
IconButton(
173-
onClick = onInfoClick,
174-
) {
175-
Icon(
176-
imageVector = CompoundIcons.Info(),
177-
contentDescription = null,
178-
)
179-
}
180-
}
181-
}
182-
183114
@PreviewsDayNight
184115
@Composable
185116
internal fun AudioItemViewPreview(
@@ -188,8 +119,5 @@ internal fun AudioItemViewPreview(
188119
AudioItemView(
189120
audio = audio,
190121
onClick = {},
191-
onShareClick = {},
192-
onDownloadClick = {},
193-
onInfoClick = {},
194122
)
195123
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
/*
2+
* Copyright 2024 New Vector Ltd.
3+
*
4+
* SPDX-License-Identifier: AGPL-3.0-only
5+
* Please see LICENSE in the repository root for full details.
6+
*/
7+
8+
package io.element.android.libraries.mediaviewer.impl.gallery.ui
9+
10+
import androidx.compose.foundation.layout.fillMaxWidth
11+
import androidx.compose.foundation.layout.padding
12+
import androidx.compose.runtime.Composable
13+
import androidx.compose.ui.Modifier
14+
import androidx.compose.ui.text.style.TextOverflow
15+
import androidx.compose.ui.unit.dp
16+
import io.element.android.compound.theme.ElementTheme
17+
import io.element.android.libraries.designsystem.theme.components.Text
18+
19+
@Composable
20+
fun CaptionView(
21+
caption: String,
22+
modifier: Modifier = Modifier,
23+
) {
24+
Text(
25+
modifier = modifier
26+
.fillMaxWidth()
27+
.padding(vertical = 16.dp),
28+
text = caption,
29+
maxLines = 5,
30+
overflow = TextOverflow.Ellipsis,
31+
style = ElementTheme.typography.fontBodyLgRegular,
32+
color = ElementTheme.colors.textPrimary,
33+
)
34+
}

libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/ui/FileItemView.kt

Lines changed: 5 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ package io.element.android.libraries.mediaviewer.impl.gallery.ui
99

1010
import androidx.compose.foundation.background
1111
import androidx.compose.foundation.clickable
12-
import androidx.compose.foundation.layout.Arrangement
1312
import androidx.compose.foundation.layout.Column
1413
import androidx.compose.foundation.layout.Row
1514
import androidx.compose.foundation.layout.Spacer
@@ -34,39 +33,31 @@ import io.element.android.libraries.designsystem.preview.ElementPreview
3433
import io.element.android.libraries.designsystem.preview.PreviewsDayNight
3534
import io.element.android.libraries.designsystem.theme.components.HorizontalDivider
3635
import io.element.android.libraries.designsystem.theme.components.Icon
37-
import io.element.android.libraries.designsystem.theme.components.IconButton
3836
import io.element.android.libraries.designsystem.theme.components.Text
3937
import io.element.android.libraries.mediaviewer.impl.gallery.MediaItem
4038

4139
@Composable
4240
fun FileItemView(
4341
file: MediaItem.File,
4442
onClick: () -> Unit,
45-
onShareClick: () -> Unit,
46-
onDownloadClick: () -> Unit,
47-
onInfoClick: () -> Unit,
4843
modifier: Modifier = Modifier,
4944
) {
5045
Column(
5146
modifier = modifier
5247
.fillMaxWidth()
53-
.padding(top = 20.dp, start = 16.dp, end = 16.dp),
48+
.padding(horizontal = 16.dp),
5449
) {
50+
Spacer(modifier = Modifier.height(20.dp))
5551
FilenameRow(
5652
file = file,
5753
onClick = onClick,
5854
)
5955
val caption = file.mediaInfo.caption
6056
if (caption != null) {
61-
Spacer(modifier = Modifier.height(16.dp))
62-
Caption(caption)
57+
CaptionView(caption)
58+
} else {
59+
Spacer(modifier = Modifier.height(20.dp))
6360
}
64-
Spacer(modifier = Modifier.height(16.dp))
65-
ActionIconsRow(
66-
onShareClick = onShareClick,
67-
onDownloadClick = onDownloadClick,
68-
onInfoClick = onInfoClick,
69-
)
7061
HorizontalDivider()
7162
}
7263
}
@@ -119,55 +110,6 @@ private fun FilenameRow(
119110
}
120111
}
121112

122-
@Composable
123-
private fun Caption(caption: String) {
124-
Text(
125-
modifier = Modifier.fillMaxWidth(),
126-
text = caption,
127-
maxLines = 5,
128-
overflow = TextOverflow.Ellipsis,
129-
style = ElementTheme.typography.fontBodyLgRegular,
130-
color = ElementTheme.colors.textPrimary,
131-
)
132-
}
133-
134-
@Composable
135-
private fun ActionIconsRow(
136-
onShareClick: () -> Unit,
137-
onDownloadClick: () -> Unit,
138-
onInfoClick: () -> Unit,
139-
) {
140-
Row(
141-
modifier = Modifier.fillMaxWidth(),
142-
horizontalArrangement = Arrangement.End
143-
) {
144-
IconButton(
145-
onClick = onShareClick,
146-
) {
147-
Icon(
148-
imageVector = CompoundIcons.ShareAndroid(),
149-
contentDescription = null,
150-
)
151-
}
152-
IconButton(
153-
onClick = onDownloadClick,
154-
) {
155-
Icon(
156-
imageVector = CompoundIcons.Download(),
157-
contentDescription = null,
158-
)
159-
}
160-
IconButton(
161-
onClick = onInfoClick,
162-
) {
163-
Icon(
164-
imageVector = CompoundIcons.Info(),
165-
contentDescription = null,
166-
)
167-
}
168-
}
169-
}
170-
171113
@PreviewsDayNight
172114
@Composable
173115
internal fun FileItemViewPreview(
@@ -176,8 +118,5 @@ internal fun FileItemViewPreview(
176118
FileItemView(
177119
file = file,
178120
onClick = {},
179-
onShareClick = {},
180-
onDownloadClick = {},
181-
onInfoClick = {},
182121
)
183122
}

libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/ui/MediaItemAudioProvider.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ fun aMediaItemAudio(
3232
id: UniqueId = UniqueId("fileId"),
3333
filename: String = "filename",
3434
caption: String? = null,
35-
duration: String? = "1:23",
3635
): MediaItem.Audio {
3736
return MediaItem.Audio(
3837
id = id,
@@ -42,6 +41,5 @@ fun aMediaItemAudio(
4241
caption = caption,
4342
),
4443
mediaSource = MediaSource(""),
45-
duration = duration,
4644
)
4745
}

libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/ui/VoiceItemView.kt

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -66,18 +66,19 @@ fun VoiceItemView(
6666
Column(
6767
modifier = modifier
6868
.fillMaxWidth()
69-
.padding(top = 20.dp, start = 16.dp, end = 16.dp),
69+
.padding(horizontal = 16.dp),
7070
) {
71+
Spacer(modifier = Modifier.height(20.dp))
7172
VoiceInfoRow(
7273
state = state,
7374
voice = voice,
7475
)
7576
val caption = voice.mediaInfo.caption
7677
if (caption != null) {
78+
CaptionView(caption)
79+
} else {
7780
Spacer(modifier = Modifier.height(16.dp))
78-
Caption(caption)
7981
}
80-
Spacer(modifier = Modifier.height(16.dp))
8182
ActionIconsRow(
8283
onShareClick = onShareClick,
8384
onDownloadClick = onDownloadClick,
@@ -256,18 +257,6 @@ private fun CustomIconButton(
256257
)
257258
}
258259

259-
@Composable
260-
private fun Caption(caption: String) {
261-
Text(
262-
modifier = Modifier.fillMaxWidth(),
263-
text = caption,
264-
maxLines = 5,
265-
overflow = TextOverflow.Ellipsis,
266-
style = ElementTheme.typography.fontBodyLgRegular,
267-
color = ElementTheme.colors.textPrimary,
268-
)
269-
}
270-
271260
@Composable
272261
private fun ActionIconsRow(
273262
onShareClick: () -> Unit,

0 commit comments

Comments
 (0)