@@ -75,6 +75,7 @@ import com.wire.android.ui.theme.WireTheme
7575import com.wire.android.ui.theme.wireColorScheme
7676import com.wire.android.ui.theme.wireTypography
7777import com.wire.android.util.CustomTabsHelper
78+ import com.wire.android.util.ui.LocalizedStringResource
7879import com.wire.android.util.ui.PreviewMultipleThemes
7980import com.wire.android.util.ui.UIText
8081import com.wire.android.util.ui.markdownBold
@@ -126,16 +127,16 @@ fun SystemMessageItem(
126127 contentAlignment = Alignment .TopEnd
127128 ) {
128129 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+ )
139140 }
140141 }
141142 Spacer (Modifier .width(dimensions().messageItemHorizontalPadding - fullAvatarOuterPadding))
@@ -187,7 +188,7 @@ fun SystemMessageItem(
187188 modifier = Modifier .defaultMinSize(minHeight = dimensions().spacing20x),
188189 text = fullAnnotatedString,
189190 onClick = { offset ->
190- fullAnnotatedString.getStringAnnotations(TAG_LEARN_MORE , offset, offset, )
191+ fullAnnotatedString.getStringAnnotations(TAG_LEARN_MORE , offset, offset)
191192 .firstOrNull()?.let { result -> CustomTabsHelper .launchUrl(context, result.item) }
192193 },
193194 style = MaterialTheme .wireTypography.body02,
@@ -256,7 +257,7 @@ private fun getColorFilter(message: SystemMessage): ColorFilter? {
256257 is SystemMessage .MemberRemoved ,
257258 is SystemMessage .CryptoSessionReset ,
258259 is SystemMessage .RenamedConversation ,
259- is SystemMessage .TeamMemberRemoved ,
260+ is SystemMessage .TeamMemberRemoved_Legacy ,
260261 is SystemMessage .ConversationReceiptModeChanged ,
261262 is SystemMessage .HistoryLost ,
262263 is SystemMessage .HistoryLostProtocolChanged ,
@@ -269,6 +270,7 @@ private fun getColorFilter(message: SystemMessage): ColorFilter? {
269270 is SystemMessage .FederationMemberRemoved ,
270271 is SystemMessage .FederationStopped ,
271272 is SystemMessage .ConversationMessageCreatedUnverifiedWarning ,
273+ is SystemMessage .TeamMemberRemoved ,
272274 is SystemMessage .MLSWrongEpochWarning -> ColorFilter .tint(colorsScheme().onBackground)
273275 }
274276}
@@ -548,7 +550,7 @@ private val SystemMessage.expandable
548550 is SystemMessage .MemberLeft -> false
549551 is SystemMessage .MissedCall -> false
550552 is SystemMessage .RenamedConversation -> false
551- is SystemMessage .TeamMemberRemoved -> false
553+ is SystemMessage .TeamMemberRemoved_Legacy -> false
552554 is SystemMessage .CryptoSessionReset -> false
553555 is SystemMessage .NewConversationReceiptMode -> false
554556 is SystemMessage .ConversationReceiptModeChanged -> false
@@ -567,6 +569,7 @@ private val SystemMessage.expandable
567569 is SystemMessage .FederationStopped -> false
568570 is SystemMessage .ConversationMessageCreatedUnverifiedWarning -> false
569571 is SystemMessage .LegalHold -> false
572+ is SystemMessage .TeamMemberRemoved -> this .memberNames.size > EXPANDABLE_THRESHOLD
570573 }
571574
572575private fun List<String>.toUserNamesListMarkdownString (res : Resources ): String = when {
@@ -594,7 +597,7 @@ private fun List<UIText>.limitUserNamesList(
594597 .plus(res.getQuantityString(quantityString, moreCount, moreCount))
595598 }
596599
597- @Suppress(" LongParameterList" , " SpreadOperator" , " ComplexMethod" )
600+ @Suppress(" LongParameterList" , " SpreadOperator" , " ComplexMethod" , " LongMethod " )
598601fun SystemMessage.annotatedString (
599602 res : Resources ,
600603 expanded : Boolean ,
@@ -618,6 +621,11 @@ fun SystemMessage.annotatedString(
618621 memberNames.limitUserNamesList(res, expanded).toUserNamesListMarkdownString(res)
619622 )
620623
624+ is SystemMessage .TeamMemberRemoved -> arrayOf(
625+ author.asString(res).markdownBold(),
626+ memberNames.limitUserNamesList(res, expanded).toUserNamesListMarkdownString(res)
627+ )
628+
621629 is SystemMessage .FederationMemberRemoved ->
622630 arrayOf(
623631 memberNames.limitUserNamesList(res, expanded).toUserNamesListMarkdownString(res)
@@ -627,14 +635,14 @@ fun SystemMessage.annotatedString(
627635 is SystemMessage .MemberLeft -> arrayOf(author.asString(res).markdownBold())
628636 is SystemMessage .MissedCall -> arrayOf(author.asString(res).markdownBold())
629637 is SystemMessage .RenamedConversation -> arrayOf(author.asString(res).markdownBold(), content.conversationName.markdownBold())
630- is SystemMessage .TeamMemberRemoved -> arrayOf(content.userName.markdownBold())
631638 is SystemMessage .CryptoSessionReset -> arrayOf(author.asString(res).markdownBold())
632639 is SystemMessage .NewConversationReceiptMode -> arrayOf(receiptMode.asString(res).markdownBold())
633640 is SystemMessage .ConversationReceiptModeChanged -> arrayOf(
634641 author.asString(res).markdownBold(),
635642 receiptMode.asString(res).markdownBold()
636643 )
637644
645+ is SystemMessage .TeamMemberRemoved_Legacy -> arrayOf(content.userName)
638646 is SystemMessage .Knock -> arrayOf(author.asString(res).markdownBold())
639647 is SystemMessage .HistoryLost -> arrayOf()
640648 is SystemMessage .MLSWrongEpochWarning -> arrayOf()
@@ -664,7 +672,19 @@ fun SystemMessage.annotatedString(
664672 arrayOf(memberNames.limitUserNamesList(res, true ).toUserNamesListMarkdownString(res))
665673 } ? : arrayOf()
666674 }
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+
668688 return markdownText(markdownString, normalStyle, boldStyle, normalColor, boldColor, errorColor, isErrorString)
669689}
670690
@@ -699,7 +719,18 @@ private fun SystemMessage.MemberFailedToAdd.toFailedToAddMarkdownText(
699719 if (isMultipleUsersFailure) failedToAddAnnotatedText.append(" \n\n " )
700720 failedToAddAnnotatedText.append(
701721 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+ },
703734 normalStyle,
704735 boldStyle,
705736 normalColor,
0 commit comments