From 1e398e01cdbfd6e6ff8aa938dfc79ccab5c9b456 Mon Sep 17 00:00:00 2001 From: Taras <tarassmakula@gmail.com> Date: Sat, 26 Feb 2022 01:11:04 +0200 Subject: [PATCH] Add matrix session extensions --- .../extensions/MatrixSessionExtensions.kt | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 app/src/main/java/com/futo/circles/extensions/MatrixSessionExtensions.kt 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 000000000..fcb049b5e --- /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 + ) + } +} -- GitLab