fix to use newest capabilities to update settings.

Without this refreshing of capabilites, depending settings (for now read privacy) were never updated until app was started again because the user still contained old capabilities.

This fix will also be necessary for the typing indicator setting.

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
This commit is contained in:
Marcel Hibbe 2023-05-22 12:55:30 +02:00
parent ecec266765
commit 0d6e971c38
No known key found for this signature in database
GPG Key ID: C793F8B59F43CE7B

View File

@ -56,6 +56,7 @@ import androidx.appcompat.app.AlertDialog
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import androidx.core.view.ViewCompat import androidx.core.view.ViewCompat
import androidx.work.OneTimeWorkRequest import androidx.work.OneTimeWorkRequest
import androidx.work.WorkInfo
import androidx.work.WorkManager import androidx.work.WorkManager
import autodagger.AutoInjector import autodagger.AutoInjector
import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.dialog.MaterialAlertDialogBuilder
@ -69,6 +70,7 @@ import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.setAppT
import com.nextcloud.talk.data.user.model.User import com.nextcloud.talk.data.user.model.User
import com.nextcloud.talk.databinding.ActivitySettingsBinding import com.nextcloud.talk.databinding.ActivitySettingsBinding
import com.nextcloud.talk.jobs.AccountRemovalWorker import com.nextcloud.talk.jobs.AccountRemovalWorker
import com.nextcloud.talk.jobs.CapabilitiesWorker
import com.nextcloud.talk.jobs.ContactAddressBookWorker import com.nextcloud.talk.jobs.ContactAddressBookWorker
import com.nextcloud.talk.jobs.ContactAddressBookWorker.Companion.checkPermission import com.nextcloud.talk.jobs.ContactAddressBookWorker.Companion.checkPermission
import com.nextcloud.talk.jobs.ContactAddressBookWorker.Companion.deleteAll import com.nextcloud.talk.jobs.ContactAddressBookWorker.Companion.deleteAll
@ -172,6 +174,8 @@ class SettingsActivity : BaseActivity() {
supportActionBar?.show() supportActionBar?.show()
dispose(null) dispose(null)
loadCapabilitiesAndUpdateSettings()
binding.settingsVersion.setOnClickListener { binding.settingsVersion.setOnClickListener {
sendLogs() sendLogs()
} }
@ -224,6 +228,19 @@ class SettingsActivity : BaseActivity() {
themeSwitchPreferences() themeSwitchPreferences()
} }
private fun loadCapabilitiesAndUpdateSettings() {
val capabilitiesWork = OneTimeWorkRequest.Builder(CapabilitiesWorker::class.java).build()
WorkManager.getInstance(context).enqueue(capabilitiesWork)
WorkManager.getInstance(context).getWorkInfoByIdLiveData(capabilitiesWork.id)
.observe(this) { workInfo ->
if (workInfo?.state == WorkInfo.State.SUCCEEDED) {
getCurrentUser()
setupCheckables()
}
}
}
private fun setupActionBar() { private fun setupActionBar() {
setSupportActionBar(binding.settingsToolbar) setSupportActionBar(binding.settingsToolbar)
binding.settingsToolbar.setNavigationOnClickListener { binding.settingsToolbar.setNavigationOnClickListener {
@ -636,7 +653,7 @@ class SettingsActivity : BaseActivity() {
(binding.settingsIncognitoKeyboard.findViewById<View>(R.id.mp_checkable) as Checkable).isChecked = (binding.settingsIncognitoKeyboard.findViewById<View>(R.id.mp_checkable) as Checkable).isChecked =
appPreferences.isKeyboardIncognito appPreferences.isKeyboardIncognito
if (CapabilitiesUtilNew.isReadStatusAvailable(userManager.currentUser.blockingGet())) { if (CapabilitiesUtilNew.isReadStatusAvailable(currentUser!!)) {
(binding.settingsReadPrivacy.findViewById<View>(R.id.mp_checkable) as Checkable).isChecked = (binding.settingsReadPrivacy.findViewById<View>(R.id.mp_checkable) as Checkable).isChecked =
!CapabilitiesUtilNew.isReadStatusPrivate(currentUser!!) !CapabilitiesUtilNew.isReadStatusPrivate(currentUser!!)
} else { } else {
@ -993,7 +1010,7 @@ class SettingsActivity : BaseActivity() {
} }
override fun onNext(genericOverall: GenericOverall) { override fun onNext(genericOverall: GenericOverall) {
// unused atm Log.d(TAG, "onNext")
} }
override fun onError(e: Throwable) { override fun onError(e: Throwable) {