mirror of
https://github.com/signalapp/Signal-Android.git
synced 2025-12-24 04:58:45 +00:00
Fix refresh of toggle state when dialog is dismissed in several cases.
This commit is contained in:
committed by
Cody Henthorne
parent
9081230286
commit
baf9cd0909
@@ -208,16 +208,22 @@ class SwitchPreferenceViewHolder(itemView: View) : PreferenceViewHolder<SwitchPr
|
||||
private val switchWidget: MaterialSwitch = itemView.findViewById(R.id.switch_widget)
|
||||
|
||||
override fun bind(model: SwitchPreference) {
|
||||
super.bind(model)
|
||||
switchWidget.setOnCheckedChangeListener(null)
|
||||
|
||||
switchWidget.isEnabled = model.isEnabled
|
||||
switchWidget.isChecked = model.isChecked
|
||||
|
||||
switchWidget.setOnCheckedChangeListener { _, _ ->
|
||||
model.onClick()
|
||||
}
|
||||
|
||||
if (payload.contains(SwitchPreference.PAYLOAD_CHECKED)) {
|
||||
return
|
||||
}
|
||||
|
||||
super.bind(model)
|
||||
|
||||
switchWidget.isEnabled = model.isEnabled
|
||||
|
||||
itemView.setOnClickListener {
|
||||
model.onClick()
|
||||
}
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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<T : PreferenceModel<T>>(
|
||||
}
|
||||
}
|
||||
|
||||
@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<SwitchPreference>() {
|
||||
|
||||
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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user