@@ -75,6 +75,7 @@ import com.wire.android.ui.theme.WireTheme
75
75
import com.wire.android.ui.theme.wireColorScheme
76
76
import com.wire.android.ui.theme.wireTypography
77
77
import com.wire.android.util.CustomTabsHelper
78
+ import com.wire.android.util.ui.LocalizedStringResource
78
79
import com.wire.android.util.ui.PreviewMultipleThemes
79
80
import com.wire.android.util.ui.UIText
80
81
import com.wire.android.util.ui.markdownBold
@@ -126,16 +127,16 @@ fun SystemMessageItem(
126
127
contentAlignment = Alignment .TopEnd
127
128
) {
128
129
if (message.messageContent.iconResId != null ) {
129
- Image (
130
- painter = painterResource(id = message.messageContent.iconResId),
131
- contentDescription = null ,
132
- colorFilter = getColorFilter(message.messageContent),
133
- modifier = Modifier .size(
134
- if (message.messageContent.isSmallIcon) dimensions().systemMessageIconSize
135
- else dimensions().systemMessageIconLargeSize
136
- ),
137
- contentScale = ContentScale .Crop
138
- )
130
+ Image (
131
+ painter = painterResource(id = message.messageContent.iconResId),
132
+ contentDescription = null ,
133
+ colorFilter = getColorFilter(message.messageContent),
134
+ modifier = Modifier .size(
135
+ if (message.messageContent.isSmallIcon) dimensions().systemMessageIconSize
136
+ else dimensions().systemMessageIconLargeSize
137
+ ),
138
+ contentScale = ContentScale .Crop
139
+ )
139
140
}
140
141
}
141
142
Spacer (Modifier .width(dimensions().messageItemHorizontalPadding - fullAvatarOuterPadding))
@@ -187,7 +188,7 @@ fun SystemMessageItem(
187
188
modifier = Modifier .defaultMinSize(minHeight = dimensions().spacing20x),
188
189
text = fullAnnotatedString,
189
190
onClick = { offset ->
190
- fullAnnotatedString.getStringAnnotations(TAG_LEARN_MORE , offset, offset, )
191
+ fullAnnotatedString.getStringAnnotations(TAG_LEARN_MORE , offset, offset)
191
192
.firstOrNull()?.let { result -> CustomTabsHelper .launchUrl(context, result.item) }
192
193
},
193
194
style = MaterialTheme .wireTypography.body02,
@@ -256,7 +257,7 @@ private fun getColorFilter(message: SystemMessage): ColorFilter? {
256
257
is SystemMessage .MemberRemoved ,
257
258
is SystemMessage .CryptoSessionReset ,
258
259
is SystemMessage .RenamedConversation ,
259
- is SystemMessage .TeamMemberRemoved ,
260
+ is SystemMessage .TeamMemberRemoved_Legacy ,
260
261
is SystemMessage .ConversationReceiptModeChanged ,
261
262
is SystemMessage .HistoryLost ,
262
263
is SystemMessage .HistoryLostProtocolChanged ,
@@ -269,6 +270,7 @@ private fun getColorFilter(message: SystemMessage): ColorFilter? {
269
270
is SystemMessage .FederationMemberRemoved ,
270
271
is SystemMessage .FederationStopped ,
271
272
is SystemMessage .ConversationMessageCreatedUnverifiedWarning ,
273
+ is SystemMessage .TeamMemberRemoved ,
272
274
is SystemMessage .MLSWrongEpochWarning -> ColorFilter .tint(colorsScheme().onBackground)
273
275
}
274
276
}
@@ -548,7 +550,7 @@ private val SystemMessage.expandable
548
550
is SystemMessage .MemberLeft -> false
549
551
is SystemMessage .MissedCall -> false
550
552
is SystemMessage .RenamedConversation -> false
551
- is SystemMessage .TeamMemberRemoved -> false
553
+ is SystemMessage .TeamMemberRemoved_Legacy -> false
552
554
is SystemMessage .CryptoSessionReset -> false
553
555
is SystemMessage .NewConversationReceiptMode -> false
554
556
is SystemMessage .ConversationReceiptModeChanged -> false
@@ -567,6 +569,7 @@ private val SystemMessage.expandable
567
569
is SystemMessage .FederationStopped -> false
568
570
is SystemMessage .ConversationMessageCreatedUnverifiedWarning -> false
569
571
is SystemMessage .LegalHold -> false
572
+ is SystemMessage .TeamMemberRemoved -> this .memberNames.size > EXPANDABLE_THRESHOLD
570
573
}
571
574
572
575
private fun List<String>.toUserNamesListMarkdownString (res : Resources ): String = when {
@@ -594,7 +597,7 @@ private fun List<UIText>.limitUserNamesList(
594
597
.plus(res.getQuantityString(quantityString, moreCount, moreCount))
595
598
}
596
599
597
- @Suppress(" LongParameterList" , " SpreadOperator" , " ComplexMethod" )
600
+ @Suppress(" LongParameterList" , " SpreadOperator" , " ComplexMethod" , " LongMethod " )
598
601
fun SystemMessage.annotatedString (
599
602
res : Resources ,
600
603
expanded : Boolean ,
@@ -618,6 +621,11 @@ fun SystemMessage.annotatedString(
618
621
memberNames.limitUserNamesList(res, expanded).toUserNamesListMarkdownString(res)
619
622
)
620
623
624
+ is SystemMessage .TeamMemberRemoved -> arrayOf(
625
+ author.asString(res).markdownBold(),
626
+ memberNames.limitUserNamesList(res, expanded).toUserNamesListMarkdownString(res)
627
+ )
628
+
621
629
is SystemMessage .FederationMemberRemoved ->
622
630
arrayOf(
623
631
memberNames.limitUserNamesList(res, expanded).toUserNamesListMarkdownString(res)
@@ -627,14 +635,14 @@ fun SystemMessage.annotatedString(
627
635
is SystemMessage .MemberLeft -> arrayOf(author.asString(res).markdownBold())
628
636
is SystemMessage .MissedCall -> arrayOf(author.asString(res).markdownBold())
629
637
is SystemMessage .RenamedConversation -> arrayOf(author.asString(res).markdownBold(), content.conversationName.markdownBold())
630
- is SystemMessage .TeamMemberRemoved -> arrayOf(content.userName.markdownBold())
631
638
is SystemMessage .CryptoSessionReset -> arrayOf(author.asString(res).markdownBold())
632
639
is SystemMessage .NewConversationReceiptMode -> arrayOf(receiptMode.asString(res).markdownBold())
633
640
is SystemMessage .ConversationReceiptModeChanged -> arrayOf(
634
641
author.asString(res).markdownBold(),
635
642
receiptMode.asString(res).markdownBold()
636
643
)
637
644
645
+ is SystemMessage .TeamMemberRemoved_Legacy -> arrayOf(content.userName)
638
646
is SystemMessage .Knock -> arrayOf(author.asString(res).markdownBold())
639
647
is SystemMessage .HistoryLost -> arrayOf()
640
648
is SystemMessage .MLSWrongEpochWarning -> arrayOf()
@@ -664,7 +672,19 @@ fun SystemMessage.annotatedString(
664
672
arrayOf(memberNames.limitUserNamesList(res, true ).toUserNamesListMarkdownString(res))
665
673
} ? : arrayOf()
666
674
}
667
- val markdownString = res.getString(stringResId, * markdownArgs)
675
+ val markdownString = when (stringResId) {
676
+ is LocalizedStringResource .PluralResource -> res.getQuantityString(
677
+ (stringResId as LocalizedStringResource .PluralResource ).id,
678
+ (stringResId as LocalizedStringResource .PluralResource ).quantity,
679
+ * markdownArgs
680
+ )
681
+
682
+ is LocalizedStringResource .StringResource -> res.getString(
683
+ (stringResId as LocalizedStringResource .StringResource ).id,
684
+ * markdownArgs
685
+ )
686
+ }
687
+
668
688
return markdownText(markdownString, normalStyle, boldStyle, normalColor, boldColor, errorColor, isErrorString)
669
689
}
670
690
@@ -699,7 +719,18 @@ private fun SystemMessage.MemberFailedToAdd.toFailedToAddMarkdownText(
699
719
if (isMultipleUsersFailure) failedToAddAnnotatedText.append(" \n\n " )
700
720
failedToAddAnnotatedText.append(
701
721
markdownText(
702
- res.getString(stringResId, memberNames.limitUserNamesList(res, true ).toUserNamesListMarkdownString(res)),
722
+ when (stringResId) {
723
+ is LocalizedStringResource .PluralResource -> res.getQuantityString(
724
+ stringResId.id,
725
+ stringResId.quantity,
726
+ stringResId.formatArgs
727
+ )
728
+
729
+ is LocalizedStringResource .StringResource -> res.getString(
730
+ stringResId.id,
731
+ memberNames.limitUserNamesList(res, true ).toUserNamesListMarkdownString(res)
732
+ )
733
+ },
703
734
normalStyle,
704
735
boldStyle,
705
736
normalColor,
0 commit comments