diff --git a/app/src/main/java/com/keylesspalace/tusky/components/compose/dialog/AddPollDialog.kt b/app/src/main/java/com/keylesspalace/tusky/components/compose/dialog/AddPollDialog.kt
index 1090bd5991..5605509dbb 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/compose/dialog/AddPollDialog.kt
+++ b/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()
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index ca195b0080..7bef7dfb85 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -915,6 +915,7 @@
Yes
No
Discard caption changes?
+ Discard poll changes?
Unblocked %1$s
Unmuted %1$s