mirror of
https://github.com/nextcloud/talk-android
synced 2025-03-06 14:27:24 +00:00
WIP improvements during pair programming call
Signed-off-by: Álvaro Brey <alvaro.brey@nextcloud.com>
This commit is contained in:
parent
5881e5021c
commit
afbec06ad3
@ -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());
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -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)
|
||||
|
@ -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,46 +150,44 @@ class SettingsController : NewBaseController(R.layout.controller_settings) {
|
||||
|
||||
ViewCompat.setTransitionName((binding.avatarImage), "userAvatar.transitionTag")
|
||||
|
||||
runBlocking {
|
||||
getCurrentUser()
|
||||
getCurrentUser()
|
||||
|
||||
if (saveStateHandler == null) {
|
||||
saveStateHandler = LovelySaveStateHandler()
|
||||
}
|
||||
|
||||
registerChangeListeners()
|
||||
|
||||
setupSettingsScreen()
|
||||
setupLicenceSetting()
|
||||
|
||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
|
||||
binding.settingsIncognitoKeyboard.visibility = View.GONE
|
||||
}
|
||||
|
||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
|
||||
binding.settingsScreenLock.visibility = View.GONE
|
||||
binding.settingsScreenLockTimeout.visibility = View.GONE
|
||||
} else {
|
||||
binding.settingsScreenLock.setSummary(
|
||||
String.format(
|
||||
Locale.getDefault(),
|
||||
resources!!.getString(R.string.nc_settings_screen_lock_desc),
|
||||
resources!!.getString(R.string.nc_app_product_name)
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
setupPrivacyUrl()
|
||||
setupSourceCodeUrl()
|
||||
binding.settingsVersion.setSummary("v" + BuildConfig.VERSION_NAME)
|
||||
|
||||
setupSoundSettings()
|
||||
|
||||
setupPhoneBookIntegration()
|
||||
|
||||
setupClientCertView()
|
||||
if (saveStateHandler == null) {
|
||||
saveStateHandler = LovelySaveStateHandler()
|
||||
}
|
||||
|
||||
registerChangeListeners()
|
||||
|
||||
setupSettingsScreen()
|
||||
setupLicenceSetting()
|
||||
|
||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
|
||||
binding.settingsIncognitoKeyboard.visibility = View.GONE
|
||||
}
|
||||
|
||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
|
||||
binding.settingsScreenLock.visibility = View.GONE
|
||||
binding.settingsScreenLockTimeout.visibility = View.GONE
|
||||
} else {
|
||||
binding.settingsScreenLock.setSummary(
|
||||
String.format(
|
||||
Locale.getDefault(),
|
||||
resources!!.getString(R.string.nc_settings_screen_lock_desc),
|
||||
resources!!.getString(R.string.nc_app_product_name)
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
setupPrivacyUrl()
|
||||
setupSourceCodeUrl()
|
||||
binding.settingsVersion.setSummary("v" + BuildConfig.VERSION_NAME)
|
||||
|
||||
setupSoundSettings()
|
||||
|
||||
setupPhoneBookIntegration()
|
||||
|
||||
setupClientCertView()
|
||||
|
||||
Log.i(TAG, "Current user: " + currentUser?.displayName)
|
||||
}
|
||||
|
||||
@ -472,72 +469,67 @@ class SettingsController : NewBaseController(R.layout.controller_settings) {
|
||||
actionBar?.show()
|
||||
dispose(null)
|
||||
|
||||
runBlocking {
|
||||
binding.settingsVersion.setOnClickListener {
|
||||
sendLogs()
|
||||
}
|
||||
|
||||
getCurrentUser()
|
||||
if (!TextUtils.isEmpty(currentUser!!.clientCertificate)) {
|
||||
binding.settingsClientCert.setTitle(R.string.nc_client_cert_change)
|
||||
} else {
|
||||
binding.settingsClientCert.setTitle(R.string.nc_client_cert_setup)
|
||||
}
|
||||
|
||||
binding.settingsVersion.setOnClickListener {
|
||||
sendLogs()
|
||||
}
|
||||
setupCheckables()
|
||||
setupScreenLockSetting()
|
||||
|
||||
if (!TextUtils.isEmpty(currentUser!!.clientCertificate)) {
|
||||
binding.settingsClientCert.setTitle(R.string.nc_client_cert_change)
|
||||
} else {
|
||||
binding.settingsClientCert.setTitle(R.string.nc_client_cert_setup)
|
||||
}
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
binding.settingsNotificationsCategory.setTitle(
|
||||
resources!!.getString(R.string.nc_settings_notification_sounds_post_oreo)
|
||||
)
|
||||
}
|
||||
|
||||
setupCheckables()
|
||||
setupScreenLockSetting()
|
||||
val callRingtoneUri = getCallRingtoneUri(view.context, (appPreferences)!!)
|
||||
binding.settingsCallSound.setSummary(getRingtoneName(view.context, callRingtoneUri))
|
||||
val messageRingtoneUri = getMessageRingtoneUri(view.context, (appPreferences)!!)
|
||||
binding.settingsMessageSound.setSummary(getRingtoneName(view.context, messageRingtoneUri))
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
binding.settingsNotificationsCategory.setTitle(
|
||||
resources!!.getString(R.string.nc_settings_notification_sounds_post_oreo)
|
||||
setupProxyTypeSettings()
|
||||
setupProxyCredentialSettings()
|
||||
|
||||
if (currentUser != null) {
|
||||
binding.baseUrlText.text = Uri.parse(currentUser!!.baseUrl).host
|
||||
setupServerAgeWarning()
|
||||
|
||||
binding.settingsReauthorize.addPreferenceClickListener {
|
||||
router.pushController(
|
||||
RouterTransaction.with(WebViewLoginController(currentUser!!.baseUrl, true))
|
||||
.pushChangeHandler(VerticalChangeHandler())
|
||||
.popChangeHandler(VerticalChangeHandler())
|
||||
)
|
||||
}
|
||||
|
||||
val callRingtoneUri = getCallRingtoneUri(view.context, (appPreferences)!!)
|
||||
binding.settingsCallSound.setSummary(getRingtoneName(view.context, callRingtoneUri))
|
||||
val messageRingtoneUri = getMessageRingtoneUri(view.context, (appPreferences)!!)
|
||||
binding.settingsMessageSound.setSummary(getRingtoneName(view.context, messageRingtoneUri))
|
||||
|
||||
setupProxyTypeSettings()
|
||||
setupProxyCredentialSettings()
|
||||
|
||||
if (currentUser != null) {
|
||||
binding.baseUrlText.text = Uri.parse(currentUser!!.baseUrl).host
|
||||
setupServerAgeWarning()
|
||||
|
||||
binding.settingsReauthorize.addPreferenceClickListener {
|
||||
router.pushController(
|
||||
RouterTransaction.with(WebViewLoginController(currentUser!!.baseUrl, true))
|
||||
.pushChangeHandler(VerticalChangeHandler())
|
||||
.popChangeHandler(VerticalChangeHandler())
|
||||
)
|
||||
}
|
||||
|
||||
if (currentUser!!.displayName != null) {
|
||||
binding.displayNameText.text = currentUser!!.displayName
|
||||
}
|
||||
DisplayUtils.loadAvatarImage(currentUser, binding.avatarImage, false)
|
||||
|
||||
setupProfileQueryDisposable()
|
||||
|
||||
binding.settingsRemoveAccount.addPreferenceClickListener {
|
||||
showLovelyDialog(ID_REMOVE_ACCOUNT_WARNING_DIALOG, null)
|
||||
}
|
||||
if (currentUser!!.displayName != null) {
|
||||
binding.displayNameText.text = currentUser!!.displayName
|
||||
}
|
||||
setupMessageView()
|
||||
DisplayUtils.loadAvatarImage(currentUser, binding.avatarImage, false)
|
||||
|
||||
binding.avatarContainer.setOnClickListener {
|
||||
router
|
||||
.pushController(
|
||||
RouterTransaction.with(ProfileController())
|
||||
.pushChangeHandler(HorizontalChangeHandler())
|
||||
.popChangeHandler(HorizontalChangeHandler())
|
||||
setupProfileQueryDisposable()
|
||||
|
||||
)
|
||||
binding.settingsRemoveAccount.addPreferenceClickListener {
|
||||
showLovelyDialog(ID_REMOVE_ACCOUNT_WARNING_DIALOG, null)
|
||||
}
|
||||
}
|
||||
setupMessageView()
|
||||
|
||||
binding.avatarContainer.setOnClickListener {
|
||||
router
|
||||
.pushController(
|
||||
RouterTransaction.with(ProfileController())
|
||||
.pushChangeHandler(HorizontalChangeHandler())
|
||||
.popChangeHandler(HorizontalChangeHandler())
|
||||
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
private fun setupProxyTypeSettings() {
|
||||
|
@ -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?>
|
||||
|
||||
|
@ -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
|
||||
}
|
||||
|
||||
override fun onNext(userEntity: UserNgEntity) {
|
||||
user = userEntity
|
||||
}
|
||||
|
||||
override fun onError(e: Throwable) {
|
||||
// unused atm
|
||||
}
|
||||
|
||||
override fun onComplete() {
|
||||
// unused atm
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
if (user == null) {
|
||||
user = createUser(
|
||||
username,
|
||||
userAttributes
|
||||
)
|
||||
} else {
|
||||
updateUserData(
|
||||
user!!,
|
||||
userAttributes
|
||||
)
|
||||
Observable.just(null)
|
||||
}
|
||||
|
||||
userRepository.insertUser(user!!)
|
||||
return userRepository.getUserWithIdLiveData(user!!.id)
|
||||
return userObservable
|
||||
.map { user: UserNgEntity? ->
|
||||
val userEntity = when (user) {
|
||||
null -> createUser(
|
||||
username,
|
||||
userAttributes
|
||||
)
|
||||
else -> {
|
||||
updateUserData(
|
||||
user,
|
||||
userAttributes
|
||||
)
|
||||
user
|
||||
}
|
||||
}
|
||||
userRepository.insertUser(userEntity)
|
||||
}.flatMap { id ->
|
||||
userRepository.getUserWithIdLiveData(id)
|
||||
}
|
||||
}
|
||||
|
||||
fun getUserWithUsernameAndServer(username: String, server: String): Observable<UserNgEntity?> {
|
||||
|
@ -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?>
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user