Skip to content

Commit 2d1d4ad

Browse files
authored
Fix : Manage members QA pt.4 (#1881)
* Send control message before exception * Add sorting by accountId when showing new dialogs * cleanup * cleanup for readability * Cleanups
1 parent d0bf14c commit 2d1d4ad

File tree

4 files changed

+17
-18
lines changed

4 files changed

+17
-18
lines changed

app/src/main/java/org/thoughtcrime/securesms/groups/GroupManagerV2Impl.kt

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -622,39 +622,35 @@ class GroupManagerV2Impl @Inject constructor(
622622
.mapNotNull { (member, result) ->
623623
configs.groupMembers.get(member.hexString)?.apply {
624624
if (result.isFailure) {
625-
configs.groupMembers.get(member.hexString)?.let { member ->
626-
member.setPromotionFailed()
627-
configs.groupMembers.set(member)
628-
}
625+
setPromotionFailed()
629626
}
630627
}
631628
}
632629
.forEach(configs.groupMembers::set)
633630
}
634631

632+
if (!isRepromote) {
633+
messageSender.sendAndAwait(message, Address.fromSerialized(group.hexString))
634+
}
635+
635636
val failedMembers = promotedByMemberIDs
636637
.filterValues { it.isFailure }
637638
.keys
638-
.toList()
639+
.map { it.hexString }
639640

640641
if (failedMembers.isNotEmpty()) {
641642
val cause = promotedByMemberIDs.values
642-
.firstOrNull { it.isFailure }
643-
?.exceptionOrNull()
643+
.firstOrNull { it.isFailure }?.exceptionOrNull()
644644
?: RuntimeException("Failed to promote ${failedMembers.size} member(s)")
645645

646646
throw GroupInviteException(
647647
isPromotion = true,
648-
inviteeAccountIds = failedMembers.map { it.hexString },
648+
inviteeAccountIds = failedMembers,
649649
groupName = groupName ?: "",
650650
isReinvite = isRepromote,
651651
underlying = cause
652652
)
653653
}
654-
655-
if (!isRepromote) {
656-
messageSender.sendAndAwait(message, Address.fromSerialized(group.hexString))
657-
}
658654
}
659655
}
660656

app/src/main/java/org/thoughtcrime/securesms/groups/InviteMembersViewModel.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,8 @@ class InviteMembersViewModel @AssistedInject constructor(
9090
selected: Set<SelectedContact>,
9191
): InviteContactsDialogState {
9292
val count = selected.size
93-
val firstMember = selected.firstOrNull()
93+
val sortedMembers = selected.sortedBy { it.address }
94+
val firstMember = sortedMembers.firstOrNull()
9495

9596
val body: CharSequence = when (count) {
9697
1 -> {
@@ -103,7 +104,7 @@ class InviteMembersViewModel @AssistedInject constructor(
103104
}
104105
}
105106
2 -> {
106-
val secondMember = selected.elementAtOrNull(1)?.name
107+
val secondMember = sortedMembers.elementAtOrNull(1)?.name
107108
Phrase.from(context, R.string.membersInviteShareDescriptionTwo)
108109
.put(NAME_KEY, firstMember?.name)
109110
.put(OTHER_NAME_KEY, secondMember)

app/src/main/java/org/thoughtcrime/securesms/groups/ManageGroupMembersViewModel.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -303,7 +303,8 @@ class ManageGroupMembersViewModel @AssistedInject constructor(
303303
group: String
304304
): RemoveMembersDialogState {
305305
val count = selected.size
306-
val firstMember = selected.firstOrNull()
306+
val sortedMembers = selected.sortedBy { it.accountId }
307+
val firstMember = sortedMembers.firstOrNull()
307308

308309
val body: CharSequence = when (count) {
309310
1 -> Phrase.from(context, R.string.groupRemoveDescription)
@@ -312,7 +313,7 @@ class ManageGroupMembersViewModel @AssistedInject constructor(
312313
.format()
313314

314315
2 -> {
315-
val secondMember = selected.elementAtOrNull(1)?.name
316+
val secondMember = sortedMembers.elementAtOrNull(1)?.name
316317
Phrase.from(context, R.string.groupRemoveDescriptionTwo)
317318
.put(NAME_KEY, firstMember?.name)
318319
.put(OTHER_NAME_KEY, secondMember)

app/src/main/java/org/thoughtcrime/securesms/groups/PromoteMembersViewModel.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,8 @@ class PromoteMembersViewModel @AssistedInject constructor(
137137
selected: Set<GroupMemberState>
138138
): String {
139139
val count = selected.size
140-
val firstMember = selected.firstOrNull()
140+
val sortedMembers = selected.sortedBy { it.accountId }
141+
val firstMember = sortedMembers.firstOrNull()
141142

142143
val body: CharSequence = when (count) {
143144
1 -> {
@@ -147,7 +148,7 @@ class PromoteMembersViewModel @AssistedInject constructor(
147148
}
148149

149150
2 -> {
150-
val secondMember = selected.elementAtOrNull(1)?.name
151+
val secondMember = sortedMembers.elementAtOrNull(1)?.name
151152
Phrase.from(context, R.string.adminPromoteTwoDescription)
152153
.put(NAME_KEY, firstMember?.name)
153154
.put(OTHER_NAME_KEY, secondMember)

0 commit comments

Comments
 (0)