Skip to content

Commit 5f507c2

Browse files
authored
fix: thread counted as single message in confirmation dialog (#11193)
2 parents 979e4a5 + f717d60 commit 5f507c2

2 files changed

Lines changed: 20 additions & 19 deletions

File tree

legacy/ui/legacy/src/main/java/com/fsck/k9/ui/messagelist/LegacyMessageListFragment.kt

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1008,11 +1008,11 @@ class LegacyMessageListFragment :
10081008
changeSort(nextSortType)
10091009
}
10101010

1011-
private fun onDelete(messages: List<MessageReference>) {
1011+
private fun onDelete(messages: List<MessageReference>, count: Int) {
10121012
if (interactionSettings.isConfirmDelete) {
10131013
// remember the message selection for #onCreateDialog(int)
10141014
activeMessages = messages
1015-
showDialog(R.id.dialog_confirm_delete)
1015+
showDialog(R.id.dialog_confirm_delete, count)
10161016
} else {
10171017
onDeleteConfirmed(messages)
10181018
}
@@ -1056,15 +1056,14 @@ class LegacyMessageListFragment :
10561056
return currentFolder!!.databaseId == account!!.trashFolderId
10571057
}
10581058

1059-
private fun showDialog(dialogId: Int) {
1059+
private fun showDialog(dialogId: Int, selectionCount: Int = 1) {
10601060
val dialogFragment = when (dialogId) {
10611061
R.id.dialog_confirm_spam -> {
10621062
val title = getString(R.string.dialog_confirm_spam_title)
1063-
val selectionSize = activeMessages!!.size
10641063
val message = resources.getQuantityString(
10651064
R.plurals.dialog_confirm_spam_message,
1066-
selectionSize,
1067-
selectionSize,
1065+
selectionCount,
1066+
selectionCount,
10681067
)
10691068
val confirmText = getString(R.string.dialog_confirm_spam_confirm_button)
10701069
val cancelText = getString(R.string.dialog_confirm_spam_cancel_button)
@@ -1073,11 +1072,10 @@ class LegacyMessageListFragment :
10731072

10741073
R.id.dialog_confirm_delete -> {
10751074
val title = getString(R.string.dialog_confirm_delete_title)
1076-
val selectionSize = activeMessages!!.size
10771075
val message = resources.getQuantityString(
10781076
R.plurals.dialog_confirm_delete_messages,
1079-
selectionSize,
1080-
selectionSize,
1077+
selectionCount,
1078+
selectionCount,
10811079
)
10821080
val confirmText = getString(R.string.dialog_confirm_delete_confirm_button)
10831081
val cancelText = getString(R.string.dialog_confirm_delete_cancel_button)
@@ -1109,7 +1107,7 @@ class LegacyMessageListFragment :
11091107
}
11101108

11111109
else -> {
1112-
throw RuntimeException("Called showDialog(int) with unknown dialog id.")
1110+
throw RuntimeException("Called showDialog(int, int) with unknown dialog id.")
11131111
}
11141112
}
11151113

@@ -1662,11 +1660,11 @@ class LegacyMessageListFragment :
16621660
return messages.groupBy { accountManager.getAccount(it.accountUuid)!! }
16631661
}
16641662

1665-
private fun onSpam(messages: List<MessageReference>) {
1663+
private fun onSpam(messages: List<MessageReference>, count: Int) {
16661664
if (interactionSettings.isConfirmSpam) {
16671665
// remember the message selection for #onCreateDialog(int)
16681666
activeMessages = messages
1669-
showDialog(R.id.dialog_confirm_spam)
1667+
showDialog(R.id.dialog_confirm_spam, count)
16701668
} else {
16711669
onSpamConfirmed(messages)
16721670
}
@@ -1903,9 +1901,12 @@ class LegacyMessageListFragment :
19031901
private val selectedMessages: List<MessageReference>
19041902
get() = adapter.selectedMessages.map { it.messageReference }
19051903

1904+
private val selectedMessagesCount
1905+
get() = adapter.selectedCount
1906+
19061907
override fun onDelete() {
19071908
selectedMessage?.let { message ->
1908-
onDelete(listOf(message))
1909+
onDelete(listOf(message), selectedMessagesCount)
19091910
}
19101911
}
19111912

@@ -2254,11 +2255,11 @@ class LegacyMessageListFragment :
22542255
}
22552256

22562257
SwipeAction.Delete -> {
2257-
onDelete(listOf(item.messageReference))
2258+
onDelete(listOf(item.messageReference), item.threadCount)
22582259
}
22592260

22602261
SwipeAction.Spam -> {
2261-
onSpam(listOf(item.messageReference))
2262+
onSpam(listOf(item.messageReference), item.threadCount)
22622263
}
22632264

22642265
SwipeAction.Move -> {
@@ -2614,7 +2615,7 @@ class LegacyMessageListFragment :
26142615

26152616
val endSelectionMode = when (item.itemId) {
26162617
R.id.delete -> {
2617-
onDelete(selectedMessages)
2618+
onDelete(selectedMessages, selectedMessagesCount)
26182619
true
26192620
}
26202621

@@ -2650,7 +2651,7 @@ class LegacyMessageListFragment :
26502651
}
26512652

26522653
R.id.spam -> {
2653-
onSpam(selectedMessages)
2654+
onSpam(selectedMessages, selectedMessagesCount)
26542655
// TODO: Only finish action mode if all messages have been moved.
26552656
true
26562657
}

legacy/ui/legacy/src/main/java/com/fsck/k9/ui/messagelist/MessageListFragment.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -953,7 +953,7 @@ class MessageListFragment :
953953
val dialogFragment = when (dialogId) {
954954
R.id.dialog_confirm_spam -> {
955955
val title = getString(R.string.dialog_confirm_spam_title)
956-
val selectionSize = activeMessages!!.size
956+
val selectionSize = selectedMessagesCount
957957
val message = resources.getQuantityString(
958958
R.plurals.dialog_confirm_spam_message,
959959
selectionSize,
@@ -966,7 +966,7 @@ class MessageListFragment :
966966

967967
R.id.dialog_confirm_delete -> {
968968
val title = getString(R.string.dialog_confirm_delete_title)
969-
val selectionSize = activeMessages!!.size
969+
val selectionSize = selectedMessagesCount
970970
val message = resources.getQuantityString(
971971
R.plurals.dialog_confirm_delete_messages,
972972
selectionSize,

0 commit comments

Comments
 (0)