mirror of
https://github.com/nextcloud/talk-android
synced 2025-06-19 11:39:42 +01:00
Fix user manager db result processing
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
This commit is contained in:
parent
6e05056b2e
commit
9bdd0c7a4e
@ -328,7 +328,7 @@ class WebViewLoginController(args: Bundle? = null) : NewBaseController(
|
||||
val currentUser = userManager.currentUser.blockingGet()
|
||||
var messageType: ApplicationWideMessageHolder.MessageType? = null
|
||||
if (!isPasswordUpdate &&
|
||||
userManager.getIfUserWithUsernameAndServer(loginData.username!!, baseUrl!!).blockingGet()
|
||||
userManager.checkIfUserExists(loginData.username!!, baseUrl!!).blockingGet()
|
||||
) {
|
||||
messageType = ApplicationWideMessageHolder.MessageType.ACCOUNT_UPDATED_NOT_ADDED
|
||||
}
|
||||
|
@ -22,7 +22,6 @@
|
||||
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
|
||||
@ -47,15 +46,16 @@ class UserManager internal constructor(private val userRepository: UsersReposito
|
||||
val results = userRepository.getUsersNotScheduledForDeletion()
|
||||
|
||||
// TODO needs to return Empty in case no user was found (and set active)
|
||||
return results.map { users ->
|
||||
users
|
||||
.firstOrNull()
|
||||
?.apply {
|
||||
current = true
|
||||
}.also { user ->
|
||||
userRepository.updateUser(user!!)
|
||||
}
|
||||
}
|
||||
return results
|
||||
.map { users ->
|
||||
users
|
||||
.firstOrNull()
|
||||
?.apply {
|
||||
current = true
|
||||
}.also { user ->
|
||||
userRepository.updateUser(user!!)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override val currentUser: Maybe<User>
|
||||
@ -91,45 +91,36 @@ class UserManager internal constructor(private val userRepository: UsersReposito
|
||||
}
|
||||
}
|
||||
|
||||
fun checkIfUserIsScheduledForDeletion(username: String, server: String): Maybe<Boolean> {
|
||||
fun checkIfUserIsScheduledForDeletion(username: String, server: String): Single<Boolean> {
|
||||
return userRepository
|
||||
.getUserWithUsernameAndServer(username, server)
|
||||
.switchIfEmpty(Maybe.empty())
|
||||
.map { user: User? ->
|
||||
when (user) {
|
||||
null -> FALSE
|
||||
else -> user.scheduledForDeletion
|
||||
}
|
||||
}
|
||||
.map { it.scheduledForDeletion }
|
||||
.switchIfEmpty(Single.just(false))
|
||||
}
|
||||
|
||||
fun getUserWithInternalId(id: Long): Maybe<User> {
|
||||
return userRepository.getUserWithIdNotScheduledForDeletion(id)
|
||||
}
|
||||
|
||||
fun getIfUserWithUsernameAndServer(username: String, server: String): Maybe<Boolean> {
|
||||
fun checkIfUserExists(username: String, server: String): Single<Boolean> {
|
||||
return userRepository
|
||||
.getUserWithUsernameAndServer(username, server)
|
||||
.map { user: User? ->
|
||||
when (user) {
|
||||
null -> FALSE
|
||||
else -> TRUE
|
||||
}
|
||||
}
|
||||
.map { true }
|
||||
.switchIfEmpty(Single.just(false))
|
||||
}
|
||||
|
||||
fun scheduleUserForDeletionWithId(id: Long): Single<Boolean> {
|
||||
// TODO needs to return false in case getAnyUserAndSetAsActive doesn't return a user
|
||||
// or getUserWithId(id) doesn't return a user
|
||||
return userRepository.getUserWithId(id).map { user ->
|
||||
user.scheduledForDeletion = true
|
||||
user.current = false
|
||||
userRepository.updateUser(user)
|
||||
}
|
||||
return userRepository.getUserWithId(id)
|
||||
.map { user ->
|
||||
user.scheduledForDeletion = true
|
||||
user.current = false
|
||||
userRepository.updateUser(user)
|
||||
}
|
||||
.toSingle()
|
||||
.flatMap {
|
||||
getAnyUserAndSetAsActive()
|
||||
}.map { TRUE }
|
||||
.flatMap { getAnyUserAndSetAsActive() }
|
||||
.map { true }
|
||||
}
|
||||
|
||||
fun updateExternalSignalingServer(id: Long, externalSignalingServer: ExternalSignalingServer): Single<Int> {
|
||||
|
Loading…
Reference in New Issue
Block a user