From 818f225ad630d5db65391e13fe512d5e1a3a7ab1 Mon Sep 17 00:00:00 2001
From: Taras Smakula <tarassmakula@gmail.com>
Date: Mon, 19 Dec 2022 14:36:58 +0200
Subject: [PATCH] Add switchToSessionWithId logic

---
 .../matrix/android/sdk/api/auth/AuthenticationService.kt | 5 +++++
 .../org/matrix/android/sdk/internal/SessionManager.kt    | 9 +++++++--
 .../sdk/internal/auth/DefaultAuthenticationService.kt    | 5 +++++
 3 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/auth/AuthenticationService.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/auth/AuthenticationService.kt
index 57764223..05fd2b6f 100644
--- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/auth/AuthenticationService.kt
+++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/auth/AuthenticationService.kt
@@ -152,6 +152,11 @@ interface AuthenticationService {
             deviceId: String? = null
     ): Session
 
+    /**
+     * Added for switch user
+     */
+    suspend fun switchToSessionWithId(id: String)
+
     /**
      * Added for switch user
      */
diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/SessionManager.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/SessionManager.kt
index 997a8f36..52b76dc3 100644
--- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/SessionManager.kt
+++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/SessionManager.kt
@@ -74,10 +74,15 @@ internal class SessionManager @Inject constructor(
     }
 
     //Added for switch user
-    fun getAllSessionParams(): List<SessionParams> {
-        return sessionParamsStore.getAll()
+    suspend fun setActiveSessionAsLast(sessionId: String) {
+        val sessionParams = sessionParamsStore.get(sessionId) ?: return
+        sessionParamsStore.delete(sessionId)
+        sessionParamsStore.save(sessionParams)
     }
 
+    //Added for switch user
+    fun getAllSessionParams(): List<SessionParams> = sessionParamsStore.getAll()
+
     //Added for switch user
     suspend fun removeSession(sessionId: String) {
         sessionComponents.remove(sessionId)
diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/DefaultAuthenticationService.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/DefaultAuthenticationService.kt
index dffe35b1..bb23b0c9 100644
--- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/DefaultAuthenticationService.kt
+++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/DefaultAuthenticationService.kt
@@ -487,6 +487,11 @@ internal class DefaultAuthenticationService @Inject constructor(
         }
     }
 
+    //Added for switch user
+    override suspend fun switchToSessionWithId(id: String) {
+        sessionManager.setActiveSessionAsLast(id)
+    }
+
     //Added for switch user
     override fun getAllAuthSessionsParams(): List<SessionParams> = sessionManager.getAllSessionParams()
 
-- 
GitLab