diff --git a/app/src/main/java/com/futo/circles/extensions/MatrixSessionExtensions.kt b/app/src/main/java/com/futo/circles/extensions/MatrixSessionExtensions.kt new file mode 100644 index 0000000000000000000000000000000000000000..fcb049b5eb6b76769d4f5ffe6567a5a5ff09d41e --- /dev/null +++ b/app/src/main/java/com/futo/circles/extensions/MatrixSessionExtensions.kt @@ -0,0 +1,34 @@ +package com.futo.circles.extensions + +import com.bumptech.glide.request.target.Target +import com.futo.circles.provider.MatrixSessionProvider +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.SupervisorJob +import org.matrix.android.sdk.api.session.Session +import org.matrix.android.sdk.api.session.content.ContentUrlResolver + +private val sessionCoroutineScopes = HashMap<String, CoroutineScope>(1) + +val Session.coroutineScope: CoroutineScope + get() { + return synchronized(sessionCoroutineScopes) { + sessionCoroutineScopes.getOrPut(sessionId) { + CoroutineScope(SupervisorJob() + Dispatchers.Main.immediate) + } + } + } + +fun Session.resolveUrl(url: String?, size: Int = Target.SIZE_ORIGINAL): String? { + val resolver = MatrixSessionProvider.currentSession?.contentUrlResolver() + + return if (size == Target.SIZE_ORIGINAL) { + resolver?.resolveFullSize(url) + } else { + resolver?.resolveThumbnail( + url, + size, size, + ContentUrlResolver.ThumbnailMethod.SCALE + ) + } +}