From 0d6e971c38b3653628e0eae4aea66308b9bd55e7 Mon Sep 17 00:00:00 2001 From: Marcel Hibbe Date: Mon, 22 May 2023 12:55:30 +0200 Subject: [PATCH] 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 --- .../talk/settings/SettingsActivity.kt | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/settings/SettingsActivity.kt b/app/src/main/java/com/nextcloud/talk/settings/SettingsActivity.kt index 2b2b1d720..ab29d7942 100644 --- a/app/src/main/java/com/nextcloud/talk/settings/SettingsActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/settings/SettingsActivity.kt @@ -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(R.id.mp_checkable) as Checkable).isChecked = appPreferences.isKeyboardIncognito - if (CapabilitiesUtilNew.isReadStatusAvailable(userManager.currentUser.blockingGet())) { + if (CapabilitiesUtilNew.isReadStatusAvailable(currentUser!!)) { (binding.settingsReadPrivacy.findViewById(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) {