Refact: inject ThumbnailExtractor
This commit is contained in:
parent
cd66e62454
commit
898c8cc3a7
|
@ -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 {
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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,
|
||||||
|
|
Loading…
Reference in New Issue