Browse Source

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 years ago
parent
commit
0d6e971c38
1 changed files with 19 additions and 2 deletions
  1. 19 2
      app/src/main/java/com/nextcloud/talk/settings/SettingsActivity.kt

+ 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.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) {