From 898c8cc3a7493995a6c5b198a60dda955abbd14e Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 26 May 2021 13:55:29 +0200 Subject: [PATCH] Refact: inject ThumbnailExtractor --- .../internal/session/content/ThumbnailExtractor.kt | 11 +++++++---- .../internal/session/content/UploadContentWorker.kt | 3 ++- .../session/room/send/LocalEchoEventFactory.kt | 3 ++- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/content/ThumbnailExtractor.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/content/ThumbnailExtractor.kt index c28668a53e..fde3dd906c 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/content/ThumbnailExtractor.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/content/ThumbnailExtractor.kt @@ -23,8 +23,11 @@ import org.matrix.android.sdk.api.session.content.ContentAttachmentData import org.matrix.android.sdk.api.util.MimeTypes import timber.log.Timber import java.io.ByteArrayOutputStream +import javax.inject.Inject -internal object ThumbnailExtractor { +internal class ThumbnailExtractor @Inject constructor( + private val context: Context +) { class ThumbnailData( val width: Int, @@ -34,15 +37,15 @@ internal object ThumbnailExtractor { val mimeType: String ) - fun extractThumbnail(context: Context, attachment: ContentAttachmentData): ThumbnailData? { + fun extractThumbnail(attachment: ContentAttachmentData): ThumbnailData? { return if (attachment.type == ContentAttachmentData.Type.VIDEO) { - extractVideoThumbnail(context, attachment) + extractVideoThumbnail(attachment) } else { null } } - private fun extractVideoThumbnail(context: Context, attachment: ContentAttachmentData): ThumbnailData? { + private fun extractVideoThumbnail(attachment: ContentAttachmentData): ThumbnailData? { var thumbnailData: ThumbnailData? = null val mediaMetadataRetriever = MediaMetadataRetriever() try { diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/content/UploadContentWorker.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/content/UploadContentWorker.kt index 06cbf1ba90..237411db53 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/content/UploadContentWorker.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/content/UploadContentWorker.kt @@ -82,6 +82,7 @@ internal class UploadContentWorker(val context: Context, params: WorkerParameter @Inject lateinit var cancelSendTracker: CancelSendTracker @Inject lateinit var imageCompressor: ImageCompressor @Inject lateinit var videoCompressor: VideoCompressor + @Inject lateinit var thumbnailExtractor: ThumbnailExtractor @Inject lateinit var localEchoRepository: LocalEchoRepository @Inject lateinit var temporaryFileCreator: TemporaryFileCreator @@ -302,7 +303,7 @@ internal class UploadContentWorker(val context: Context, params: WorkerParameter * If appropriate, it will create and upload a thumbnail */ private suspend fun dealWithThumbnail(params: Params): UploadThumbnailResult? { - return ThumbnailExtractor.extractThumbnail(context, params.attachment) + return thumbnailExtractor.extractThumbnail(params.attachment) ?.let { thumbnailData -> val thumbnailProgressListener = object : ProgressRequestBody.Listener { override fun onProgress(current: Long, total: Long) { diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/send/LocalEchoEventFactory.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/send/LocalEchoEventFactory.kt index c1ad6205c3..f505b13b33 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/send/LocalEchoEventFactory.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/send/LocalEchoEventFactory.kt @@ -73,6 +73,7 @@ internal class LocalEchoEventFactory @Inject constructor( @UserId private val userId: String, private val markdownParser: MarkdownParser, private val textPillsUtils: TextPillsUtils, + private val thumbnailExtractor: ThumbnailExtractor, private val localEchoRepository: LocalEchoRepository, private val permalinkFactory: PermalinkFactory ) { @@ -261,7 +262,7 @@ internal class LocalEchoEventFactory @Inject constructor( val width = firstFrame?.width ?: 0 mediaDataRetriever.release() - val thumbnailInfo = ThumbnailExtractor.extractThumbnail(context, attachment)?.let { + val thumbnailInfo = thumbnailExtractor.extractThumbnail(attachment)?.let { ThumbnailInfo( width = it.width, height = it.height,