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.view.ViewCompat
import androidx.work.OneTimeWorkRequest
import androidx.work.WorkInfo
import androidx.work.WorkManager
import autodagger.AutoInjector
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.databinding.ActivitySettingsBinding
import com.nextcloud.talk.jobs.AccountRemovalWorker
import com.nextcloud.talk.jobs.CapabilitiesWorker
import com.nextcloud.talk.jobs.ContactAddressBookWorker
import com.nextcloud.talk.jobs.ContactAddressBookWorker.Companion.checkPermission
import com.nextcloud.talk.jobs.ContactAddressBookWorker.Companion.deleteAll
@ -172,6 +174,8 @@ class SettingsActivity : BaseActivity() {
supportActionBar?.show()
dispose(null)
loadCapabilitiesAndUpdateSettings()
binding.settingsVersion.setOnClickListener {
sendLogs()
}
@ -224,6 +228,19 @@ class SettingsActivity : BaseActivity() {
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() {
setSupportActionBar(binding.settingsToolbar)
binding.settingsToolbar.setNavigationOnClickListener {
@ -636,7 +653,7 @@ class SettingsActivity : BaseActivity() {
(binding.settingsIncognitoKeyboard.findViewById<View>(R.id.mp_checkable) as Checkable).isChecked =
appPreferences.isKeyboardIncognito
if (CapabilitiesUtilNew.isReadStatusAvailable(userManager.currentUser.blockingGet())) {
if (CapabilitiesUtilNew.isReadStatusAvailable(currentUser!!)) {
(binding.settingsReadPrivacy.findViewById<View>(R.id.mp_checkable) as Checkable).isChecked =
!CapabilitiesUtilNew.isReadStatusPrivate(currentUser!!)
} else {
@ -993,7 +1010,7 @@ class SettingsActivity : BaseActivity() {
}
override fun onNext(genericOverall: GenericOverall) {
// unused atm
Log.d(TAG, "onNext")
}
override fun onError(e: Throwable) {