diff --git a/app/src/main/kotlin/com/wire/android/mapper/MessagePreviewContentMapper.kt b/app/src/main/kotlin/com/wire/android/mapper/MessagePreviewContentMapper.kt
index 853a5333f38..19a6d47caf4 100644
--- a/app/src/main/kotlin/com/wire/android/mapper/MessagePreviewContentMapper.kt
+++ b/app/src/main/kotlin/com/wire/android/mapper/MessagePreviewContentMapper.kt
@@ -204,10 +204,10 @@ fun MessagePreview.uiLastMessageContent(): UILastMessageContent {
UILastMessageContent.TextMessage(MessageBody(previewMessageContent))
}
- is WithUser.MembersRemoved -> {
- val membersRemovedContent = (content as WithUser.MembersRemoved)
- val isSelfRemoved = membersRemovedContent.isSelfUserRemoved
- val otherUsersSize = membersRemovedContent.otherUserIdList.size
+ is WithUser.ConversationMembersRemoved -> {
+ val conversationMembersRemovedContent = (content as WithUser.ConversationMembersRemoved)
+ val isSelfRemoved = conversationMembersRemovedContent.isSelfUserRemoved
+ val otherUsersSize = conversationMembersRemovedContent.otherUserIdList.size
val previewMessageContent = when {
isSelfMessage && otherUsersSize > 0 -> {
@@ -234,6 +234,14 @@ fun MessagePreview.uiLastMessageContent(): UILastMessageContent {
UILastMessageContent.TextMessage(MessageBody(previewMessageContent))
}
+ is WithUser.TeamMembersRemoved -> {
+ val teamMembersRemovedContent = (content as WithUser.TeamMembersRemoved)
+ val previewMessageContent =
+ UIText.PluralResource(R.plurals.last_message_team_member_removed, teamMembersRemovedContent.otherUserIdList.size)
+
+ UILastMessageContent.TextMessage(MessageBody(previewMessageContent))
+ }
+
is WithUser.MentionedSelf -> UILastMessageContent.SenderWithMessage(
userUIText,
UIText.StringResource(R.string.last_message_mentioned)
@@ -244,7 +252,7 @@ fun MessagePreview.uiLastMessageContent(): UILastMessageContent {
UIText.StringResource(R.string.last_message_replied)
)
- is WithUser.TeamMemberRemoved -> UILastMessageContent.None // TODO
+ is WithUser.TeamMemberRemoved -> UILastMessageContent.None
is WithUser.Text -> UILastMessageContent.SenderWithMessage(
sender = userUIText,
message = (content as WithUser.Text).messageBody.let { UIText.DynamicString(it) },
@@ -319,12 +327,16 @@ fun MessagePreview.uiLastMessageContent(): UILastMessageContent {
MessagePreviewContent.CryptoSessionReset -> UILastMessageContent.None
MessagePreviewContent.VerificationChanged.VerifiedMls ->
UILastMessageContent.VerificationChanged(R.string.last_message_verified_conversation_mls)
+
MessagePreviewContent.VerificationChanged.VerifiedProteus ->
UILastMessageContent.VerificationChanged(R.string.last_message_verified_conversation_proteus)
+
MessagePreviewContent.VerificationChanged.DegradedMls ->
UILastMessageContent.VerificationChanged(R.string.last_message_conversations_verification_degraded_mls)
+
MessagePreviewContent.VerificationChanged.DegradedProteus ->
UILastMessageContent.VerificationChanged(R.string.last_message_conversations_verification_degraded_proteus)
+
Unknown -> UILastMessageContent.None
}
}
diff --git a/app/src/main/kotlin/com/wire/android/mapper/SystemMessageContentMapper.kt b/app/src/main/kotlin/com/wire/android/mapper/SystemMessageContentMapper.kt
index 3e06819edf0..f3c26fc1708 100644
--- a/app/src/main/kotlin/com/wire/android/mapper/SystemMessageContentMapper.kt
+++ b/app/src/main/kotlin/com/wire/android/mapper/SystemMessageContentMapper.kt
@@ -180,7 +180,7 @@ class SystemMessageContentMapper @Inject constructor(
private fun mapTeamMemberRemovedMessage(
content: MessageContent.TeamMemberRemoved
- ): UIMessageContent.SystemMessage = UIMessageContent.SystemMessage.TeamMemberRemoved(content)
+ ): UIMessageContent.SystemMessage = UIMessageContent.SystemMessage.TeamMemberRemoved_Legacy(content)
private fun mapConversationRenamedMessage(
senderUserId: UserId,
@@ -242,6 +242,11 @@ class SystemMessageContentMapper @Inject constructor(
is MemberChange.FederationRemoved -> UIMessageContent.SystemMessage.FederationMemberRemoved(
memberNames = memberNameList
)
+
+ is MemberChange.RemovedFromTeam -> UIMessageContent.SystemMessage.TeamMemberRemoved(
+ author = authorName,
+ memberNames = memberNameList
+ )
}
}
diff --git a/app/src/main/kotlin/com/wire/android/ui/home/conversations/SystemMessageItem.kt b/app/src/main/kotlin/com/wire/android/ui/home/conversations/SystemMessageItem.kt
index 3f4bcfe5c7f..220810581af 100644
--- a/app/src/main/kotlin/com/wire/android/ui/home/conversations/SystemMessageItem.kt
+++ b/app/src/main/kotlin/com/wire/android/ui/home/conversations/SystemMessageItem.kt
@@ -75,6 +75,7 @@ import com.wire.android.ui.theme.WireTheme
import com.wire.android.ui.theme.wireColorScheme
import com.wire.android.ui.theme.wireTypography
import com.wire.android.util.CustomTabsHelper
+import com.wire.android.util.ui.LocalizedStringResource
import com.wire.android.util.ui.PreviewMultipleThemes
import com.wire.android.util.ui.UIText
import com.wire.android.util.ui.markdownBold
@@ -126,16 +127,16 @@ fun SystemMessageItem(
contentAlignment = Alignment.TopEnd
) {
if (message.messageContent.iconResId != null) {
- Image(
- painter = painterResource(id = message.messageContent.iconResId),
- contentDescription = null,
- colorFilter = getColorFilter(message.messageContent),
- modifier = Modifier.size(
- if (message.messageContent.isSmallIcon) dimensions().systemMessageIconSize
- else dimensions().systemMessageIconLargeSize
- ),
- contentScale = ContentScale.Crop
- )
+ Image(
+ painter = painterResource(id = message.messageContent.iconResId),
+ contentDescription = null,
+ colorFilter = getColorFilter(message.messageContent),
+ modifier = Modifier.size(
+ if (message.messageContent.isSmallIcon) dimensions().systemMessageIconSize
+ else dimensions().systemMessageIconLargeSize
+ ),
+ contentScale = ContentScale.Crop
+ )
}
}
Spacer(Modifier.width(dimensions().messageItemHorizontalPadding - fullAvatarOuterPadding))
@@ -187,7 +188,7 @@ fun SystemMessageItem(
modifier = Modifier.defaultMinSize(minHeight = dimensions().spacing20x),
text = fullAnnotatedString,
onClick = { offset ->
- fullAnnotatedString.getStringAnnotations(TAG_LEARN_MORE, offset, offset,)
+ fullAnnotatedString.getStringAnnotations(TAG_LEARN_MORE, offset, offset)
.firstOrNull()?.let { result -> CustomTabsHelper.launchUrl(context, result.item) }
},
style = MaterialTheme.wireTypography.body02,
@@ -256,7 +257,7 @@ private fun getColorFilter(message: SystemMessage): ColorFilter? {
is SystemMessage.MemberRemoved,
is SystemMessage.CryptoSessionReset,
is SystemMessage.RenamedConversation,
- is SystemMessage.TeamMemberRemoved,
+ is SystemMessage.TeamMemberRemoved_Legacy,
is SystemMessage.ConversationReceiptModeChanged,
is SystemMessage.HistoryLost,
is SystemMessage.HistoryLostProtocolChanged,
@@ -269,6 +270,7 @@ private fun getColorFilter(message: SystemMessage): ColorFilter? {
is SystemMessage.FederationMemberRemoved,
is SystemMessage.FederationStopped,
is SystemMessage.ConversationMessageCreatedUnverifiedWarning,
+ is SystemMessage.TeamMemberRemoved,
is SystemMessage.MLSWrongEpochWarning -> ColorFilter.tint(colorsScheme().onBackground)
}
}
@@ -548,7 +550,7 @@ private val SystemMessage.expandable
is SystemMessage.MemberLeft -> false
is SystemMessage.MissedCall -> false
is SystemMessage.RenamedConversation -> false
- is SystemMessage.TeamMemberRemoved -> false
+ is SystemMessage.TeamMemberRemoved_Legacy -> false
is SystemMessage.CryptoSessionReset -> false
is SystemMessage.NewConversationReceiptMode -> false
is SystemMessage.ConversationReceiptModeChanged -> false
@@ -567,6 +569,7 @@ private val SystemMessage.expandable
is SystemMessage.FederationStopped -> false
is SystemMessage.ConversationMessageCreatedUnverifiedWarning -> false
is SystemMessage.LegalHold -> false
+ is SystemMessage.TeamMemberRemoved -> this.memberNames.size > EXPANDABLE_THRESHOLD
}
private fun List.toUserNamesListMarkdownString(res: Resources): String = when {
@@ -594,7 +597,7 @@ private fun List.limitUserNamesList(
.plus(res.getQuantityString(quantityString, moreCount, moreCount))
}
-@Suppress("LongParameterList", "SpreadOperator", "ComplexMethod")
+@Suppress("LongParameterList", "SpreadOperator", "ComplexMethod", "LongMethod")
fun SystemMessage.annotatedString(
res: Resources,
expanded: Boolean,
@@ -618,6 +621,11 @@ fun SystemMessage.annotatedString(
memberNames.limitUserNamesList(res, expanded).toUserNamesListMarkdownString(res)
)
+ is SystemMessage.TeamMemberRemoved -> arrayOf(
+ author.asString(res).markdownBold(),
+ memberNames.limitUserNamesList(res, expanded).toUserNamesListMarkdownString(res)
+ )
+
is SystemMessage.FederationMemberRemoved ->
arrayOf(
memberNames.limitUserNamesList(res, expanded).toUserNamesListMarkdownString(res)
@@ -627,7 +635,6 @@ fun SystemMessage.annotatedString(
is SystemMessage.MemberLeft -> arrayOf(author.asString(res).markdownBold())
is SystemMessage.MissedCall -> arrayOf(author.asString(res).markdownBold())
is SystemMessage.RenamedConversation -> arrayOf(author.asString(res).markdownBold(), content.conversationName.markdownBold())
- is SystemMessage.TeamMemberRemoved -> arrayOf(content.userName.markdownBold())
is SystemMessage.CryptoSessionReset -> arrayOf(author.asString(res).markdownBold())
is SystemMessage.NewConversationReceiptMode -> arrayOf(receiptMode.asString(res).markdownBold())
is SystemMessage.ConversationReceiptModeChanged -> arrayOf(
@@ -635,6 +642,7 @@ fun SystemMessage.annotatedString(
receiptMode.asString(res).markdownBold()
)
+ is SystemMessage.TeamMemberRemoved_Legacy -> arrayOf(content.userName)
is SystemMessage.Knock -> arrayOf(author.asString(res).markdownBold())
is SystemMessage.HistoryLost -> arrayOf()
is SystemMessage.MLSWrongEpochWarning -> arrayOf()
@@ -664,7 +672,19 @@ fun SystemMessage.annotatedString(
arrayOf(memberNames.limitUserNamesList(res, true).toUserNamesListMarkdownString(res))
} ?: arrayOf()
}
- val markdownString = res.getString(stringResId, *markdownArgs)
+ val markdownString = when (stringResId) {
+ is LocalizedStringResource.PluralResource -> res.getQuantityString(
+ (stringResId as LocalizedStringResource.PluralResource).id,
+ (stringResId as LocalizedStringResource.PluralResource).quantity,
+ *markdownArgs
+ )
+
+ is LocalizedStringResource.StringResource -> res.getString(
+ (stringResId as LocalizedStringResource.StringResource).id,
+ *markdownArgs
+ )
+ }
+
return markdownText(markdownString, normalStyle, boldStyle, normalColor, boldColor, errorColor, isErrorString)
}
@@ -699,7 +719,18 @@ private fun SystemMessage.MemberFailedToAdd.toFailedToAddMarkdownText(
if (isMultipleUsersFailure) failedToAddAnnotatedText.append("\n\n")
failedToAddAnnotatedText.append(
markdownText(
- res.getString(stringResId, memberNames.limitUserNamesList(res, true).toUserNamesListMarkdownString(res)),
+ when (stringResId) {
+ is LocalizedStringResource.PluralResource -> res.getQuantityString(
+ stringResId.id,
+ stringResId.quantity,
+ stringResId.formatArgs
+ )
+
+ is LocalizedStringResource.StringResource -> res.getString(
+ stringResId.id,
+ memberNames.limitUserNamesList(res, true).toUserNamesListMarkdownString(res)
+ )
+ },
normalStyle,
boldStyle,
normalColor,
diff --git a/app/src/main/kotlin/com/wire/android/ui/home/conversations/model/UIMessage.kt b/app/src/main/kotlin/com/wire/android/ui/home/conversations/model/UIMessage.kt
index 38f5ef8fdcc..693072af39a 100644
--- a/app/src/main/kotlin/com/wire/android/ui/home/conversations/model/UIMessage.kt
+++ b/app/src/main/kotlin/com/wire/android/ui/home/conversations/model/UIMessage.kt
@@ -22,6 +22,7 @@ package com.wire.android.ui.home.conversations.model
import android.content.res.Resources
import androidx.annotation.DrawableRes
+import androidx.annotation.PluralsRes
import androidx.annotation.StringRes
import androidx.compose.runtime.Stable
import com.wire.android.R
@@ -30,6 +31,7 @@ import com.wire.android.model.UserAvatarData
import com.wire.android.ui.home.conversationslist.model.Membership
import com.wire.android.ui.home.messagecomposer.SelfDeletionDuration
import com.wire.android.util.Copyable
+import com.wire.android.util.ui.LocalizedStringResource
import com.wire.android.util.ui.UIText
import com.wire.android.util.uiMessageDateTime
import com.wire.kalium.logic.data.conversation.ClientId
@@ -279,11 +281,32 @@ sealed class UIMessageContent {
sealed class SystemMessage(
@DrawableRes val iconResId: Int?,
- @StringRes open val stringResId: Int,
+ open val stringResId: LocalizedStringResource,
@StringRes val learnMoreResId: Int? = null,
val isSmallIcon: Boolean = true,
) : UIMessageContent() {
+ constructor(
+ @DrawableRes iconResId: Int?,
+ @StringRes stringResId: Int,
+ isSmallIcon: Boolean = true,
+ @StringRes learnMoreResId: Int? = null
+ ) : this(iconResId, LocalizedStringResource.StringResource(stringResId), learnMoreResId, isSmallIcon)
+
+ constructor(
+ @DrawableRes iconResId: Int?,
+ @PluralsRes stringResId: Int,
+ quantity: Int,
+ formatArgs: List,
+ isSmallIcon: Boolean = true,
+ @StringRes learnMoreResId: Int? = null
+ ) : this(
+ iconResId,
+ LocalizedStringResource.PluralResource(stringResId, quantity, formatArgs.toTypedArray()),
+ learnMoreResId,
+ isSmallIcon
+ )
+
data class Knock(val author: UIText, val isSelfTriggered: Boolean) : SystemMessage(
R.drawable.ic_ping,
if (isSelfTriggered) R.string.label_system_message_self_user_knock else R.string.label_system_message_other_user_knock
@@ -319,6 +342,16 @@ sealed class UIMessageContent {
if (isSelfTriggered) R.string.label_system_message_removed_by_self else R.string.label_system_message_removed_by_other
)
+ data class TeamMemberRemoved(
+ val author: UIText,
+ val memberNames: List,
+ ) : SystemMessage(
+ R.drawable.ic_minus,
+ R.plurals.label_system_message_team_member_left,
+ quantity = memberNames.size,
+ formatArgs = memberNames
+ )
+
data class MemberLeft(
val author: UIText,
val isSelfTriggered: Boolean = false
@@ -356,7 +389,7 @@ sealed class UIMessageContent {
sealed class MissedCall(
open val author: UIText,
- @StringRes override val stringResId: Int
+ @StringRes stringResId: Int
) : SystemMessage(R.drawable.ic_call_end, stringResId) {
data class YouCalled(override val author: UIText) : MissedCall(author, R.string.label_system_message_you_called)
@@ -366,8 +399,16 @@ sealed class UIMessageContent {
data class RenamedConversation(val author: UIText, val content: MessageContent.ConversationRenamed) :
SystemMessage(R.drawable.ic_edit, R.string.label_system_message_renamed_the_conversation)
- data class TeamMemberRemoved(val content: MessageContent.TeamMemberRemoved) :
- SystemMessage(R.drawable.ic_minus, R.string.label_system_message_team_member_left)
+ @Deprecated("Use TeamMemberRemoved")
+ @Suppress("ClassNaming")
+ data class TeamMemberRemoved_Legacy(val content: MessageContent.TeamMemberRemoved) :
+ SystemMessage(
+ R.drawable.ic_minus,
+ R.plurals.label_system_message_team_member_left,
+ quantity = 0,
+ formatArgs = emptyList(),
+ true
+ )
data class CryptoSessionReset(val author: UIText) :
SystemMessage(R.drawable.ic_info, R.string.label_system_message_session_reset)
@@ -493,18 +534,25 @@ sealed class UIMessageContent {
)
sealed class LegalHold(
- @StringRes stringResId: Int,
+ stringResId: LocalizedStringResource.StringResource,
@StringRes learnMoreResId: Int? = null,
open val memberNames: List? = null,
) : SystemMessage(R.drawable.ic_legal_hold, stringResId, learnMoreResId) {
- sealed class Enabled(@StringRes override val stringResId: Int) : LegalHold(stringResId, R.string.url_legal_hold_learn_more) {
+ sealed class Enabled(override val stringResId: LocalizedStringResource.StringResource) :
+ LegalHold(stringResId, R.string.url_legal_hold_learn_more) {
+
+ constructor(@StringRes stringResId: Int) : this(LocalizedStringResource.StringResource(stringResId))
+
data object Self : Enabled(R.string.legal_hold_system_message_enabled_self)
data class Others(override val memberNames: List) : Enabled(R.string.legal_hold_system_message_enabled_others)
data object Conversation : Enabled(R.string.legal_hold_system_message_enabled_conversation)
}
- sealed class Disabled(@StringRes override val stringResId: Int) : LegalHold(stringResId, null) {
+ sealed class Disabled(override val stringResId: LocalizedStringResource.StringResource) : LegalHold(stringResId, null) {
+
+ constructor(@StringRes stringResId: Int) : this(LocalizedStringResource.StringResource(stringResId))
+
data object Self : Disabled(R.string.legal_hold_system_message_disabled_self)
data class Others(override val memberNames: List) : Disabled(R.string.legal_hold_system_message_disabled_others)
data object Conversation : Disabled(R.string.legal_hold_system_message_disabled_conversation)
diff --git a/app/src/main/kotlin/com/wire/android/util/ui/LocalizedStringResource.kt b/app/src/main/kotlin/com/wire/android/util/ui/LocalizedStringResource.kt
new file mode 100644
index 00000000000..69d1d7e60bb
--- /dev/null
+++ b/app/src/main/kotlin/com/wire/android/util/ui/LocalizedStringResource.kt
@@ -0,0 +1,53 @@
+/*
+ * Wire
+ * Copyright (C) 2023 Wire Swiss GmbH
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see http://www.gnu.org/licenses/.
+ */
+package com.wire.android.util.ui
+
+import android.content.Context
+import androidx.annotation.PluralsRes
+import androidx.annotation.StringRes
+
+sealed interface LocalizedStringResource {
+
+ fun getString(context: Context): String
+ data class StringResource(@StringRes val id: Int) : LocalizedStringResource {
+ override fun getString(context: Context): String = context.getString(id)
+ }
+
+ data class PluralResource(@PluralsRes val id: Int, val quantity: Int, val formatArgs: Array) : LocalizedStringResource {
+ override fun getString(context: Context): String = context.resources.getQuantityString(id, quantity, formatArgs)
+ override fun equals(other: Any?): Boolean {
+ if (this === other) return true
+ if (javaClass != other?.javaClass) return false
+
+ other as PluralResource
+
+ if (id != other.id) return false
+ if (quantity != other.quantity) return false
+ if (!formatArgs.contentEquals(other.formatArgs)) return false
+
+ return true
+ }
+
+ override fun hashCode(): Int {
+ var result = id
+ result = 31 * result + quantity
+ result = 31 * result + formatArgs.contentHashCode()
+ return result
+ }
+ }
+}
diff --git a/app/src/main/res/values-af/strings.xml b/app/src/main/res/values-af/strings.xml
index ab9cd8fddbd..a4cf0bd3cdd 100644
--- a/app/src/main/res/values-af/strings.xml
+++ b/app/src/main/res/values-af/strings.xml
@@ -578,7 +578,10 @@
%1$s blocked this user
%1$s renamed the conversation\n%2$s
- %1$s was removed from the team
+
+ - %1$s was removed from the team
+ - %1$s were removed from the team
+
This user is no longer available
Read receipts are %1$s
%1$s turned read receipts %2$s for everyone
diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml
index c78c44253a9..7282922682e 100644
--- a/app/src/main/res/values-ar/strings.xml
+++ b/app/src/main/res/values-ar/strings.xml
@@ -586,7 +586,10 @@
%1$s blocked this user
%1$s renamed the conversation\n%2$s
- %1$s was removed from the team
+
+ - %1$s was removed from the team
+ - %1$s were removed from the team
+
This user is no longer available
Read receipts are %1$s
%1$s turned read receipts %2$s for everyone
diff --git a/app/src/main/res/values-bn/strings.xml b/app/src/main/res/values-bn/strings.xml
index 1dba38174bf..17e8bd23a33 100644
--- a/app/src/main/res/values-bn/strings.xml
+++ b/app/src/main/res/values-bn/strings.xml
@@ -578,7 +578,10 @@
%1$s blocked this user
%1$s renamed the conversation\n%2$s
- %1$s was removed from the team
+
+ - %1$s was removed from the team
+ - %1$s were removed from the team
+
This user is no longer available
Read receipts are %1$s
%1$s turned read receipts %2$s for everyone
diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml
index ab9cd8fddbd..a4cf0bd3cdd 100644
--- a/app/src/main/res/values-ca/strings.xml
+++ b/app/src/main/res/values-ca/strings.xml
@@ -578,7 +578,10 @@
%1$s blocked this user
%1$s renamed the conversation\n%2$s
- %1$s was removed from the team
+
+ - %1$s was removed from the team
+ - %1$s were removed from the team
+
This user is no longer available
Read receipts are %1$s
%1$s turned read receipts %2$s for everyone
diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml
index f89c6bb7081..deab67aa37f 100644
--- a/app/src/main/res/values-cs/strings.xml
+++ b/app/src/main/res/values-cs/strings.xml
@@ -582,7 +582,10 @@
%1$s blocked this user
%1$s renamed the conversation\n%2$s
- %1$s was removed from the team
+
+ - %1$s was removed from the team
+ - %1$s were removed from the team
+
This user is no longer available
Read receipts are %1$s
%1$s turned read receipts %2$s for everyone
diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml
index ab9cd8fddbd..a4cf0bd3cdd 100644
--- a/app/src/main/res/values-da/strings.xml
+++ b/app/src/main/res/values-da/strings.xml
@@ -578,7 +578,10 @@
%1$s blocked this user
%1$s renamed the conversation\n%2$s
- %1$s was removed from the team
+
+ - %1$s was removed from the team
+ - %1$s were removed from the team
+
This user is no longer available
Read receipts are %1$s
%1$s turned read receipts %2$s for everyone
diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml
index 981b4c076cd..cf105493c28 100644
--- a/app/src/main/res/values-de/strings.xml
+++ b/app/src/main/res/values-de/strings.xml
@@ -579,7 +579,10 @@
%1$s hat diesen Benutzer blockiert
%1$s hat die Unterhaltung umbenannt\n%2$s
- %1$s wurde aus dem Team entfernt
+
+ - %1$s wurde aus dem Team entfernt
+ - %1$s werden aus dem Team entfernt
+
Dieser Benutzer ist nicht mehr verfügbar
Lesebestätigungen sind %1$s
%1$s haben Lesebestätigungen für alle %2$sgeschaltet
diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml
index ab9cd8fddbd..a4cf0bd3cdd 100644
--- a/app/src/main/res/values-el/strings.xml
+++ b/app/src/main/res/values-el/strings.xml
@@ -578,7 +578,10 @@
%1$s blocked this user
%1$s renamed the conversation\n%2$s
- %1$s was removed from the team
+
+ - %1$s was removed from the team
+ - %1$s were removed from the team
+
This user is no longer available
Read receipts are %1$s
%1$s turned read receipts %2$s for everyone
diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
index a008a9ec77a..49a9ca2c168 100644
--- a/app/src/main/res/values-es/strings.xml
+++ b/app/src/main/res/values-es/strings.xml
@@ -576,7 +576,10 @@ Hasta 500 personas pueden unirse a una conversación en grupo.
%1$s bloqueó a este usuario
%1$s renombró la conversación
%2$s
- %1$s fue eliminado del equipo
+
+ - %1$s was removed from the team
+ - %1$s were removed from the team
+
Este usuario ya no está disponible
Los recibos de lectura están %1$s
%1$s cambió los recibos de lectura %2$s para todos
diff --git a/app/src/main/res/values-et/strings.xml b/app/src/main/res/values-et/strings.xml
index 2697dda3963..564d81f6a6d 100644
--- a/app/src/main/res/values-et/strings.xml
+++ b/app/src/main/res/values-et/strings.xml
@@ -578,7 +578,10 @@
%1$s blokeeris selle kasutaja
%1$s muutis vestluse nime:\n%2$s
- %1$s eemaldati meeskonnast
+
+ - %1$s was removed from the team
+ - %1$s were removed from the team
+
This user is no longer available
Read receipts are %1$s
%1$s turned read receipts %2$s for everyone
diff --git a/app/src/main/res/values-fa/strings.xml b/app/src/main/res/values-fa/strings.xml
index 1dba38174bf..17e8bd23a33 100644
--- a/app/src/main/res/values-fa/strings.xml
+++ b/app/src/main/res/values-fa/strings.xml
@@ -578,7 +578,10 @@
%1$s blocked this user
%1$s renamed the conversation\n%2$s
- %1$s was removed from the team
+
+ - %1$s was removed from the team
+ - %1$s were removed from the team
+
This user is no longer available
Read receipts are %1$s
%1$s turned read receipts %2$s for everyone
diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml
index ab9cd8fddbd..a4cf0bd3cdd 100644
--- a/app/src/main/res/values-fi/strings.xml
+++ b/app/src/main/res/values-fi/strings.xml
@@ -578,7 +578,10 @@
%1$s blocked this user
%1$s renamed the conversation\n%2$s
- %1$s was removed from the team
+
+ - %1$s was removed from the team
+ - %1$s were removed from the team
+
This user is no longer available
Read receipts are %1$s
%1$s turned read receipts %2$s for everyone
diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml
index 29c1fc36b0c..e3530013e4e 100644
--- a/app/src/main/res/values-fr/strings.xml
+++ b/app/src/main/res/values-fr/strings.xml
@@ -567,7 +567,10 @@
%1$s blocked this user
%1$s renamed the conversation\n%2$s
- %1$s was removed from the team
+
+ - %1$s was removed from the team
+ - %1$s were removed from the team
+
This user is no longer available
Read receipts are %1$s
%1$s turned read receipts %2$s for everyone
diff --git a/app/src/main/res/values-he/strings.xml b/app/src/main/res/values-he/strings.xml
index a3c3d5241be..d2485d1e0af 100644
--- a/app/src/main/res/values-he/strings.xml
+++ b/app/src/main/res/values-he/strings.xml
@@ -582,7 +582,10 @@
%1$s blocked this user
%1$s renamed the conversation\n%2$s
- %1$s was removed from the team
+
+ - %1$s was removed from the team
+ - %1$s were removed from the team
+
This user is no longer available
Read receipts are %1$s
%1$s turned read receipts %2$s for everyone
diff --git a/app/src/main/res/values-hi/strings.xml b/app/src/main/res/values-hi/strings.xml
index 1dba38174bf..17e8bd23a33 100644
--- a/app/src/main/res/values-hi/strings.xml
+++ b/app/src/main/res/values-hi/strings.xml
@@ -578,7 +578,10 @@
%1$s blocked this user
%1$s renamed the conversation\n%2$s
- %1$s was removed from the team
+
+ - %1$s was removed from the team
+ - %1$s were removed from the team
+
This user is no longer available
Read receipts are %1$s
%1$s turned read receipts %2$s for everyone
diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml
index 0e6e1e034a7..22c31d913a8 100644
--- a/app/src/main/res/values-hr/strings.xml
+++ b/app/src/main/res/values-hr/strings.xml
@@ -573,7 +573,10 @@
%1$s blocked this user
%1$s renamed the conversation\n%2$s
- %1$s was removed from the team
+
+ - %1$s was removed from the team
+ - %1$s were removed from the team
+
This user is no longer available
Read receipts are %1$s
%1$s turned read receipts %2$s for everyone
diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml
index 5ce66ca707c..9c21b7a7b0d 100644
--- a/app/src/main/res/values-hu/strings.xml
+++ b/app/src/main/res/values-hu/strings.xml
@@ -578,7 +578,10 @@
%1$s letiltotta ezt a felhasználót
%1$s átnevezte a beszélgetést\n%2$s
- %1$s el lett távolítva a csapatból
+
+ - %1$s was removed from the team
+ - %1$s were removed from the team
+
Ez a felhasználó már nem elérhető
Tértivevények %1$s vannak kapcsolva
%1$s a tértivevényeket %2$skapcsolta mindenki számára
diff --git a/app/src/main/res/values-id/strings.xml b/app/src/main/res/values-id/strings.xml
index 17df8ffe703..595de5e951a 100644
--- a/app/src/main/res/values-id/strings.xml
+++ b/app/src/main/res/values-id/strings.xml
@@ -576,7 +576,10 @@
%1$s blocked this user
%1$s renamed the conversation\n%2$s
- %1$s was removed from the team
+
+ - %1$s was removed from the team
+ - %1$s were removed from the team
+
This user is no longer available
Read receipts are %1$s
%1$s turned read receipts %2$s for everyone
diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml
index 88c0fe194bb..a2ea38b7329 100644
--- a/app/src/main/res/values-it/strings.xml
+++ b/app/src/main/res/values-it/strings.xml
@@ -576,7 +576,10 @@ Fino a 500 persone possono unirsi a una conversazione di gruppo.
%1$s ha bloccato questo utente
%1$s ha rinominato la conversazione
%2$s
- %1$s è stato rimosso dal team
+
+ - %1$s was removed from the team
+ - %1$s were removed from the team
+
Questo utente non è più disponibile
Le ricevute di lettura sono %1$s
%1$s ha %2$s le ricevute di lettura per tutti
diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml
index c3dffce2dfa..b795869796c 100644
--- a/app/src/main/res/values-ja/strings.xml
+++ b/app/src/main/res/values-ja/strings.xml
@@ -576,7 +576,10 @@
%1$s blocked this user
%1$s renamed the conversation\n%2$s
- %1$s was removed from the team
+
+ - %1$s was removed from the team
+ - %1$s were removed from the team
+
This user is no longer available
Read receipts are %1$s
%1$s turned read receipts %2$s for everyone
diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml
index c3dffce2dfa..b795869796c 100644
--- a/app/src/main/res/values-ko/strings.xml
+++ b/app/src/main/res/values-ko/strings.xml
@@ -576,7 +576,10 @@
%1$s blocked this user
%1$s renamed the conversation\n%2$s
- %1$s was removed from the team
+
+ - %1$s was removed from the team
+ - %1$s were removed from the team
+
This user is no longer available
Read receipts are %1$s
%1$s turned read receipts %2$s for everyone
diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml
index a5a67ae8fd1..e4f1de9bd16 100644
--- a/app/src/main/res/values-lt/strings.xml
+++ b/app/src/main/res/values-lt/strings.xml
@@ -582,7 +582,10 @@
%1$s blocked this user
%1$s renamed the conversation\n%2$s
- %1$s was removed from the team
+
+ - %1$s was removed from the team
+ - %1$s were removed from the team
+
This user is no longer available
Read receipts are %1$s
%1$s turned read receipts %2$s for everyone
diff --git a/app/src/main/res/values-mk/strings.xml b/app/src/main/res/values-mk/strings.xml
index 1dba38174bf..17e8bd23a33 100644
--- a/app/src/main/res/values-mk/strings.xml
+++ b/app/src/main/res/values-mk/strings.xml
@@ -578,7 +578,10 @@
%1$s blocked this user
%1$s renamed the conversation\n%2$s
- %1$s was removed from the team
+
+ - %1$s was removed from the team
+ - %1$s were removed from the team
+
This user is no longer available
Read receipts are %1$s
%1$s turned read receipts %2$s for everyone
diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml
index ab9cd8fddbd..a4cf0bd3cdd 100644
--- a/app/src/main/res/values-nl/strings.xml
+++ b/app/src/main/res/values-nl/strings.xml
@@ -578,7 +578,10 @@
%1$s blocked this user
%1$s renamed the conversation\n%2$s
- %1$s was removed from the team
+
+ - %1$s was removed from the team
+ - %1$s were removed from the team
+
This user is no longer available
Read receipts are %1$s
%1$s turned read receipts %2$s for everyone
diff --git a/app/src/main/res/values-no/strings.xml b/app/src/main/res/values-no/strings.xml
index ab9cd8fddbd..a4cf0bd3cdd 100644
--- a/app/src/main/res/values-no/strings.xml
+++ b/app/src/main/res/values-no/strings.xml
@@ -578,7 +578,10 @@
%1$s blocked this user
%1$s renamed the conversation\n%2$s
- %1$s was removed from the team
+
+ - %1$s was removed from the team
+ - %1$s were removed from the team
+
This user is no longer available
Read receipts are %1$s
%1$s turned read receipts %2$s for everyone
diff --git a/app/src/main/res/values-pa/strings.xml b/app/src/main/res/values-pa/strings.xml
index 1dba38174bf..17e8bd23a33 100644
--- a/app/src/main/res/values-pa/strings.xml
+++ b/app/src/main/res/values-pa/strings.xml
@@ -578,7 +578,10 @@
%1$s blocked this user
%1$s renamed the conversation\n%2$s
- %1$s was removed from the team
+
+ - %1$s was removed from the team
+ - %1$s were removed from the team
+
This user is no longer available
Read receipts are %1$s
%1$s turned read receipts %2$s for everyone
diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml
index b4eda8da382..81700bb213e 100644
--- a/app/src/main/res/values-pl/strings.xml
+++ b/app/src/main/res/values-pl/strings.xml
@@ -582,7 +582,10 @@ Do grupy może dołączyć maksymalnie 500 osób.
%1$s zablokował(a) tego użytkownika
%1$s zmienił(a) nazwę konwersacji na:
%2$s
- %1$s został(a) usunięty(a) z tego zespołu
+
+ - %1$s was removed from the team
+ - %1$s were removed from the team
+
Ten użytkownik nie jest już dostępny
Tryb potwierdzeń odczytu: %1$s
%1$s zmienił(a) tryb odczytu na %2$s dla wszystkich
diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml
index f84e9769d76..d63e654772a 100644
--- a/app/src/main/res/values-pt/strings.xml
+++ b/app/src/main/res/values-pt/strings.xml
@@ -577,7 +577,10 @@ Até 500 pessoas podem participar de uma conversa em grupo.
%1$s bloqueou este usuário
%1$s renomeou a conversa %2$s
- %1$s foi removido da equipe
+
+ - %1$s was removed from the team
+ - %1$s were removed from the team
+
Este usuário não está mais disponível
As confirmações de leitura estão %1$s
%1$s ativou as confirmações de leitura para %2$s
diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml
index 2c256a34774..36075200983 100644
--- a/app/src/main/res/values-ro/strings.xml
+++ b/app/src/main/res/values-ro/strings.xml
@@ -580,7 +580,10 @@
%1$s blocked this user
%1$s renamed the conversation\n%2$s
- %1$s was removed from the team
+
+ - %1$s was removed from the team
+ - %1$s were removed from the team
+
This user is no longer available
Read receipts are %1$s
%1$s turned read receipts %2$s for everyone
diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml
index cf4c38db249..495fd74dc22 100644
--- a/app/src/main/res/values-ru/strings.xml
+++ b/app/src/main/res/values-ru/strings.xml
@@ -582,7 +582,10 @@
%1$s заблокировал(-а) этого пользователя
%1$s переименовал эту беседу\n%2$s
- %1$s был(-а) удален(-а) из команды
+
+ - %1$s was removed from the team
+ - %1$s were removed from the team
+
Этот пользователь больше не доступен
Отчеты о прочтении %1$s
%1$s включил отчеты о прочтении %2$s для всех
diff --git a/app/src/main/res/values-si/strings.xml b/app/src/main/res/values-si/strings.xml
index d520b67f8ed..94d0406e316 100644
--- a/app/src/main/res/values-si/strings.xml
+++ b/app/src/main/res/values-si/strings.xml
@@ -568,7 +568,10 @@
%1$s මෙම පරිශ්රීලකයාව අවහිර කළා
%1$s සංවාදය නැවත නම් කළා\n%2$s
- %1$s කණ්ඩායමෙන් ඉවත් කර ඇත
+
+ - %1$s was removed from the team
+ - %1$s were removed from the team
+
මෙම පරිශ්රීලකයා තවදුරටත් නැත
කියවූ බවට ලදුපත් %1$s
%1$s සැමට කියවූ බටව ලදුපත් %2$s කළා
diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml
index 4f5ac92a438..cc8dd7640dc 100644
--- a/app/src/main/res/values-sk/strings.xml
+++ b/app/src/main/res/values-sk/strings.xml
@@ -582,7 +582,10 @@
%1$s blocked this user
%1$s renamed the conversation\n%2$s
- %1$s was removed from the team
+
+ - %1$s was removed from the team
+ - %1$s were removed from the team
+
This user is no longer available
Read receipts are %1$s
%1$s turned read receipts %2$s for everyone
diff --git a/app/src/main/res/values-sl/strings.xml b/app/src/main/res/values-sl/strings.xml
index 5aee9b4c303..f51f061ccbc 100644
--- a/app/src/main/res/values-sl/strings.xml
+++ b/app/src/main/res/values-sl/strings.xml
@@ -582,7 +582,10 @@
%1$s blocked this user
%1$s renamed the conversation\n%2$s
- %1$s was removed from the team
+
+ - %1$s was removed from the team
+ - %1$s were removed from the team
+
This user is no longer available
Read receipts are %1$s
%1$s turned read receipts %2$s for everyone
diff --git a/app/src/main/res/values-sr/strings.xml b/app/src/main/res/values-sr/strings.xml
index 2c256a34774..36075200983 100644
--- a/app/src/main/res/values-sr/strings.xml
+++ b/app/src/main/res/values-sr/strings.xml
@@ -580,7 +580,10 @@
%1$s blocked this user
%1$s renamed the conversation\n%2$s
- %1$s was removed from the team
+
+ - %1$s was removed from the team
+ - %1$s were removed from the team
+
This user is no longer available
Read receipts are %1$s
%1$s turned read receipts %2$s for everyone
diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml
index 6e113f1b6b5..23484f13de8 100644
--- a/app/src/main/res/values-sv/strings.xml
+++ b/app/src/main/res/values-sv/strings.xml
@@ -578,7 +578,10 @@
%1$s blocked this user
%1$s renamed the conversation\n%2$s
- %1$s was removed from the team
+
+ - %1$s was removed from the team
+ - %1$s were removed from the team
+
This user is no longer available
Read receipts are %1$s
%1$s turned read receipts %2$s for everyone
diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml
index 5d4d60ec3fe..92e271fd8d0 100644
--- a/app/src/main/res/values-tr/strings.xml
+++ b/app/src/main/res/values-tr/strings.xml
@@ -578,7 +578,10 @@
%1$s blocked this user
%1$s renamed the conversation\n%2$s
- %1$s was removed from the team
+
+ - %1$s was removed from the team
+ - %1$s were removed from the team
+
This user is no longer available
Read receipts are %1$s
%1$s turned read receipts %2$s for everyone
diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml
index 2c1292cba1d..b7350a35560 100644
--- a/app/src/main/res/values-uk/strings.xml
+++ b/app/src/main/res/values-uk/strings.xml
@@ -582,7 +582,10 @@
%1$s blocked this user
%1$s renamed the conversation\n%2$s
- %1$s was removed from the team
+
+ - %1$s was removed from the team
+ - %1$s were removed from the team
+
This user is no longer available
Read receipts are %1$s
%1$s turned read receipts %2$s for everyone
diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml
index c3dffce2dfa..b795869796c 100644
--- a/app/src/main/res/values-vi/strings.xml
+++ b/app/src/main/res/values-vi/strings.xml
@@ -576,7 +576,10 @@
%1$s blocked this user
%1$s renamed the conversation\n%2$s
- %1$s was removed from the team
+
+ - %1$s was removed from the team
+ - %1$s were removed from the team
+
This user is no longer available
Read receipts are %1$s
%1$s turned read receipts %2$s for everyone
diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml
index 17df8ffe703..595de5e951a 100644
--- a/app/src/main/res/values-zh/strings.xml
+++ b/app/src/main/res/values-zh/strings.xml
@@ -576,7 +576,10 @@
%1$s blocked this user
%1$s renamed the conversation\n%2$s
- %1$s was removed from the team
+
+ - %1$s was removed from the team
+ - %1$s were removed from the team
+
This user is no longer available
Read receipts are %1$s
%1$s turned read receipts %2$s for everyone
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 1d5aa909b04..63dd51ae991 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -593,7 +593,10 @@
%1$s blocked this user
%1$s renamed the conversation\n%2$s
- %1$s was removed from the team
+
+ - %1$s was removed from the team
+ - %1$s were removed from the team
+
This user is no longer available
Read receipts are %1$s
%1$s turned read receipts %2$s for everyone
@@ -643,6 +646,12 @@
- You removed 1 person from the conversation
- You removed %1$d people from the conversation
+
+
+ - 1 person was removed form the team
+ - %1$d people were removed from the team
+
+
You were removed from the conversation
- You and 1 other person were removed from the conversation
diff --git a/app/src/test/kotlin/com/wire/android/mapper/MessagePreviewContentMapperTest.kt b/app/src/test/kotlin/com/wire/android/mapper/MessagePreviewContentMapperTest.kt
index 4e9d55cce1b..15431309943 100644
--- a/app/src/test/kotlin/com/wire/android/mapper/MessagePreviewContentMapperTest.kt
+++ b/app/src/test/kotlin/com/wire/android/mapper/MessagePreviewContentMapperTest.kt
@@ -246,7 +246,7 @@ class MessagePreviewContentMapperTest {
@Test
fun givenSelfUserWasRemovedFromConversationMessage_whenMappingToUILastMessageContent_thenCorrectContentShouldBeReturned() = runTest {
val messagePreview = TestMessage.PREVIEW.copy(
- content = MessagePreviewContent.WithUser.MembersRemoved("admin", isSelfUserRemoved = true, listOf()),
+ content = MessagePreviewContent.WithUser.ConversationMembersRemoved("admin", isSelfUserRemoved = true, listOf()),
)
val uiPreviewMessage = messagePreview.uiLastMessageContent().shouldBeInstanceOf()
@@ -259,7 +259,7 @@ class MessagePreviewContentMapperTest {
runTest {
val otherRemovedUsers = listOf(UserId("otherValue", "a-domain"), UserId("otherValue2", "a-domain2"))
val messagePreview = TestMessage.PREVIEW.copy(
- content = MessagePreviewContent.WithUser.MembersRemoved("admin", isSelfUserRemoved = false, otherRemovedUsers),
+ content = MessagePreviewContent.WithUser.ConversationMembersRemoved("admin", isSelfUserRemoved = false, otherRemovedUsers),
isSelfMessage = true
)
@@ -274,7 +274,7 @@ class MessagePreviewContentMapperTest {
runTest {
val otherRemovedUsers = listOf(UserId("otherValue", "a-domain"), UserId("otherValue2", "a-domain2"))
val messagePreview = TestMessage.PREVIEW.copy(
- content = MessagePreviewContent.WithUser.MembersRemoved(
+ content = MessagePreviewContent.WithUser.ConversationMembersRemoved(
"admin",
isSelfUserRemoved = true,
otherRemovedUsers
diff --git a/kalium b/kalium
index 6d90c8520d7..a1d587fe94c 160000
--- a/kalium
+++ b/kalium
@@ -1 +1 @@
-Subproject commit 6d90c8520d797df2e2009c069253639f15c72b5c
+Subproject commit a1d587fe94c683eaa86d31337654cce6a1f99834