WIP improvements during pair programming call

Signed-off-by: Álvaro Brey <alvaro.brey@nextcloud.com>
This commit is contained in:
Álvaro Brey 2022-06-23 17:33:19 +02:00 committed by Andy Scherzinger
parent 5881e5021c
commit afbec06ad3
No known key found for this signature in database
GPG Key ID: 6CADC7E3523C308B
6 changed files with 113 additions and 147 deletions

View File

@ -143,7 +143,7 @@ public class LoginIT {
onView(withId(R.id.user_name)).check(matches(withText("User One")));
activityScenario.onActivity(activity -> {
assertEquals(loginName, Objects.requireNonNull(activity.userManager.getCurrentUser()).getUserId());
assertEquals(loginName, Objects.requireNonNull(activity.userManager.getCurrentUser().blockingFirst()).getUserId());
});
}
}

View File

@ -262,7 +262,7 @@ class MainActivity : BaseActivity(), ActionBarProvider {
val user = userId.substringBeforeLast("@")
val baseUrl = userId.substringAfterLast("@")
if (userManager.currentUser?.baseUrl?.endsWith(baseUrl) == true) {
if (userManager.currentUser.blockingFirst()?.baseUrl?.endsWith(baseUrl) == true) {
startConversation(user)
} else {
Snackbar.make(
@ -279,7 +279,7 @@ class MainActivity : BaseActivity(), ActionBarProvider {
private fun startConversation(userId: String) {
val roomType = "1"
val currentUser = userManager.currentUser
val currentUser = userManager.currentUser.blockingFirst()
val apiVersion = ApiUtils.getConversationApiVersion(currentUser, intArrayOf(ApiUtils.APIv4, 1))
val credentials = ApiUtils.getCredentials(currentUser?.username, currentUser?.token)

View File

@ -98,7 +98,6 @@ import io.reactivex.Observer
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.Disposable
import io.reactivex.schedulers.Schedulers
import kotlinx.coroutines.runBlocking
import net.orange_box.storebox.listeners.OnPreferenceValueChangedListener
import okhttp3.MediaType.Companion.toMediaTypeOrNull
import okhttp3.RequestBody
@ -140,7 +139,7 @@ class SettingsController : NewBaseController(R.layout.controller_settings) {
resources!!.getString(R.string.nc_settings)
private fun getCurrentUser() {
currentUser = currentUserProvider.currentUser
currentUser = currentUserProvider.currentUser.firstOrError().blockingGet()
credentials = ApiUtils.getCredentials(currentUser!!.username, currentUser!!.token)
}
@ -151,7 +150,6 @@ class SettingsController : NewBaseController(R.layout.controller_settings) {
ViewCompat.setTransitionName((binding.avatarImage), "userAvatar.transitionTag")
runBlocking {
getCurrentUser()
if (saveStateHandler == null) {
@ -189,7 +187,6 @@ class SettingsController : NewBaseController(R.layout.controller_settings) {
setupPhoneBookIntegration()
setupClientCertView()
}
Log.i(TAG, "Current user: " + currentUser?.displayName)
}
@ -472,10 +469,6 @@ class SettingsController : NewBaseController(R.layout.controller_settings) {
actionBar?.show()
dispose(null)
runBlocking {
getCurrentUser()
binding.settingsVersion.setOnClickListener {
sendLogs()
}
@ -538,7 +531,6 @@ class SettingsController : NewBaseController(R.layout.controller_settings) {
)
}
}
}
private fun setupProxyTypeSettings() {
if (("No proxy" == appPreferences!!.proxyType) || appPreferences!!.proxyType == null) {

View File

@ -74,6 +74,7 @@ abstract class UsersDao {
@Query("SELECT * FROM User where id = :id")
abstract fun getUserWithId(id: Long): Observable<UserNgEntity?>
// TODO remove this one, duplicated
@Query("SELECT * FROM User where id = :id")
abstract fun getUserWithIdLiveData(id: Long): Observable<UserNgEntity?>

View File

@ -74,9 +74,9 @@ class UserManager internal constructor(private val userRepository: UsersReposito
return Observable.just(result)
}
override val currentUser: UserNgEntity?
override val currentUser: Observable<UserNgEntity?>
get() {
return userRepository.getActiveUserSynchronously()
return userRepository.getActiveUser()
}
fun deleteUser(internalId: Long) {
@ -245,62 +245,34 @@ class UserManager internal constructor(private val userRepository: UsersReposito
username: String?,
userAttributes: UserAttributes,
): Observable<UserNgEntity?> {
var user: UserNgEntity? = null
if (userAttributes.id == null && username != null && userAttributes.serverUrl != null) {
val userObservable = if (userAttributes.id == null && username != null && userAttributes.serverUrl != null) {
userRepository.getUserWithUsernameAndServer(username, userAttributes.serverUrl)
.subscribe(object : Observer<UserNgEntity?> {
override fun onSubscribe(d: Disposable) {
// unused atm
}
override fun onNext(userEntity: UserNgEntity) {
user = userEntity
}
override fun onError(e: Throwable) {
// unused atm
}
override fun onComplete() {
// unused atm
}
})
} else if (userAttributes.id != null) {
userRepository.getUserWithId(userAttributes.id)
.subscribe(object : Observer<UserNgEntity?> {
override fun onSubscribe(d: Disposable) {
// unused atm
} else {
Observable.just(null)
}
override fun onNext(userEntity: UserNgEntity) {
user = userEntity
}
override fun onError(e: Throwable) {
// unused atm
}
override fun onComplete() {
// unused atm
}
})
}
if (user == null) {
user = createUser(
return userObservable
.map { user: UserNgEntity? ->
val userEntity = when (user) {
null -> createUser(
username,
userAttributes
)
} else {
else -> {
updateUserData(
user!!,
user,
userAttributes
)
user
}
}
userRepository.insertUser(userEntity)
}.flatMap { id ->
userRepository.getUserWithIdLiveData(id)
}
userRepository.insertUser(user!!)
return userRepository.getUserWithIdLiveData(user!!.id)
}
fun getUserWithUsernameAndServer(username: String, server: String): Observable<UserNgEntity?> {

View File

@ -21,7 +21,8 @@
package com.nextcloud.talk.utils.database.user
import com.nextcloud.talk.data.user.model.UserNgEntity
import io.reactivex.Observable
interface CurrentUserProviderNew {
val currentUser: UserNgEntity?
val currentUser: Observable<UserNgEntity?>
}