From 119ee9666dcd23bceca42c1e88c2283a8b1c640b Mon Sep 17 00:00:00 2001 From: Sagar Date: Wed, 22 Jan 2025 17:00:03 +0530 Subject: [PATCH] Clamp videos to max duration after media quality change. Fixes #13930 Resolves #13932 --- .../mediasend/v2/MediaSelectionViewModel.kt | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/MediaSelectionViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/MediaSelectionViewModel.kt index 26ddcc505c..30e0d64bb0 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/MediaSelectionViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/MediaSelectionViewModel.kt @@ -335,6 +335,14 @@ class MediaSelectionViewModel( store.update { it.copy(quality = sentMediaQuality, isPreUploadEnabled = false) } repository.uploadRepository.cancelAllUploads() + + store.state.selectedMedia.forEach { mediaItem -> + if (MediaUtil.isVideoType(mediaItem.contentType) && MediaConstraints.isVideoTranscodeAvailable()) { + val uri = mediaItem.uri + val data = store.state.getOrCreateVideoTrimData(uri) + onEditVideoDuration(totalDurationUs = data.totalInputDurationUs, startTimeUs = data.startTimeUs, endTimeUs = data.endTimeUs, touchEnabled = true, uri = uri) + } + } } fun setMessage(text: CharSequence?) { @@ -345,9 +353,9 @@ class MediaSelectionViewModel( store.update { it.copy(viewOnceToggleState = it.viewOnceToggleState.next()) } } - fun onEditVideoDuration(totalDurationUs: Long, startTimeUs: Long, endTimeUs: Long, touchEnabled: Boolean) { + fun onEditVideoDuration(totalDurationUs: Long, startTimeUs: Long, endTimeUs: Long, touchEnabled: Boolean, uri: Uri? = store.state.focusedMedia?.uri) { + if (uri == null) return store.update { - val uri = it.focusedMedia?.uri ?: return@update it val data = it.getOrCreateVideoTrimData(uri) val clampedStartTime = max(startTimeUs, 0)