Refact: inject ThumbnailExtractor

This commit is contained in:
Benoit Marty 2021-05-26 13:55:29 +02:00 committed by Benoit Marty
parent cd66e62454
commit 898c8cc3a7
3 changed files with 11 additions and 6 deletions

View file

@ -23,8 +23,11 @@ import org.matrix.android.sdk.api.session.content.ContentAttachmentData
import org.matrix.android.sdk.api.util.MimeTypes import org.matrix.android.sdk.api.util.MimeTypes
import timber.log.Timber import timber.log.Timber
import java.io.ByteArrayOutputStream import java.io.ByteArrayOutputStream
import javax.inject.Inject
internal object ThumbnailExtractor { internal class ThumbnailExtractor @Inject constructor(
private val context: Context
) {
class ThumbnailData( class ThumbnailData(
val width: Int, val width: Int,
@ -34,15 +37,15 @@ internal object ThumbnailExtractor {
val mimeType: String val mimeType: String
) )
fun extractThumbnail(context: Context, attachment: ContentAttachmentData): ThumbnailData? { fun extractThumbnail(attachment: ContentAttachmentData): ThumbnailData? {
return if (attachment.type == ContentAttachmentData.Type.VIDEO) { return if (attachment.type == ContentAttachmentData.Type.VIDEO) {
extractVideoThumbnail(context, attachment) extractVideoThumbnail(attachment)
} else { } else {
null null
} }
} }
private fun extractVideoThumbnail(context: Context, attachment: ContentAttachmentData): ThumbnailData? { private fun extractVideoThumbnail(attachment: ContentAttachmentData): ThumbnailData? {
var thumbnailData: ThumbnailData? = null var thumbnailData: ThumbnailData? = null
val mediaMetadataRetriever = MediaMetadataRetriever() val mediaMetadataRetriever = MediaMetadataRetriever()
try { try {

View file

@ -82,6 +82,7 @@ internal class UploadContentWorker(val context: Context, params: WorkerParameter
@Inject lateinit var cancelSendTracker: CancelSendTracker @Inject lateinit var cancelSendTracker: CancelSendTracker
@Inject lateinit var imageCompressor: ImageCompressor @Inject lateinit var imageCompressor: ImageCompressor
@Inject lateinit var videoCompressor: VideoCompressor @Inject lateinit var videoCompressor: VideoCompressor
@Inject lateinit var thumbnailExtractor: ThumbnailExtractor
@Inject lateinit var localEchoRepository: LocalEchoRepository @Inject lateinit var localEchoRepository: LocalEchoRepository
@Inject lateinit var temporaryFileCreator: TemporaryFileCreator @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 * If appropriate, it will create and upload a thumbnail
*/ */
private suspend fun dealWithThumbnail(params: Params): UploadThumbnailResult? { private suspend fun dealWithThumbnail(params: Params): UploadThumbnailResult? {
return ThumbnailExtractor.extractThumbnail(context, params.attachment) return thumbnailExtractor.extractThumbnail(params.attachment)
?.let { thumbnailData -> ?.let { thumbnailData ->
val thumbnailProgressListener = object : ProgressRequestBody.Listener { val thumbnailProgressListener = object : ProgressRequestBody.Listener {
override fun onProgress(current: Long, total: Long) { override fun onProgress(current: Long, total: Long) {

View file

@ -73,6 +73,7 @@ internal class LocalEchoEventFactory @Inject constructor(
@UserId private val userId: String, @UserId private val userId: String,
private val markdownParser: MarkdownParser, private val markdownParser: MarkdownParser,
private val textPillsUtils: TextPillsUtils, private val textPillsUtils: TextPillsUtils,
private val thumbnailExtractor: ThumbnailExtractor,
private val localEchoRepository: LocalEchoRepository, private val localEchoRepository: LocalEchoRepository,
private val permalinkFactory: PermalinkFactory private val permalinkFactory: PermalinkFactory
) { ) {
@ -261,7 +262,7 @@ internal class LocalEchoEventFactory @Inject constructor(
val width = firstFrame?.width ?: 0 val width = firstFrame?.width ?: 0
mediaDataRetriever.release() mediaDataRetriever.release()
val thumbnailInfo = ThumbnailExtractor.extractThumbnail(context, attachment)?.let { val thumbnailInfo = thumbnailExtractor.extractThumbnail(attachment)?.let {
ThumbnailInfo( ThumbnailInfo(
width = it.width, width = it.width,
height = it.height, height = it.height,