Forráskód Böngészése

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>
Marcel Hibbe 2 éve
szülő
commit
0d6e971c38

+ 19 - 2
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<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) {