From aaa2d879c27dbd7db22781c76e1e7a6c334c3312 Mon Sep 17 00:00:00 2001 From: Mohamad Jaara Date: Mon, 18 Dec 2023 14:41:05 +0100 Subject: [PATCH] feat: support new reason value on conversation leave event (#2536) --- .../mapper/MessagePreviewContentMapper.kt | 22 +++++-- .../mapper/SystemMessageContentMapper.kt | 7 +- .../home/conversations/SystemMessageItem.kt | 65 ++++++++++++++----- .../ui/home/conversations/model/UIMessage.kt | 62 ++++++++++++++++-- .../util/ui/LocalizedStringResource.kt | 53 +++++++++++++++ app/src/main/res/values-af/strings.xml | 5 +- app/src/main/res/values-ar/strings.xml | 5 +- app/src/main/res/values-bn/strings.xml | 5 +- app/src/main/res/values-ca/strings.xml | 5 +- app/src/main/res/values-cs/strings.xml | 5 +- app/src/main/res/values-da/strings.xml | 5 +- app/src/main/res/values-de/strings.xml | 5 +- app/src/main/res/values-el/strings.xml | 5 +- app/src/main/res/values-es/strings.xml | 5 +- app/src/main/res/values-et/strings.xml | 5 +- app/src/main/res/values-fa/strings.xml | 5 +- app/src/main/res/values-fi/strings.xml | 5 +- app/src/main/res/values-fr/strings.xml | 5 +- app/src/main/res/values-he/strings.xml | 5 +- app/src/main/res/values-hi/strings.xml | 5 +- app/src/main/res/values-hr/strings.xml | 5 +- app/src/main/res/values-hu/strings.xml | 5 +- app/src/main/res/values-id/strings.xml | 5 +- app/src/main/res/values-it/strings.xml | 5 +- app/src/main/res/values-ja/strings.xml | 5 +- app/src/main/res/values-ko/strings.xml | 5 +- app/src/main/res/values-lt/strings.xml | 5 +- app/src/main/res/values-mk/strings.xml | 5 +- app/src/main/res/values-nl/strings.xml | 5 +- app/src/main/res/values-no/strings.xml | 5 +- app/src/main/res/values-pa/strings.xml | 5 +- app/src/main/res/values-pl/strings.xml | 5 +- app/src/main/res/values-pt/strings.xml | 5 +- app/src/main/res/values-ro/strings.xml | 5 +- app/src/main/res/values-ru/strings.xml | 5 +- app/src/main/res/values-si/strings.xml | 5 +- app/src/main/res/values-sk/strings.xml | 5 +- app/src/main/res/values-sl/strings.xml | 5 +- app/src/main/res/values-sr/strings.xml | 5 +- app/src/main/res/values-sv/strings.xml | 5 +- app/src/main/res/values-tr/strings.xml | 5 +- app/src/main/res/values-uk/strings.xml | 5 +- app/src/main/res/values-vi/strings.xml | 5 +- app/src/main/res/values-zh/strings.xml | 5 +- app/src/main/res/values/strings.xml | 11 +++- .../mapper/MessagePreviewContentMapperTest.kt | 6 +- kalium | 2 +- 47 files changed, 349 insertions(+), 74 deletions(-) create mode 100644 app/src/main/kotlin/com/wire/android/util/ui/LocalizedStringResource.kt 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