diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/DSLSettingsAdapter.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/DSLSettingsAdapter.kt index 8ee0f0c05d..e2bd065d77 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/DSLSettingsAdapter.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/DSLSettingsAdapter.kt @@ -208,16 +208,22 @@ class SwitchPreferenceViewHolder(itemView: View) : PreferenceViewHolder model.onClick() } + if (payload.contains(SwitchPreference.PAYLOAD_CHECKED)) { + return + } + + super.bind(model) + + switchWidget.isEnabled = model.isEnabled + itemView.setOnClickListener { model.onClick() } diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/account/AccountSettingsFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/account/AccountSettingsFragment.kt index dd7e44be61..7d4502a2c9 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/account/AccountSettingsFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/account/AccountSettingsFragment.kt @@ -152,6 +152,7 @@ class AccountSettingsFragment : DSLSettingsFragment(R.string.AccountSettingsFrag val dialog: AlertDialog = MaterialAlertDialogBuilder(context) .setView(R.layout.pin_disable_reminders_dialog) + .setOnDismissListener { viewModel.refreshState() } .create() dialog.show() diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/dsl.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/dsl.kt index e19750f975..1644fafef5 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/dsl.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/dsl.kt @@ -2,7 +2,6 @@ package org.thoughtcrime.securesms.components.settings -import androidx.annotation.CallSuper import androidx.annotation.Discouraged import androidx.annotation.Px import androidx.annotation.StringRes @@ -230,7 +229,6 @@ abstract class PreferenceModel>( } } - @CallSuper override fun areContentsTheSame(newItem: T): Boolean { return areItemsTheSame(newItem) && newItem.summary == summary && @@ -293,8 +291,21 @@ class SwitchPreference( val isChecked: Boolean, val onClick: () -> Unit ) : PreferenceModel() { + + companion object { + const val PAYLOAD_CHECKED = "payload_checked" + } + override fun areContentsTheSame(newItem: SwitchPreference): Boolean { - return super.areContentsTheSame(newItem) && isChecked == newItem.isChecked + return false + } + + override fun getChangePayload(newItem: SwitchPreference): Any? { + return if (super.areContentsTheSame(newItem)) { + PAYLOAD_CHECKED + } else { + null + } } }