Skip to content

Commit 870ae5f

Browse files
authored
Merge pull request #3744 from element-hq/feature/bma/resizeMedia
Add setting to compress image and video
2 parents e329370 + 3a6d65b commit 870ae5f

File tree

39 files changed

+198
-55
lines changed

39 files changed

+198
-55
lines changed

features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/attachments/Attachment.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,5 @@ import kotlinx.parcelize.Parcelize
1515
@Immutable
1616
sealed interface Attachment : Parcelable {
1717
@Parcelize
18-
data class Media(val localMedia: LocalMedia, val compressIfPossible: Boolean) : Attachment
18+
data class Media(val localMedia: LocalMedia) : Attachment
1919
}

features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/attachments/preview/AttachmentsPreviewPresenter.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,6 @@ class AttachmentsPreviewPresenter @AssistedInject constructor(
9696
mediaSender.sendMedia(
9797
uri = mediaAttachment.localMedia.uri,
9898
mimeType = mediaAttachment.localMedia.info.mimeType,
99-
compressIfPossible = mediaAttachment.compressIfPossible,
10099
progressCallback = progressCallback
101100
).getOrThrow()
102101
}.fold(

features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/attachments/preview/AttachmentsPreviewStateProvider.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ fun anAttachmentsPreviewState(
3131
) = AttachmentsPreviewState(
3232
attachment = Attachment.Media(
3333
localMedia = LocalMedia("file://path".toUri(), mediaInfo),
34-
compressIfPossible = true
3534
),
3635
sendActionState = sendActionState,
3736
eventSink = {}

features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/MessageComposerPresenter.kt

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@ class MessageComposerPresenter @Inject constructor(
169169
handlePickedMedia(attachmentsState, uri, mimeType)
170170
}
171171
val filesPicker = mediaPickerProvider.registerFilePicker(AnyMimeTypes) { uri ->
172-
handlePickedMedia(attachmentsState, uri, compressIfPossible = false)
172+
handlePickedMedia(attachmentsState, uri)
173173
}
174174
val cameraPhotoPicker = mediaPickerProvider.registerCameraPhotoPicker { uri ->
175175
handlePickedMedia(attachmentsState, uri, MimeTypes.IMAGE_JPEG)
@@ -294,7 +294,6 @@ class MessageComposerPresenter @Inject constructor(
294294
name = null,
295295
formattedFileSize = null
296296
),
297-
compressIfPossible = true
298297
),
299298
attachmentState = attachmentsState,
300299
)
@@ -493,7 +492,6 @@ class MessageComposerPresenter @Inject constructor(
493492
attachmentsState: MutableState<AttachmentsState>,
494493
uri: Uri?,
495494
mimeType: String? = null,
496-
compressIfPossible: Boolean = true,
497495
) {
498496
if (uri == null) {
499497
attachmentsState.value = AttachmentsState.None
@@ -505,7 +503,7 @@ class MessageComposerPresenter @Inject constructor(
505503
name = null,
506504
formattedFileSize = null
507505
)
508-
val mediaAttachment = Attachment.Media(localMedia, compressIfPossible)
506+
val mediaAttachment = Attachment.Media(localMedia)
509507
val isPreviewable = when {
510508
MimeTypes.isImage(localMedia.info.mimeType) -> true
511509
MimeTypes.isVideo(localMedia.info.mimeType) -> true
@@ -535,7 +533,6 @@ class MessageComposerPresenter @Inject constructor(
535533
mediaSender.sendMedia(
536534
uri = uri,
537535
mimeType = mimeType,
538-
compressIfPossible = false,
539536
progressCallback = progressCallback
540537
).getOrThrow()
541538
}

features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/attachments/AttachmentsPreviewPresenterTest.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import com.google.common.truth.Truth.assertThat
1717
import io.element.android.features.messages.impl.attachments.preview.AttachmentsPreviewEvents
1818
import io.element.android.features.messages.impl.attachments.preview.AttachmentsPreviewPresenter
1919
import io.element.android.features.messages.impl.attachments.preview.SendActionState
20+
import io.element.android.features.messages.impl.fixtures.aMediaAttachment
2021
import io.element.android.libraries.matrix.api.core.ProgressCallback
2122
import io.element.android.libraries.matrix.api.room.MatrixRoom
2223
import io.element.android.libraries.matrix.test.media.FakeMediaUploadHandler
@@ -26,6 +27,7 @@ import io.element.android.libraries.mediaupload.api.MediaSender
2627
import io.element.android.libraries.mediaupload.test.FakeMediaPreProcessor
2728
import io.element.android.libraries.mediaviewer.api.local.LocalMedia
2829
import io.element.android.libraries.mediaviewer.test.viewer.aLocalMedia
30+
import io.element.android.libraries.preferences.test.InMemorySessionPreferencesStore
2931
import io.element.android.tests.testutils.WarmUpRule
3032
import io.element.android.tests.testutils.lambda.lambdaRecorder
3133
import io.mockk.mockk
@@ -120,8 +122,8 @@ class AttachmentsPreviewPresenterTest {
120122
room: MatrixRoom = FakeMatrixRoom()
121123
): AttachmentsPreviewPresenter {
122124
return AttachmentsPreviewPresenter(
123-
attachment = Attachment.Media(localMedia, compressIfPossible = false),
124-
mediaSender = MediaSender(mediaPreProcessor, room)
125+
attachment = aMediaAttachment(localMedia),
126+
mediaSender = MediaSender(mediaPreProcessor, room, InMemorySessionPreferencesStore())
125127
)
126128
}
127129
}

features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/fixtures/MediaAttachmentFixtures.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ package io.element.android.features.messages.impl.fixtures
1010
import io.element.android.features.messages.impl.attachments.Attachment
1111
import io.element.android.libraries.mediaviewer.api.local.LocalMedia
1212

13-
fun aMediaAttachment(localMedia: LocalMedia, compressIfPossible: Boolean = true) = Attachment.Media(
13+
fun aMediaAttachment(localMedia: LocalMedia) = Attachment.Media(
1414
localMedia = localMedia,
15-
compressIfPossible = compressIfPossible,
1615
)

features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/messagecomposer/MessageComposerPresenterTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1489,7 +1489,7 @@ class MessageComposerPresenterTest {
14891489
featureFlagService,
14901490
sessionPreferencesStore,
14911491
localMediaFactory,
1492-
MediaSender(mediaPreProcessor, room),
1492+
MediaSender(mediaPreProcessor, room, InMemorySessionPreferencesStore()),
14931493
snackbarDispatcher,
14941494
analyticsService,
14951495
DefaultMessageComposerContext(),

features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/voicemessages/composer/VoiceMessageComposerPresenterTest.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import io.element.android.libraries.permissions.api.PermissionsPresenter
3030
import io.element.android.libraries.permissions.api.aPermissionsState
3131
import io.element.android.libraries.permissions.test.FakePermissionsPresenter
3232
import io.element.android.libraries.permissions.test.FakePermissionsPresenterFactory
33+
import io.element.android.libraries.preferences.test.InMemorySessionPreferencesStore
3334
import io.element.android.libraries.textcomposer.model.MessageComposerMode
3435
import io.element.android.libraries.textcomposer.model.VoiceMessagePlayerEvent
3536
import io.element.android.libraries.textcomposer.model.VoiceMessageRecorderEvent
@@ -61,7 +62,7 @@ class VoiceMessageComposerPresenterTest {
6162
sendMediaResult = sendMediaResult
6263
)
6364
private val mediaPreProcessor = FakeMediaPreProcessor().apply { givenAudioResult() }
64-
private val mediaSender = MediaSender(mediaPreProcessor, matrixRoom)
65+
private val mediaSender = MediaSender(mediaPreProcessor, matrixRoom, InMemorySessionPreferencesStore())
6566
private val messageComposerContext = FakeMessageComposerContext()
6667

6768
companion object {

features/preferences/impl/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ dependencies {
5555
implementation(projects.features.deactivation.api)
5656
implementation(projects.features.roomlist.api)
5757
implementation(projects.services.analytics.api)
58+
implementation(projects.services.analytics.compose)
5859
implementation(projects.services.toolbox.api)
5960
implementation(libs.datetime)
6061
implementation(libs.coil.compose)

features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/advanced/AdvancedSettingsEvents.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import io.element.android.compound.theme.Theme
1212
sealed interface AdvancedSettingsEvents {
1313
data class SetDeveloperModeEnabled(val enabled: Boolean) : AdvancedSettingsEvents
1414
data class SetSharePresenceEnabled(val enabled: Boolean) : AdvancedSettingsEvents
15+
data class SetCompressMedia(val compress: Boolean) : AdvancedSettingsEvents
1516
data object ChangeTheme : AdvancedSettingsEvents
1617
data object CancelChangeTheme : AdvancedSettingsEvents
1718
data class SetTheme(val theme: Theme) : AdvancedSettingsEvents

0 commit comments

Comments
 (0)