From 20c08903a2dae68ed2ef097a55d2a5e37627077c Mon Sep 17 00:00:00 2001 From: Marcel Hibbe Date: Tue, 28 Jan 2025 15:11:07 +0100 Subject: [PATCH] ensure that getAnyUserAndSetAsActive will set other users to current=false Before, getAnyUserAndSetAsActive did only set a random first user to current=true without to check if there is any other current user. So it was up to the calling function of getAnyUserAndSetAsActive to check this. I did not identify a scenario where the getAnyUserAndSetAsActive could cause to set multiple users to current, but anyway the new implementation might fix some scenario that i could not reproduce. Signed-off-by: Marcel Hibbe --- .../main/java/com/nextcloud/talk/users/UserManager.kt | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/users/UserManager.kt b/app/src/main/java/com/nextcloud/talk/users/UserManager.kt index 9f5261492..ec4de2853 100644 --- a/app/src/main/java/com/nextcloud/talk/users/UserManager.kt +++ b/app/src/main/java/com/nextcloud/talk/users/UserManager.kt @@ -8,6 +8,7 @@ package com.nextcloud.talk.users import android.text.TextUtils +import android.util.Log import com.bluelinelabs.logansquare.LoganSquare import com.nextcloud.talk.data.user.UsersRepository import com.nextcloud.talk.data.user.model.User @@ -88,12 +89,11 @@ class UserManager internal constructor(private val userRepository: UsersReposito .flatMapMaybe { if (it.isNotEmpty()) { val user = it.first() - user.apply { - current = true - }.also { currentUser -> - userRepository.updateUser(currentUser) + if (setUserAsActive(user).blockingGet()) { + userRepository.getActiveUser() + } else { + Maybe.empty() } - Maybe.just(user) } else { Maybe.empty() } @@ -123,6 +123,7 @@ class UserManager internal constructor(private val userRepository: UsersReposito } fun setUserAsActive(user: User): Single { + Log.d(TAG, "setUserAsActive:" + user.id!!) return userRepository.setUserAsActiveWithId(user.id!!) }