Fix flow listening in SettingsController

Signed-off-by: Álvaro Brey <alvaro.brey@nextcloud.com>
This commit is contained in:
Álvaro Brey 2022-06-22 10:44:35 +02:00 committed by Andy Scherzinger
parent b9d2ca2517
commit f7786e1b93
No known key found for this signature in database
GPG Key ID: 6CADC7E3523C308B
2 changed files with 96 additions and 90 deletions

View File

@ -101,7 +101,9 @@ import io.reactivex.disposables.Disposable
import io.reactivex.schedulers.Schedulers
import kotlinx.coroutines.MainScope
import kotlinx.coroutines.cancel
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking
import net.orange_box.storebox.listeners.OnPreferenceValueChangedListener
import okhttp3.MediaType.Companion.toMediaTypeOrNull
import okhttp3.RequestBody
@ -147,15 +149,12 @@ class SettingsController : NewBaseController(R.layout.controller_settings) {
get() =
resources!!.getString(R.string.nc_settings)
private fun getCurrentUser() {
scope.launch {
currentUserProvider.currentUser.collect {
Log.e(TAG, "User: $it")
this@SettingsController.currentUser = it
this@SettingsController.credentials =
ApiUtils.getCredentials(currentUser!!.username, currentUser!!.token)
}
}
private suspend fun getCurrentUser() {
val user = currentUserProvider.currentUser.first()
Log.e(TAG, "User: $user")
currentUser = user
credentials =
ApiUtils.getCredentials(currentUser!!.username, currentUser!!.token)
}
override fun onViewBound(view: View) {
@ -164,43 +163,46 @@ class SettingsController : NewBaseController(R.layout.controller_settings) {
sharedApplication!!.componentApplication.inject(this)
ViewCompat.setTransitionName((binding.avatarImage), "userAvatar.transitionTag")
getCurrentUser()
if (saveStateHandler == null) {
saveStateHandler = LovelySaveStateHandler()
}
runBlocking {
getCurrentUser()
registerChangeListeners()
if (saveStateHandler == null) {
saveStateHandler = LovelySaveStateHandler()
}
setupSettingsScreen()
setupLicenceSetting()
registerChangeListeners()
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
binding.settingsIncognitoKeyboard.visibility = View.GONE
}
setupSettingsScreen()
setupLicenceSetting()
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)
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()
}
setupPrivacyUrl()
setupSourceCodeUrl()
binding.settingsVersion.setSummary("v" + BuildConfig.VERSION_NAME)
setupSoundSettings()
setupPhoneBookIntegration()
setupClientCertView()
}
private fun setupPhoneBookIntegration() {
@ -484,69 +486,73 @@ class SettingsController : NewBaseController(R.layout.controller_settings) {
super.onAttach(view)
actionBar?.show()
dispose(null)
getCurrentUser()
binding.settingsVersion.setOnClickListener {
sendLogs()
}
runBlocking {
if (!TextUtils.isEmpty(currentUser!!.clientCertificate)) {
binding.settingsClientCert.setTitle(R.string.nc_client_cert_change)
} else {
binding.settingsClientCert.setTitle(R.string.nc_client_cert_setup)
}
getCurrentUser()
setupCheckables()
setupScreenLockSetting()
binding.settingsVersion.setOnClickListener {
sendLogs()
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
binding.settingsNotificationsCategory.setTitle(
resources!!.getString(R.string.nc_settings_notification_sounds_post_oreo)
)
}
if (!TextUtils.isEmpty(currentUser!!.clientCertificate)) {
binding.settingsClientCert.setTitle(R.string.nc_client_cert_change)
} else {
binding.settingsClientCert.setTitle(R.string.nc_client_cert_setup)
}
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))
setupCheckables()
setupScreenLockSetting()
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 (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
binding.settingsNotificationsCategory.setTitle(
resources!!.getString(R.string.nc_settings_notification_sounds_post_oreo)
)
}
if (currentUser!!.displayName != null) {
binding.displayNameText.text = currentUser!!.displayName
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)
}
}
DisplayUtils.loadAvatarImage(currentUser, binding.avatarImage, false)
setupMessageView()
setupProfileQueryDisposable()
binding.avatarContainer.setOnClickListener {
router
.pushController(
RouterTransaction.with(ProfileController())
.pushChangeHandler(HorizontalChangeHandler())
.popChangeHandler(HorizontalChangeHandler())
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() {

View File

@ -38,8 +38,8 @@ class PushConfigurationConverter {
}
@TypeConverter
fun fromStringToPushConfiguration(value: String): PushConfigurationState? {
if (value.isBlank()) {
fun fromStringToPushConfiguration(value: String?): PushConfigurationState? {
if (value.isNullOrBlank()) {
return null
}