mirror of
https://github.com/nextcloud/talk-android
synced 2025-06-20 03:59:35 +01:00
Merge pull request #4677 from nextcloud/backport/4667/stable-21.0
[stable-21.0] Bugfix/4492/fix missing users in UI
This commit is contained in:
commit
cc44a62b66
@ -7,6 +7,7 @@
|
|||||||
*/
|
*/
|
||||||
package com.nextcloud.talk.data.user
|
package com.nextcloud.talk.data.user
|
||||||
|
|
||||||
|
import android.util.Log
|
||||||
import com.nextcloud.talk.data.user.model.User
|
import com.nextcloud.talk.data.user.model.User
|
||||||
import com.nextcloud.talk.models.json.push.PushConfigurationState
|
import com.nextcloud.talk.models.json.push.PushConfigurationState
|
||||||
import io.reactivex.Maybe
|
import io.reactivex.Maybe
|
||||||
@ -17,7 +18,12 @@ import io.reactivex.Single
|
|||||||
class UsersRepositoryImpl(private val usersDao: UsersDao) : UsersRepository {
|
class UsersRepositoryImpl(private val usersDao: UsersDao) : UsersRepository {
|
||||||
|
|
||||||
override fun getActiveUser(): Maybe<User> {
|
override fun getActiveUser(): Maybe<User> {
|
||||||
return usersDao.getActiveUser().map { UserMapper.toModel(it) }
|
val user = usersDao.getActiveUser()
|
||||||
|
.map {
|
||||||
|
setUserAsActiveWithId(it.id)
|
||||||
|
UserMapper.toModel(it)!!
|
||||||
|
}
|
||||||
|
return user
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getActiveUserObservable(): Observable<User> {
|
override fun getActiveUserObservable(): Observable<User> {
|
||||||
@ -62,6 +68,7 @@ class UsersRepositoryImpl(private val usersDao: UsersDao) : UsersRepository {
|
|||||||
|
|
||||||
override fun setUserAsActiveWithId(id: Long): Single<Boolean> {
|
override fun setUserAsActiveWithId(id: Long): Single<Boolean> {
|
||||||
val amountUpdated = usersDao.setUserAsActiveWithId(id)
|
val amountUpdated = usersDao.setUserAsActiveWithId(id)
|
||||||
|
Log.d(TAG, "setUserAsActiveWithId. amountUpdated: $amountUpdated")
|
||||||
return if (amountUpdated > 0) {
|
return if (amountUpdated > 0) {
|
||||||
Single.just(true)
|
Single.just(true)
|
||||||
} else {
|
} else {
|
||||||
@ -76,4 +83,8 @@ class UsersRepositoryImpl(private val usersDao: UsersDao) : UsersRepository {
|
|||||||
override fun updatePushState(id: Long, state: PushConfigurationState): Single<Int> {
|
override fun updatePushState(id: Long, state: PushConfigurationState): Single<Int> {
|
||||||
return usersDao.updatePushState(id, state)
|
return usersDao.updatePushState(id, state)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
private val TAG = UsersRepositoryImpl::class.simpleName
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
package com.nextcloud.talk.users
|
package com.nextcloud.talk.users
|
||||||
|
|
||||||
import android.text.TextUtils
|
import android.text.TextUtils
|
||||||
|
import android.util.Log
|
||||||
import com.bluelinelabs.logansquare.LoganSquare
|
import com.bluelinelabs.logansquare.LoganSquare
|
||||||
import com.nextcloud.talk.data.user.UsersRepository
|
import com.nextcloud.talk.data.user.UsersRepository
|
||||||
import com.nextcloud.talk.data.user.model.User
|
import com.nextcloud.talk.data.user.model.User
|
||||||
@ -30,7 +31,7 @@ class UserManager internal constructor(private val userRepository: UsersReposito
|
|||||||
val currentUser: Maybe<User>
|
val currentUser: Maybe<User>
|
||||||
get() {
|
get() {
|
||||||
return userRepository.getActiveUser()
|
return userRepository.getActiveUser()
|
||||||
.switchIfEmpty(getAnyUserAndSetAsActive())
|
.switchIfEmpty(Maybe.defer { getAnyUserAndSetAsActive() })
|
||||||
}
|
}
|
||||||
|
|
||||||
val currentUserObservable: Observable<User>
|
val currentUserObservable: Observable<User>
|
||||||
@ -88,12 +89,11 @@ class UserManager internal constructor(private val userRepository: UsersReposito
|
|||||||
.flatMapMaybe {
|
.flatMapMaybe {
|
||||||
if (it.isNotEmpty()) {
|
if (it.isNotEmpty()) {
|
||||||
val user = it.first()
|
val user = it.first()
|
||||||
user.apply {
|
if (setUserAsActive(user).blockingGet()) {
|
||||||
current = true
|
userRepository.getActiveUser()
|
||||||
}.also { currentUser ->
|
} else {
|
||||||
userRepository.updateUser(currentUser)
|
Maybe.empty()
|
||||||
}
|
}
|
||||||
Maybe.just(user)
|
|
||||||
} else {
|
} else {
|
||||||
Maybe.empty()
|
Maybe.empty()
|
||||||
}
|
}
|
||||||
@ -123,6 +123,7 @@ class UserManager internal constructor(private val userRepository: UsersReposito
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun setUserAsActive(user: User): Single<Boolean> {
|
fun setUserAsActive(user: User): Single<Boolean> {
|
||||||
|
Log.d(TAG, "setUserAsActive:" + user.id!!)
|
||||||
return userRepository.setUserAsActiveWithId(user.id!!)
|
return userRepository.setUserAsActiveWithId(user.id!!)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user