mirror of
https://github.com/nextcloud/talk-android
synced 2025-06-19 19:49:33 +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()
|
val currentUser = userManager.currentUser.blockingGet()
|
||||||
var messageType: ApplicationWideMessageHolder.MessageType? = null
|
var messageType: ApplicationWideMessageHolder.MessageType? = null
|
||||||
if (!isPasswordUpdate &&
|
if (!isPasswordUpdate &&
|
||||||
userManager.getIfUserWithUsernameAndServer(loginData.username!!, baseUrl!!).blockingGet()
|
userManager.checkIfUserExists(loginData.username!!, baseUrl!!).blockingGet()
|
||||||
) {
|
) {
|
||||||
messageType = ApplicationWideMessageHolder.MessageType.ACCOUNT_UPDATED_NOT_ADDED
|
messageType = ApplicationWideMessageHolder.MessageType.ACCOUNT_UPDATED_NOT_ADDED
|
||||||
}
|
}
|
||||||
|
@ -22,7 +22,6 @@
|
|||||||
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
|
||||||
@ -47,15 +46,16 @@ class UserManager internal constructor(private val userRepository: UsersReposito
|
|||||||
val results = userRepository.getUsersNotScheduledForDeletion()
|
val results = userRepository.getUsersNotScheduledForDeletion()
|
||||||
|
|
||||||
// TODO needs to return Empty in case no user was found (and set active)
|
// TODO needs to return Empty in case no user was found (and set active)
|
||||||
return results.map { users ->
|
return results
|
||||||
users
|
.map { users ->
|
||||||
.firstOrNull()
|
users
|
||||||
?.apply {
|
.firstOrNull()
|
||||||
current = true
|
?.apply {
|
||||||
}.also { user ->
|
current = true
|
||||||
userRepository.updateUser(user!!)
|
}.also { user ->
|
||||||
}
|
userRepository.updateUser(user!!)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override val currentUser: Maybe<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
|
return userRepository
|
||||||
.getUserWithUsernameAndServer(username, server)
|
.getUserWithUsernameAndServer(username, server)
|
||||||
.switchIfEmpty(Maybe.empty())
|
.map { it.scheduledForDeletion }
|
||||||
.map { user: User? ->
|
.switchIfEmpty(Single.just(false))
|
||||||
when (user) {
|
|
||||||
null -> FALSE
|
|
||||||
else -> user.scheduledForDeletion
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getUserWithInternalId(id: Long): Maybe<User> {
|
fun getUserWithInternalId(id: Long): Maybe<User> {
|
||||||
return userRepository.getUserWithIdNotScheduledForDeletion(id)
|
return userRepository.getUserWithIdNotScheduledForDeletion(id)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getIfUserWithUsernameAndServer(username: String, server: String): Maybe<Boolean> {
|
fun checkIfUserExists(username: String, server: String): Single<Boolean> {
|
||||||
return userRepository
|
return userRepository
|
||||||
.getUserWithUsernameAndServer(username, server)
|
.getUserWithUsernameAndServer(username, server)
|
||||||
.map { user: User? ->
|
.map { true }
|
||||||
when (user) {
|
.switchIfEmpty(Single.just(false))
|
||||||
null -> FALSE
|
|
||||||
else -> TRUE
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun scheduleUserForDeletionWithId(id: Long): Single<Boolean> {
|
fun scheduleUserForDeletionWithId(id: Long): Single<Boolean> {
|
||||||
// TODO needs to return false in case getAnyUserAndSetAsActive doesn't return a user
|
// TODO needs to return false in case getAnyUserAndSetAsActive doesn't return a user
|
||||||
// or getUserWithId(id) doesn't return a user
|
// or getUserWithId(id) doesn't return a user
|
||||||
return userRepository.getUserWithId(id).map { user ->
|
return userRepository.getUserWithId(id)
|
||||||
user.scheduledForDeletion = true
|
.map { user ->
|
||||||
user.current = false
|
user.scheduledForDeletion = true
|
||||||
userRepository.updateUser(user)
|
user.current = false
|
||||||
}
|
userRepository.updateUser(user)
|
||||||
|
}
|
||||||
.toSingle()
|
.toSingle()
|
||||||
.flatMap {
|
.flatMap { getAnyUserAndSetAsActive() }
|
||||||
getAnyUserAndSetAsActive()
|
.map { true }
|
||||||
}.map { TRUE }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun updateExternalSignalingServer(id: Long, externalSignalingServer: ExternalSignalingServer): Single<Int> {
|
fun updateExternalSignalingServer(id: Long, externalSignalingServer: ExternalSignalingServer): Single<Int> {
|
||||||
|
Loading…
Reference in New Issue
Block a user