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