Browse Source

add dialog to prevent accidentally dismissing poll changes

poll-dialog-dismiss
Conny Duck 10 months ago
parent
commit
f1183e1deb
No known key found for this signature in database
  1. 32
      app/src/main/java/com/keylesspalace/tusky/components/compose/dialog/AddPollDialog.kt
  2. 1
      app/src/main/res/values/strings.xml

32
app/src/main/java/com/keylesspalace/tusky/components/compose/dialog/AddPollDialog.kt

@ -50,6 +50,7 @@ fun showAddPollDialog(
.setBackgroundInsetStart(inset)
.setNegativeButton(android.R.string.cancel, null)
.setPositiveButton(android.R.string.ok, null)
.setCancelable(false)
.create()
val adapter = AddPollOptionsAdapter(
@ -96,19 +97,36 @@ fun showAddPollDialog(
binding.multipleChoicesCheckBox.isChecked = poll?.multiple == true
fun newPoll() = NewPoll(
options = adapter.pollOptions,
expiresIn = durations[selectedDurationIndex],
multiple = binding.multipleChoicesCheckBox.isChecked
)
val existingPoll = newPoll()
dialog.setOnShowListener {
val button = dialog.getButton(AlertDialog.BUTTON_POSITIVE)
button.setOnClickListener {
dialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener {
onUpdatePoll(
NewPoll(
options = adapter.pollOptions,
expiresIn = durations[selectedDurationIndex],
multiple = binding.multipleChoicesCheckBox.isChecked
)
newPoll()
)
dialog.dismiss()
}
dialog.getButton(AlertDialog.BUTTON_NEGATIVE)?.setOnClickListener {
if (existingPoll != newPoll()) {
MaterialAlertDialogBuilder(context)
.setMessage(R.string.confirm_dismiss_caption)
.setPositiveButton(R.string.yes) { _, _ ->
dialog.dismiss()
}
.setNegativeButton(R.string.no, null)
.show()
} else {
dialog.dismiss()
}
}
}
dialog.show()

1
app/src/main/res/values/strings.xml

@ -915,6 +915,7 @@
<string name="yes">Yes</string>
<string name="no">No</string>
<string name="confirm_dismiss_caption">Discard caption changes?</string>
<string name="confirm_dismiss_poll">Discard poll changes?</string>
<string name="unblock_success">Unblocked %1$s</string>
<string name="unmute_success">Unmuted %1$s</string>

Loading…
Cancel
Save