diff --git a/app/src/main/java/com/nextcloud/talk/data/user/UsersRepositoryImpl.kt b/app/src/main/java/com/nextcloud/talk/data/user/UsersRepositoryImpl.kt index 5578607636..66b51ee446 100644 --- a/app/src/main/java/com/nextcloud/talk/data/user/UsersRepositoryImpl.kt +++ b/app/src/main/java/com/nextcloud/talk/data/user/UsersRepositoryImpl.kt @@ -7,6 +7,7 @@ */ package com.nextcloud.talk.data.user +import android.util.Log import com.nextcloud.talk.data.user.model.User import com.nextcloud.talk.models.json.push.PushConfigurationState import io.reactivex.Maybe @@ -17,7 +18,12 @@ import io.reactivex.Single class UsersRepositoryImpl(private val usersDao: UsersDao) : UsersRepository { override fun getActiveUser(): Maybe { - return usersDao.getActiveUser().map { UserMapper.toModel(it) } + val user = usersDao.getActiveUser() + .map { + setUserAsActiveWithId(it.id) + UserMapper.toModel(it)!! + } + return user } override fun getActiveUserObservable(): Observable { @@ -62,6 +68,7 @@ class UsersRepositoryImpl(private val usersDao: UsersDao) : UsersRepository { override fun setUserAsActiveWithId(id: Long): Single { val amountUpdated = usersDao.setUserAsActiveWithId(id) + Log.d(TAG, "setUserAsActiveWithId. amountUpdated: $amountUpdated") return if (amountUpdated > 0) { Single.just(true) } else { @@ -76,4 +83,8 @@ class UsersRepositoryImpl(private val usersDao: UsersDao) : UsersRepository { override fun updatePushState(id: Long, state: PushConfigurationState): Single { return usersDao.updatePushState(id, state) } + + companion object { + private val TAG = UsersRepositoryImpl::class.simpleName + } } 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 9f52614927..8df87671eb 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 @@ -30,7 +31,7 @@ class UserManager internal constructor(private val userRepository: UsersReposito val currentUser: Maybe get() { return userRepository.getActiveUser() - .switchIfEmpty(getAnyUserAndSetAsActive()) + .switchIfEmpty(Maybe.defer { getAnyUserAndSetAsActive() }) } val currentUserObservable: Observable @@ -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!!) }