Merge pull request #3718 from element-hq/feature/bma/verifiedUserBadge
Verified user badge
This commit is contained in:
commit
95d95d4f89
96 changed files with 536 additions and 339 deletions
|
|
@ -16,6 +16,7 @@ import io.element.android.libraries.matrix.api.room.RoomMember
|
|||
import io.element.android.libraries.matrix.api.room.RoomNotificationSettings
|
||||
import io.element.android.libraries.matrix.api.user.MatrixUser
|
||||
import kotlinx.collections.immutable.ImmutableList
|
||||
import kotlinx.collections.immutable.toPersistentList
|
||||
|
||||
data class RoomDetailsState(
|
||||
val roomId: RoomId,
|
||||
|
|
@ -40,7 +41,20 @@ data class RoomDetailsState(
|
|||
val canShowPinnedMessages: Boolean,
|
||||
val pinnedMessagesCount: Int?,
|
||||
val eventSink: (RoomDetailsEvent) -> Unit
|
||||
)
|
||||
) {
|
||||
val roomBadges = buildList {
|
||||
if (isEncrypted || isPublic) {
|
||||
if (isEncrypted) {
|
||||
add(RoomBadge.ENCRYPTED)
|
||||
} else {
|
||||
add(RoomBadge.NOT_ENCRYPTED)
|
||||
}
|
||||
}
|
||||
if (isPublic) {
|
||||
add(RoomBadge.PUBLIC)
|
||||
}
|
||||
}.toPersistentList()
|
||||
}
|
||||
|
||||
@Immutable
|
||||
sealed interface RoomDetailsType {
|
||||
|
|
@ -57,3 +71,9 @@ sealed interface RoomTopicState {
|
|||
data object CanAddTopic : RoomTopicState
|
||||
data class ExistingTopic(val topic: String) : RoomTopicState
|
||||
}
|
||||
|
||||
enum class RoomBadge {
|
||||
ENCRYPTED,
|
||||
NOT_ENCRYPTED,
|
||||
PUBLIC,
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ import io.element.android.features.leaveroom.api.aLeaveRoomState
|
|||
import io.element.android.features.roomdetails.impl.members.aRoomMember
|
||||
import io.element.android.features.userprofile.api.UserProfileState
|
||||
import io.element.android.features.userprofile.shared.aUserProfileState
|
||||
import io.element.android.libraries.architecture.AsyncData
|
||||
import io.element.android.libraries.matrix.api.core.RoomAlias
|
||||
import io.element.android.libraries.matrix.api.core.RoomId
|
||||
import io.element.android.libraries.matrix.api.core.UserId
|
||||
|
|
@ -33,7 +34,7 @@ open class RoomDetailsStateProvider : PreviewParameterProvider<RoomDetailsState>
|
|||
aRoomDetailsState(isEncrypted = false),
|
||||
aRoomDetailsState(roomAlias = null),
|
||||
aDmRoomDetailsState(),
|
||||
aDmRoomDetailsState(isDmMemberIgnored = true),
|
||||
aDmRoomDetailsState(isDmMemberIgnored = true, roomName = "Daniel (ignored and clear)", isEncrypted = false),
|
||||
aRoomDetailsState(canInvite = true),
|
||||
aRoomDetailsState(isFavorite = true),
|
||||
aRoomDetailsState(
|
||||
|
|
@ -136,12 +137,16 @@ fun aRoomNotificationSettings(
|
|||
fun aDmRoomDetailsState(
|
||||
isDmMemberIgnored: Boolean = false,
|
||||
roomName: String = "Daniel",
|
||||
isEncrypted: Boolean = true,
|
||||
) = aRoomDetailsState(
|
||||
roomName = roomName,
|
||||
isPublic = false,
|
||||
isEncrypted = isEncrypted,
|
||||
roomType = RoomDetailsType.Dm(
|
||||
aRoomMember(),
|
||||
aDmRoomMember(isIgnored = isDmMemberIgnored),
|
||||
me = aRoomMember(),
|
||||
otherMember = aDmRoomMember(isIgnored = isDmMemberIgnored),
|
||||
),
|
||||
roomMemberDetailsState = aUserProfileState()
|
||||
roomMemberDetailsState = aUserProfileState(
|
||||
isBlocked = AsyncData.Success(isDmMemberIgnored),
|
||||
)
|
||||
)
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ package io.element.android.features.roomdetails.impl
|
|||
import androidx.compose.foundation.clickable
|
||||
import androidx.compose.foundation.interaction.MutableInteractionSource
|
||||
import androidx.compose.foundation.layout.Arrangement
|
||||
import androidx.compose.foundation.layout.Box
|
||||
import androidx.compose.foundation.layout.Column
|
||||
import androidx.compose.foundation.layout.ColumnScope
|
||||
import androidx.compose.foundation.layout.Row
|
||||
|
|
@ -41,10 +42,11 @@ import im.vector.app.features.analytics.plan.Interaction
|
|||
import io.element.android.compound.theme.ElementTheme
|
||||
import io.element.android.compound.tokens.generated.CompoundIcons
|
||||
import io.element.android.features.leaveroom.api.LeaveRoomView
|
||||
import io.element.android.features.roomdetails.impl.components.RoomBadge
|
||||
import io.element.android.features.userprofile.shared.blockuser.BlockUserDialogs
|
||||
import io.element.android.features.userprofile.shared.blockuser.BlockUserSection
|
||||
import io.element.android.libraries.architecture.coverage.ExcludeFromCoverage
|
||||
import io.element.android.libraries.designsystem.atomic.atoms.MatrixBadgeAtom
|
||||
import io.element.android.libraries.designsystem.atomic.molecules.MatrixBadgeRowMolecule
|
||||
import io.element.android.libraries.designsystem.components.ClickableLinkText
|
||||
import io.element.android.libraries.designsystem.components.avatar.AvatarData
|
||||
import io.element.android.libraries.designsystem.components.avatar.AvatarSize
|
||||
|
|
@ -84,6 +86,7 @@ import io.element.android.libraries.ui.strings.CommonStrings
|
|||
import io.element.android.services.analytics.compose.LocalAnalyticsService
|
||||
import io.element.android.services.analyticsproviders.api.trackers.captureInteraction
|
||||
import kotlinx.collections.immutable.ImmutableList
|
||||
import kotlinx.collections.immutable.toImmutableList
|
||||
import kotlinx.collections.immutable.toPersistentList
|
||||
|
||||
@Composable
|
||||
|
|
@ -114,9 +117,9 @@ fun RoomDetailsView(
|
|||
) { padding ->
|
||||
Column(
|
||||
modifier = Modifier
|
||||
.padding(padding)
|
||||
.verticalScroll(rememberScrollState())
|
||||
.consumeWindowInsets(padding)
|
||||
.padding(padding)
|
||||
.verticalScroll(rememberScrollState())
|
||||
.consumeWindowInsets(padding)
|
||||
) {
|
||||
LeaveRoomView(state = state.leaveRoomState)
|
||||
|
||||
|
|
@ -145,8 +148,7 @@ fun RoomDetailsView(
|
|||
}
|
||||
}
|
||||
BadgeList(
|
||||
isEncrypted = state.isEncrypted,
|
||||
isPublic = state.isPublic,
|
||||
roomBadge = state.roomBadges,
|
||||
modifier = Modifier.align(Alignment.CenterHorizontally),
|
||||
)
|
||||
Spacer(Modifier.height(32.dp))
|
||||
|
|
@ -273,8 +275,8 @@ private fun MainActionsSection(
|
|||
) {
|
||||
Row(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(horizontal = 16.dp),
|
||||
.fillMaxWidth()
|
||||
.padding(horizontal = 16.dp),
|
||||
horizontalArrangement = Arrangement.SpaceEvenly,
|
||||
) {
|
||||
val roomNotificationSettings = state.roomNotificationSettings
|
||||
|
|
@ -333,8 +335,8 @@ private fun RoomHeaderSection(
|
|||
) {
|
||||
Column(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(horizontal = 16.dp),
|
||||
.fillMaxWidth()
|
||||
.padding(horizontal = 16.dp),
|
||||
horizontalAlignment = Alignment.CenterHorizontally,
|
||||
) {
|
||||
CompositeAvatar(
|
||||
|
|
@ -343,8 +345,8 @@ private fun RoomHeaderSection(
|
|||
user.getAvatarData(size = AvatarSize.RoomHeader)
|
||||
}.toPersistentList(),
|
||||
modifier = Modifier
|
||||
.clickable(enabled = avatarUrl != null) { openAvatarPreview(avatarUrl!!) }
|
||||
.testTag(TestTags.roomDetailAvatar)
|
||||
.clickable(enabled = avatarUrl != null) { openAvatarPreview(avatarUrl!!) }
|
||||
.testTag(TestTags.roomDetailAvatar)
|
||||
)
|
||||
TitleAndSubtitle(title = roomName, subtitle = roomAlias?.value)
|
||||
}
|
||||
|
|
@ -360,8 +362,8 @@ private fun DmHeaderSection(
|
|||
) {
|
||||
Column(
|
||||
modifier = modifier
|
||||
.fillMaxWidth()
|
||||
.padding(horizontal = 16.dp),
|
||||
.fillMaxWidth()
|
||||
.padding(horizontal = 16.dp),
|
||||
horizontalAlignment = Alignment.CenterHorizontally,
|
||||
) {
|
||||
DmAvatars(
|
||||
|
|
@ -401,36 +403,43 @@ private fun ColumnScope.TitleAndSubtitle(
|
|||
|
||||
@Composable
|
||||
private fun BadgeList(
|
||||
isEncrypted: Boolean,
|
||||
isPublic: Boolean,
|
||||
roomBadge: ImmutableList<RoomBadge>,
|
||||
modifier: Modifier = Modifier,
|
||||
) {
|
||||
if (isEncrypted || isPublic) {
|
||||
Row(
|
||||
modifier = modifier
|
||||
.padding(start = 16.dp, end = 16.dp, top = 8.dp),
|
||||
horizontalArrangement = Arrangement.spacedBy(8.dp),
|
||||
) {
|
||||
if (isEncrypted) {
|
||||
RoomBadge.View(
|
||||
text = stringResource(R.string.screen_room_details_badge_encrypted),
|
||||
icon = CompoundIcons.LockSolid(),
|
||||
type = RoomBadge.Type.Positive,
|
||||
)
|
||||
} else {
|
||||
RoomBadge.View(
|
||||
text = stringResource(R.string.screen_room_details_badge_not_encrypted),
|
||||
icon = CompoundIcons.LockOff(),
|
||||
type = RoomBadge.Type.Neutral,
|
||||
)
|
||||
}
|
||||
if (isPublic) {
|
||||
RoomBadge.View(
|
||||
text = stringResource(R.string.screen_room_details_badge_public),
|
||||
icon = CompoundIcons.Public(),
|
||||
type = RoomBadge.Type.Neutral,
|
||||
)
|
||||
}
|
||||
Box(modifier = modifier) {
|
||||
if (roomBadge.isNotEmpty()) {
|
||||
MatrixBadgeRowMolecule(
|
||||
data = roomBadge.map {
|
||||
it.toMatrixBadgeData()
|
||||
}.toImmutableList(),
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
private fun RoomBadge.toMatrixBadgeData(): MatrixBadgeAtom.MatrixBadgeData {
|
||||
return when (this) {
|
||||
RoomBadge.ENCRYPTED -> {
|
||||
MatrixBadgeAtom.MatrixBadgeData(
|
||||
text = stringResource(R.string.screen_room_details_badge_encrypted),
|
||||
icon = CompoundIcons.LockSolid(),
|
||||
type = MatrixBadgeAtom.Type.Positive,
|
||||
)
|
||||
}
|
||||
RoomBadge.NOT_ENCRYPTED -> {
|
||||
MatrixBadgeAtom.MatrixBadgeData(
|
||||
text = stringResource(R.string.screen_room_details_badge_not_encrypted),
|
||||
icon = CompoundIcons.LockOff(),
|
||||
type = MatrixBadgeAtom.Type.Neutral,
|
||||
)
|
||||
}
|
||||
RoomBadge.PUBLIC -> {
|
||||
MatrixBadgeAtom.MatrixBadgeData(
|
||||
text = stringResource(R.string.screen_room_details_badge_public),
|
||||
icon = CompoundIcons.Public(),
|
||||
type = MatrixBadgeAtom.Type.Neutral,
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
* Please see LICENSE in the repository root for full details.
|
||||
*/
|
||||
|
||||
package io.element.android.features.roomdetails
|
||||
package io.element.android.features.roomdetails.impl
|
||||
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import app.cash.molecule.RecompositionMode
|
||||
|
|
@ -17,11 +17,7 @@ import im.vector.app.features.analytics.plan.Interaction
|
|||
import io.element.android.features.leaveroom.api.LeaveRoomEvent
|
||||
import io.element.android.features.leaveroom.api.LeaveRoomState
|
||||
import io.element.android.features.leaveroom.api.aLeaveRoomState
|
||||
import io.element.android.features.roomdetails.impl.RoomDetailsEvent
|
||||
import io.element.android.features.roomdetails.impl.RoomDetailsPresenter
|
||||
import io.element.android.features.roomdetails.impl.RoomDetailsState
|
||||
import io.element.android.features.roomdetails.impl.RoomDetailsType
|
||||
import io.element.android.features.roomdetails.impl.RoomTopicState
|
||||
import io.element.android.features.roomdetails.aMatrixRoom
|
||||
import io.element.android.features.roomdetails.impl.members.aRoomMember
|
||||
import io.element.android.features.roomdetails.impl.members.details.RoomMemberDetailsPresenter
|
||||
import io.element.android.features.userprofile.shared.aUserProfileState
|
||||
|
|
@ -125,6 +121,7 @@ class RoomDetailsPresenterTest {
|
|||
)
|
||||
val presenter = createRoomDetailsPresenter(room)
|
||||
presenter.test {
|
||||
skipItems(1)
|
||||
val initialState = awaitItem()
|
||||
assertThat(initialState.roomId).isEqualTo(room.roomId)
|
||||
assertThat(initialState.roomName).isEqualTo(room.displayName)
|
||||
|
|
@ -134,7 +131,6 @@ class RoomDetailsPresenterTest {
|
|||
assertThat(initialState.isEncrypted).isEqualTo(room.isEncrypted)
|
||||
assertThat(initialState.canShowPinnedMessages).isTrue()
|
||||
assertThat(initialState.pinnedMessagesCount).isNull()
|
||||
cancelAndIgnoreRemainingEvents()
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -142,6 +138,7 @@ class RoomDetailsPresenterTest {
|
|||
fun `present - initial state is updated with roomInfo if it exists`() = runTest {
|
||||
val roomInfo = aRoomInfo(
|
||||
name = A_ROOM_NAME,
|
||||
isPublic = true,
|
||||
topic = A_ROOM_TOPIC,
|
||||
avatarUrl = AN_AVATAR_URL,
|
||||
pinnedEventIds = listOf(AN_EVENT_ID),
|
||||
|
|
@ -0,0 +1,56 @@
|
|||
/*
|
||||
* Copyright 2024 New Vector Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
* Please see LICENSE in the repository root for full details.
|
||||
*/
|
||||
|
||||
package io.element.android.features.roomdetails.impl
|
||||
|
||||
import com.google.common.truth.Truth.assertThat
|
||||
import kotlinx.collections.immutable.persistentListOf
|
||||
import org.junit.Test
|
||||
|
||||
class RoomDetailsStateTest {
|
||||
@Test
|
||||
fun `room not public not encrypted should have no badges`() {
|
||||
val sut = aRoomDetailsState(
|
||||
isPublic = false,
|
||||
isEncrypted = false,
|
||||
)
|
||||
assertThat(sut.roomBadges).isEmpty()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `room public not encrypted should have not encrypted and public badges`() {
|
||||
val sut = aRoomDetailsState(
|
||||
isPublic = true,
|
||||
isEncrypted = false,
|
||||
)
|
||||
assertThat(sut.roomBadges).isEqualTo(
|
||||
persistentListOf(RoomBadge.NOT_ENCRYPTED, RoomBadge.PUBLIC)
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `room public encrypted should have encrypted and public badges`() {
|
||||
val sut = aRoomDetailsState(
|
||||
isPublic = true,
|
||||
isEncrypted = true,
|
||||
)
|
||||
assertThat(sut.roomBadges).isEqualTo(
|
||||
persistentListOf(RoomBadge.ENCRYPTED, RoomBadge.PUBLIC)
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `room not public encrypted should have encrypted badges`() {
|
||||
val sut = aRoomDetailsState(
|
||||
isPublic = false,
|
||||
isEncrypted = true,
|
||||
)
|
||||
assertThat(sut.roomBadges).isEqualTo(
|
||||
persistentListOf(RoomBadge.ENCRYPTED)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
@ -16,6 +16,7 @@ data class UserProfileState(
|
|||
val userId: UserId,
|
||||
val userName: String?,
|
||||
val avatarUrl: String?,
|
||||
val isVerified: AsyncData<Boolean>,
|
||||
val isBlocked: AsyncData<Boolean>,
|
||||
val startDmActionState: AsyncAction<RoomId>,
|
||||
val displayConfirmationDialog: ConfirmationDialog?,
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@ import io.element.android.features.userprofile.api.UserProfileState.Confirmation
|
|||
import io.element.android.libraries.architecture.AsyncAction
|
||||
import io.element.android.libraries.architecture.AsyncData
|
||||
import io.element.android.libraries.architecture.Presenter
|
||||
import io.element.android.libraries.architecture.runCatchingUpdatingState
|
||||
import io.element.android.libraries.core.bool.orFalse
|
||||
import io.element.android.libraries.matrix.api.MatrixClient
|
||||
import io.element.android.libraries.matrix.api.core.RoomId
|
||||
|
|
@ -75,6 +76,7 @@ class UserProfilePresenter @AssistedInject constructor(
|
|||
var userProfile by remember { mutableStateOf<MatrixUser?>(null) }
|
||||
val startDmActionState: MutableState<AsyncAction<RoomId>> = remember { mutableStateOf(AsyncAction.Uninitialized) }
|
||||
val isBlocked: MutableState<AsyncData<Boolean>> = remember { mutableStateOf(AsyncData.Uninitialized) }
|
||||
val isVerified: MutableState<AsyncData<Boolean>> = remember { mutableStateOf(AsyncData.Uninitialized) }
|
||||
val dmRoomId by getDmRoomId()
|
||||
val canCall by getCanCall(dmRoomId)
|
||||
LaunchedEffect(Unit) {
|
||||
|
|
@ -87,6 +89,11 @@ class UserProfilePresenter @AssistedInject constructor(
|
|||
LaunchedEffect(Unit) {
|
||||
userProfile = client.getProfile(userId).getOrNull()
|
||||
}
|
||||
LaunchedEffect(Unit) {
|
||||
suspend {
|
||||
client.encryptionService().isUserVerified(userId).getOrThrow()
|
||||
}.runCatchingUpdatingState(isVerified)
|
||||
}
|
||||
|
||||
fun handleEvents(event: UserProfileEvents) {
|
||||
when (event) {
|
||||
|
|
@ -126,6 +133,7 @@ class UserProfilePresenter @AssistedInject constructor(
|
|||
userName = userProfile?.displayName,
|
||||
avatarUrl = userProfile?.avatarUrl,
|
||||
isBlocked = isBlocked.value,
|
||||
isVerified = isVerified.value,
|
||||
startDmActionState = startDmActionState.value,
|
||||
displayConfirmationDialog = confirmationDialog,
|
||||
isCurrentUser = isCurrentUser,
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@ import io.element.android.libraries.matrix.test.A_THROWABLE
|
|||
import io.element.android.libraries.matrix.test.A_USER_ID
|
||||
import io.element.android.libraries.matrix.test.A_USER_ID_2
|
||||
import io.element.android.libraries.matrix.test.FakeMatrixClient
|
||||
import io.element.android.libraries.matrix.test.encryption.FakeEncryptionService
|
||||
import io.element.android.libraries.matrix.test.room.FakeMatrixRoom
|
||||
import io.element.android.libraries.matrix.ui.components.aMatrixUser
|
||||
import io.element.android.tests.testutils.WarmUpRule
|
||||
|
|
@ -43,7 +44,7 @@ class UserProfilePresenterTest {
|
|||
@Test
|
||||
fun `present - returns the user profile data`() = runTest {
|
||||
val matrixUser = aMatrixUser(A_USER_ID.value, "Alice", "anAvatarUrl")
|
||||
val client = FakeMatrixClient().apply {
|
||||
val client = createFakeMatrixClient().apply {
|
||||
givenGetProfileResult(A_USER_ID, Result.success(matrixUser))
|
||||
}
|
||||
val presenter = createUserProfilePresenter(
|
||||
|
|
@ -55,6 +56,7 @@ class UserProfilePresenterTest {
|
|||
assertThat(initialState.userName).isEqualTo(matrixUser.displayName)
|
||||
assertThat(initialState.avatarUrl).isEqualTo(matrixUser.avatarUrl)
|
||||
assertThat(initialState.isBlocked).isEqualTo(AsyncData.Success(false))
|
||||
assertThat(initialState.isVerified.dataOrNull()).isFalse()
|
||||
assertThat(initialState.dmRoomId).isEqualTo(A_ROOM_ID)
|
||||
assertThat(initialState.canCall).isFalse()
|
||||
}
|
||||
|
|
@ -108,7 +110,7 @@ class UserProfilePresenterTest {
|
|||
val room = FakeMatrixRoom(
|
||||
canUserJoinCallResult = { canUserJoinCallResult },
|
||||
)
|
||||
val client = FakeMatrixClient().apply {
|
||||
val client = createFakeMatrixClient().apply {
|
||||
if (canFindRoom) {
|
||||
givenGetRoomResult(A_ROOM_ID, room)
|
||||
}
|
||||
|
|
@ -126,7 +128,7 @@ class UserProfilePresenterTest {
|
|||
|
||||
@Test
|
||||
fun `present - returns empty data in case of failure`() = runTest {
|
||||
val client = FakeMatrixClient().apply {
|
||||
val client = createFakeMatrixClient().apply {
|
||||
givenGetProfileResult(A_USER_ID, Result.failure(AN_EXCEPTION))
|
||||
}
|
||||
val presenter = createUserProfilePresenter(
|
||||
|
|
@ -153,14 +155,12 @@ class UserProfilePresenterTest {
|
|||
|
||||
dialogState.eventSink(UserProfileEvents.ClearConfirmationDialog)
|
||||
assertThat(awaitItem().displayConfirmationDialog).isNull()
|
||||
|
||||
ensureAllEventsConsumed()
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `present - BlockUser and UnblockUser without confirmation change the 'blocked' state`() = runTest {
|
||||
val client = FakeMatrixClient()
|
||||
val client = createFakeMatrixClient()
|
||||
val presenter = createUserProfilePresenter(
|
||||
client = client,
|
||||
userId = A_USER_ID
|
||||
|
|
@ -181,7 +181,7 @@ class UserProfilePresenterTest {
|
|||
|
||||
@Test
|
||||
fun `present - BlockUser with error`() = runTest {
|
||||
val matrixClient = FakeMatrixClient()
|
||||
val matrixClient = createFakeMatrixClient()
|
||||
matrixClient.givenIgnoreUserResult(Result.failure(A_THROWABLE))
|
||||
val presenter = createUserProfilePresenter(client = matrixClient)
|
||||
presenter.test {
|
||||
|
|
@ -198,7 +198,7 @@ class UserProfilePresenterTest {
|
|||
|
||||
@Test
|
||||
fun `present - UnblockUser with error`() = runTest {
|
||||
val matrixClient = FakeMatrixClient()
|
||||
val matrixClient = createFakeMatrixClient()
|
||||
matrixClient.givenUnignoreUserResult(Result.failure(A_THROWABLE))
|
||||
val presenter = createUserProfilePresenter(client = matrixClient)
|
||||
presenter.test {
|
||||
|
|
@ -225,8 +225,6 @@ class UserProfilePresenterTest {
|
|||
|
||||
dialogState.eventSink(UserProfileEvents.ClearConfirmationDialog)
|
||||
assertThat(awaitItem().displayConfirmationDialog).isNull()
|
||||
|
||||
ensureAllEventsConsumed()
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -262,13 +260,34 @@ class UserProfilePresenterTest {
|
|||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `present - when user is verified, the value in the state is true`() = runTest {
|
||||
val client = createFakeMatrixClient(isUserVerified = true)
|
||||
val presenter = createUserProfilePresenter(
|
||||
client = client,
|
||||
)
|
||||
presenter.test {
|
||||
assertThat(awaitItem().isVerified.isUninitialized()).isTrue()
|
||||
assertThat(awaitItem().isVerified.isLoading()).isTrue()
|
||||
assertThat(awaitItem().isVerified.dataOrNull()).isTrue()
|
||||
}
|
||||
}
|
||||
|
||||
private suspend fun <T> ReceiveTurbine<T>.awaitFirstItem(): T {
|
||||
skipItems(1)
|
||||
skipItems(2)
|
||||
return awaitItem()
|
||||
}
|
||||
|
||||
private fun createFakeMatrixClient(
|
||||
isUserVerified: Boolean = false,
|
||||
) = FakeMatrixClient(
|
||||
encryptionService = FakeEncryptionService(
|
||||
isUserVerifiedResult = { Result.success(isUserVerified) }
|
||||
),
|
||||
)
|
||||
|
||||
private fun createUserProfilePresenter(
|
||||
client: MatrixClient = FakeMatrixClient(),
|
||||
client: MatrixClient = createFakeMatrixClient(),
|
||||
userId: UserId = UserId("@alice:server.org"),
|
||||
startDMAction: StartDMAction = FakeStartDMAction()
|
||||
): UserProfilePresenter {
|
||||
|
|
|
|||
|
|
@ -18,9 +18,14 @@ import androidx.compose.runtime.Composable
|
|||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.draw.clipToBounds
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.text.style.TextAlign
|
||||
import androidx.compose.ui.unit.dp
|
||||
import io.element.android.compound.theme.ElementTheme
|
||||
import io.element.android.compound.tokens.generated.CompoundIcons
|
||||
import io.element.android.libraries.architecture.AsyncData
|
||||
import io.element.android.libraries.designsystem.atomic.atoms.MatrixBadgeAtom
|
||||
import io.element.android.libraries.designsystem.atomic.molecules.MatrixBadgeRowMolecule
|
||||
import io.element.android.libraries.designsystem.components.avatar.Avatar
|
||||
import io.element.android.libraries.designsystem.components.avatar.AvatarData
|
||||
import io.element.android.libraries.designsystem.components.avatar.AvatarSize
|
||||
|
|
@ -30,12 +35,15 @@ import io.element.android.libraries.designsystem.theme.components.Text
|
|||
import io.element.android.libraries.matrix.api.core.UserId
|
||||
import io.element.android.libraries.testtags.TestTags
|
||||
import io.element.android.libraries.testtags.testTag
|
||||
import io.element.android.libraries.ui.strings.CommonStrings
|
||||
import kotlinx.collections.immutable.toImmutableList
|
||||
|
||||
@Composable
|
||||
fun UserProfileHeaderSection(
|
||||
avatarUrl: String?,
|
||||
userId: UserId,
|
||||
userName: String?,
|
||||
isUserVerified: AsyncData<Boolean>,
|
||||
openAvatarPreview: (url: String) -> Unit,
|
||||
modifier: Modifier = Modifier
|
||||
) {
|
||||
|
|
@ -48,8 +56,8 @@ fun UserProfileHeaderSection(
|
|||
Avatar(
|
||||
avatarData = AvatarData(userId.value, userName, avatarUrl, AvatarSize.UserHeader),
|
||||
modifier = Modifier
|
||||
.clickable(enabled = avatarUrl != null) { openAvatarPreview(avatarUrl!!) }
|
||||
.testTag(TestTags.memberDetailAvatar)
|
||||
.clickable(enabled = avatarUrl != null) { openAvatarPreview(avatarUrl!!) }
|
||||
.testTag(TestTags.memberDetailAvatar)
|
||||
)
|
||||
Spacer(modifier = Modifier.height(24.dp))
|
||||
if (userName != null) {
|
||||
|
|
@ -65,11 +73,19 @@ fun UserProfileHeaderSection(
|
|||
text = userId.value,
|
||||
style = ElementTheme.typography.fontBodyLgRegular,
|
||||
color = MaterialTheme.colorScheme.secondary,
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(horizontal = 16.dp),
|
||||
textAlign = TextAlign.Center,
|
||||
)
|
||||
if (isUserVerified.dataOrNull() == true) {
|
||||
MatrixBadgeRowMolecule(
|
||||
data = listOf(
|
||||
MatrixBadgeAtom.MatrixBadgeData(
|
||||
text = stringResource(CommonStrings.common_verified),
|
||||
icon = CompoundIcons.Verified(),
|
||||
type = MatrixBadgeAtom.Type.Positive,
|
||||
)
|
||||
).toImmutableList(),
|
||||
)
|
||||
}
|
||||
Spacer(Modifier.height(40.dp))
|
||||
}
|
||||
}
|
||||
|
|
@ -81,6 +97,7 @@ internal fun UserProfileHeaderSectionPreview() = ElementPreview {
|
|||
avatarUrl = null,
|
||||
userId = UserId("@alice:example.com"),
|
||||
userName = "Alice",
|
||||
isUserVerified = AsyncData.Success(true),
|
||||
openAvatarPreview = {},
|
||||
)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,13 +20,12 @@ open class UserProfileStateProvider : PreviewParameterProvider<UserProfileState>
|
|||
get() = sequenceOf(
|
||||
aUserProfileState(),
|
||||
aUserProfileState(userName = null),
|
||||
aUserProfileState(isBlocked = AsyncData.Success(true)),
|
||||
aUserProfileState(isBlocked = AsyncData.Success(true), isVerified = AsyncData.Success(true)),
|
||||
aUserProfileState(displayConfirmationDialog = UserProfileState.ConfirmationDialog.Block),
|
||||
aUserProfileState(displayConfirmationDialog = UserProfileState.ConfirmationDialog.Unblock),
|
||||
aUserProfileState(isBlocked = AsyncData.Loading(true)),
|
||||
aUserProfileState(isBlocked = AsyncData.Loading(true), isVerified = AsyncData.Loading()),
|
||||
aUserProfileState(startDmActionState = AsyncAction.Loading),
|
||||
aUserProfileState(canCall = true),
|
||||
aUserProfileState(dmRoomId = null),
|
||||
// Add other states here
|
||||
)
|
||||
}
|
||||
|
|
@ -36,6 +35,7 @@ fun aUserProfileState(
|
|||
userName: String? = "Daniel",
|
||||
avatarUrl: String? = null,
|
||||
isBlocked: AsyncData<Boolean> = AsyncData.Success(false),
|
||||
isVerified: AsyncData<Boolean> = AsyncData.Success(false),
|
||||
startDmActionState: AsyncAction<RoomId> = AsyncAction.Uninitialized,
|
||||
displayConfirmationDialog: UserProfileState.ConfirmationDialog? = null,
|
||||
isCurrentUser: Boolean = false,
|
||||
|
|
@ -47,6 +47,7 @@ fun aUserProfileState(
|
|||
userName = userName,
|
||||
avatarUrl = avatarUrl,
|
||||
isBlocked = isBlocked,
|
||||
isVerified = isVerified,
|
||||
startDmActionState = startDmActionState,
|
||||
displayConfirmationDialog = displayConfirmationDialog,
|
||||
isCurrentUser = isCurrentUser,
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ import androidx.compose.ui.Modifier
|
|||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.tooling.preview.PreviewParameter
|
||||
import androidx.compose.ui.unit.dp
|
||||
import io.element.android.compound.tokens.generated.CompoundIcons
|
||||
import io.element.android.features.userprofile.api.UserProfileEvents
|
||||
import io.element.android.features.userprofile.api.UserProfileState
|
||||
import io.element.android.features.userprofile.shared.blockuser.BlockUserDialogs
|
||||
|
|
@ -28,9 +29,13 @@ import io.element.android.features.userprofile.shared.blockuser.BlockUserSection
|
|||
import io.element.android.libraries.designsystem.components.async.AsyncActionView
|
||||
import io.element.android.libraries.designsystem.components.async.AsyncActionViewDefaults
|
||||
import io.element.android.libraries.designsystem.components.button.BackButton
|
||||
import io.element.android.libraries.designsystem.components.list.ListItemContent
|
||||
import io.element.android.libraries.designsystem.preview.ElementPreview
|
||||
import io.element.android.libraries.designsystem.preview.PreviewsDayNight
|
||||
import io.element.android.libraries.designsystem.theme.components.IconSource
|
||||
import io.element.android.libraries.designsystem.theme.components.ListItem
|
||||
import io.element.android.libraries.designsystem.theme.components.Scaffold
|
||||
import io.element.android.libraries.designsystem.theme.components.Text
|
||||
import io.element.android.libraries.designsystem.theme.components.TopAppBar
|
||||
import io.element.android.libraries.matrix.api.core.RoomId
|
||||
import io.element.android.libraries.ui.strings.CommonStrings
|
||||
|
|
@ -63,11 +68,11 @@ fun UserProfileView(
|
|||
avatarUrl = state.avatarUrl,
|
||||
userId = state.userId,
|
||||
userName = state.userName,
|
||||
isUserVerified = state.isVerified,
|
||||
openAvatarPreview = { avatarUrl ->
|
||||
openAvatarPreview(state.userName ?: state.userId.value, avatarUrl)
|
||||
},
|
||||
)
|
||||
|
||||
UserProfileMainActionsSection(
|
||||
isCurrentUser = state.isCurrentUser,
|
||||
canCall = state.canCall,
|
||||
|
|
@ -75,10 +80,9 @@ fun UserProfileView(
|
|||
onStartDM = { state.eventSink(UserProfileEvents.StartDM) },
|
||||
onCall = { state.dmRoomId?.let { onStartCall(it) } }
|
||||
)
|
||||
|
||||
Spacer(modifier = Modifier.height(26.dp))
|
||||
|
||||
if (!state.isCurrentUser) {
|
||||
VerifyUserSection(state)
|
||||
BlockUserSection(state)
|
||||
BlockUserDialogs(state)
|
||||
}
|
||||
|
|
@ -98,6 +102,19 @@ fun UserProfileView(
|
|||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
private fun VerifyUserSection(state: UserProfileState) {
|
||||
if (state.isVerified.dataOrNull() == false) {
|
||||
ListItem(
|
||||
headlineContent = { Text(stringResource(R.string.screen_room_member_details_verify_button_title, state.userName ?: state.userId)) },
|
||||
supportingContent = { Text(stringResource(R.string.screen_room_member_details_verify_button_subtitle)) },
|
||||
leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.Lock())),
|
||||
enabled = false,
|
||||
onClick = { },
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@PreviewsDayNight
|
||||
@Composable
|
||||
internal fun UserProfileViewPreview(
|
||||
|
|
|
|||
|
|
@ -6,5 +6,12 @@
|
|||
<string name="screen_dm_details_unblock_alert_action">"Разблакіраваць"</string>
|
||||
<string name="screen_dm_details_unblock_alert_description">"Вы зноў зможаце ўбачыць усе паведамленні."</string>
|
||||
<string name="screen_dm_details_unblock_user">"Разблакіраваць карыстальніка"</string>
|
||||
<string name="screen_room_member_details_block_alert_action">"Заблакіраваць"</string>
|
||||
<string name="screen_room_member_details_block_alert_description">"Заблакіраваныя карыстальнікі не змогуць адпраўляць вам паведамленні, і ўсе іх паведамленні будуць схаваны. Вы можаце разблакіраваць іх у любы час."</string>
|
||||
<string name="screen_room_member_details_block_user">"Заблакіраваць карыстальніка"</string>
|
||||
<string name="screen_room_member_details_title">"Профіль"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_action">"Разблакіраваць"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_description">"Вы зноў зможаце ўбачыць усе паведамленні."</string>
|
||||
<string name="screen_room_member_details_unblock_user">"Разблакіраваць карыстальніка"</string>
|
||||
<string name="screen_start_chat_error_starting_chat">"Пры спробе пачаць чат адбылася памылка"</string>
|
||||
</resources>
|
||||
|
|
|
|||
|
|
@ -4,4 +4,8 @@
|
|||
<string name="screen_dm_details_block_user">"Блокиране на потребителя"</string>
|
||||
<string name="screen_dm_details_unblock_alert_action">"Отблокиране"</string>
|
||||
<string name="screen_dm_details_unblock_user">"Отблокиране на потребителя"</string>
|
||||
<string name="screen_room_member_details_block_alert_action">"Блокиране"</string>
|
||||
<string name="screen_room_member_details_block_user">"Блокиране на потребителя"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_action">"Отблокиране"</string>
|
||||
<string name="screen_room_member_details_unblock_user">"Отблокиране на потребителя"</string>
|
||||
</resources>
|
||||
|
|
|
|||
|
|
@ -6,5 +6,14 @@
|
|||
<string name="screen_dm_details_unblock_alert_action">"Odblokovat"</string>
|
||||
<string name="screen_dm_details_unblock_alert_description">"Znovu uvidíte všechny zprávy od nich."</string>
|
||||
<string name="screen_dm_details_unblock_user">"Odblokovat uživatele"</string>
|
||||
<string name="screen_room_member_details_block_alert_action">"Zablokovat"</string>
|
||||
<string name="screen_room_member_details_block_alert_description">"Blokovaní uživatelé vám nebudou moci posílat zprávy a všechny jejich zprávy budou skryty. Můžete je kdykoli odblokovat."</string>
|
||||
<string name="screen_room_member_details_block_user">"Zablokovat uživatele"</string>
|
||||
<string name="screen_room_member_details_title">"Profil"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_action">"Odblokovat"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_description">"Znovu uvidíte všechny zprávy od nich."</string>
|
||||
<string name="screen_room_member_details_unblock_user">"Odblokovat uživatele"</string>
|
||||
<string name="screen_room_member_details_verify_button_subtitle">"K ověření tohoto uživatele použijte webovou aplikaci."</string>
|
||||
<string name="screen_room_member_details_verify_button_title">"Ověřit %1$s"</string>
|
||||
<string name="screen_start_chat_error_starting_chat">"Při pokusu o zahájení chatu došlo k chybě"</string>
|
||||
</resources>
|
||||
|
|
|
|||
|
|
@ -6,5 +6,12 @@
|
|||
<string name="screen_dm_details_unblock_alert_action">"Blockierung aufheben"</string>
|
||||
<string name="screen_dm_details_unblock_alert_description">"Der Nutzer kann dir wieder Nachrichten senden & alle Nachrichten des Nutzers werden wieder angezeigt."</string>
|
||||
<string name="screen_dm_details_unblock_user">"Blockierung aufheben"</string>
|
||||
<string name="screen_room_member_details_block_alert_action">"Blockieren"</string>
|
||||
<string name="screen_room_member_details_block_alert_description">"Blockierte Benutzer können Dir keine Nachrichten senden und alle ihre alten Nachrichten werden ausgeblendet. Die Blockierung kann jederzeit aufgehoben werden."</string>
|
||||
<string name="screen_room_member_details_block_user">"Benutzer blockieren"</string>
|
||||
<string name="screen_room_member_details_title">"Profil"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_action">"Blockierung aufheben"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_description">"Der Nutzer kann dir wieder Nachrichten senden & alle Nachrichten des Nutzers werden wieder angezeigt."</string>
|
||||
<string name="screen_room_member_details_unblock_user">"Blockierung aufheben"</string>
|
||||
<string name="screen_start_chat_error_starting_chat">"Beim Versuch, einen Chat zu starten, ist ein Fehler aufgetreten"</string>
|
||||
</resources>
|
||||
|
|
|
|||
|
|
@ -6,5 +6,12 @@
|
|||
<string name="screen_dm_details_unblock_alert_action">"Άρση αποκλεισμού"</string>
|
||||
<string name="screen_dm_details_unblock_alert_description">"Θα μπορείς να δεις ξανά όλα τα μηνύματα του."</string>
|
||||
<string name="screen_dm_details_unblock_user">"Κατάργηση αποκλεισμού χρήστη"</string>
|
||||
<string name="screen_room_member_details_block_alert_action">"Αποκλεισμός"</string>
|
||||
<string name="screen_room_member_details_block_alert_description">"Οι αποκλεισμένοι χρήστες δεν θα μπορούν να σου στέλνουν μηνύματα και όλα τα μηνύματά τους θα είναι κρυμμένα. Μπορείς να τα ξεμπλοκάρεις ανά πάσα στιγμή."</string>
|
||||
<string name="screen_room_member_details_block_user">"Αποκλεισμός χρήστη"</string>
|
||||
<string name="screen_room_member_details_title">"Προφίλ"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_action">"Άρση αποκλεισμού"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_description">"Θα μπορείς να δεις ξανά όλα τα μηνύματα του."</string>
|
||||
<string name="screen_room_member_details_unblock_user">"Κατάργηση αποκλεισμού χρήστη"</string>
|
||||
<string name="screen_start_chat_error_starting_chat">"Παρουσιάστηκε σφάλμα κατά την προσπάθεια έναρξης μιας συνομιλίας"</string>
|
||||
</resources>
|
||||
|
|
|
|||
|
|
@ -6,5 +6,11 @@
|
|||
<string name="screen_dm_details_unblock_alert_action">"Desbloquear"</string>
|
||||
<string name="screen_dm_details_unblock_alert_description">"Podrás ver todos sus mensajes de nuevo."</string>
|
||||
<string name="screen_dm_details_unblock_user">"Desbloquear usuario"</string>
|
||||
<string name="screen_room_member_details_block_alert_action">"Bloquear"</string>
|
||||
<string name="screen_room_member_details_block_alert_description">"Los usuarios bloqueados no podrán enviarte mensajes y todos sus mensajes se ocultarán. Puedes desbloquearlos cuando quieras."</string>
|
||||
<string name="screen_room_member_details_block_user">"Bloquear usuario"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_action">"Desbloquear"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_description">"Podrás ver todos sus mensajes de nuevo."</string>
|
||||
<string name="screen_room_member_details_unblock_user">"Desbloquear usuario"</string>
|
||||
<string name="screen_start_chat_error_starting_chat">"Se ha producido un error al intentar iniciar un chat"</string>
|
||||
</resources>
|
||||
|
|
|
|||
|
|
@ -6,5 +6,14 @@
|
|||
<string name="screen_dm_details_unblock_alert_action">"Eemalda blokeering"</string>
|
||||
<string name="screen_dm_details_unblock_alert_description">"Nüüd näed sa jälle kõiki tema sõnumeid"</string>
|
||||
<string name="screen_dm_details_unblock_user">"Eemalda kasutajalt blokeering"</string>
|
||||
<string name="screen_room_member_details_block_alert_action">"Blokeeri"</string>
|
||||
<string name="screen_room_member_details_block_alert_description">"Blokeeritud kasutajad ei saa sulle kirjutada ja kõik nende sõnumid on sinu eest peidetud. Sa saad alati blokeeringu eemaldada."</string>
|
||||
<string name="screen_room_member_details_block_user">"Blokeeri kasutaja"</string>
|
||||
<string name="screen_room_member_details_title">"Profiil"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_action">"Eemalda blokeering"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_description">"Nüüd näed sa jälle kõiki tema sõnumeid"</string>
|
||||
<string name="screen_room_member_details_unblock_user">"Eemalda kasutajalt blokeering"</string>
|
||||
<string name="screen_room_member_details_verify_button_subtitle">"Kasutaja verifitseerimiseks kasuta veebirakendust."</string>
|
||||
<string name="screen_room_member_details_verify_button_title">"Verifitseeri kasutaja %1$s"</string>
|
||||
<string name="screen_start_chat_error_starting_chat">"Vestluse alustamisel tekkis viga"</string>
|
||||
</resources>
|
||||
|
|
|
|||
|
|
@ -5,4 +5,10 @@
|
|||
<string name="screen_dm_details_unblock_alert_action">"رفع انسداد"</string>
|
||||
<string name="screen_dm_details_unblock_alert_description">"قادر خواهید بود دوباره همهٔ پیامهایش را ببینید."</string>
|
||||
<string name="screen_dm_details_unblock_user">"رفع انسداد کاربر"</string>
|
||||
<string name="screen_room_member_details_block_alert_action">"بلوک"</string>
|
||||
<string name="screen_room_member_details_block_user">"انسداد کاربر"</string>
|
||||
<string name="screen_room_member_details_title">"نمایه"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_action">"رفع انسداد"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_description">"قادر خواهید بود دوباره همهٔ پیامهایش را ببینید."</string>
|
||||
<string name="screen_room_member_details_unblock_user">"رفع انسداد کاربر"</string>
|
||||
</resources>
|
||||
|
|
|
|||
|
|
@ -6,5 +6,14 @@
|
|||
<string name="screen_dm_details_unblock_alert_action">"Débloquer"</string>
|
||||
<string name="screen_dm_details_unblock_alert_description">"Vous pourrez à nouveau voir tous ses messages."</string>
|
||||
<string name="screen_dm_details_unblock_user">"Débloquer l’utilisateur"</string>
|
||||
<string name="screen_room_member_details_block_alert_action">"Bloquer"</string>
|
||||
<string name="screen_room_member_details_block_alert_description">"Les utilisateurs bloqués ne pourront pas vous envoyer de messages et tous leurs messages seront masqués. Vous pouvez les débloquer à tout moment."</string>
|
||||
<string name="screen_room_member_details_block_user">"Bloquer l’utilisateur"</string>
|
||||
<string name="screen_room_member_details_title">"Profil"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_action">"Débloquer"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_description">"Vous pourrez à nouveau voir tous ses messages."</string>
|
||||
<string name="screen_room_member_details_unblock_user">"Débloquer l’utilisateur"</string>
|
||||
<string name="screen_room_member_details_verify_button_subtitle">"Utilisez l’application Web pour vérifier cet utilisateur."</string>
|
||||
<string name="screen_room_member_details_verify_button_title">"Vérifier %1$s"</string>
|
||||
<string name="screen_start_chat_error_starting_chat">"Une erreur s’est produite lors de la tentative de création de la discussion"</string>
|
||||
</resources>
|
||||
|
|
|
|||
|
|
@ -6,5 +6,14 @@
|
|||
<string name="screen_dm_details_unblock_alert_action">"Letiltás feloldása"</string>
|
||||
<string name="screen_dm_details_unblock_alert_description">"Újra láthatja az összes üzenetét."</string>
|
||||
<string name="screen_dm_details_unblock_user">"Felhasználó kitiltásának feloldása"</string>
|
||||
<string name="screen_room_member_details_block_alert_action">"Letiltás"</string>
|
||||
<string name="screen_room_member_details_block_alert_description">"A letiltott felhasználók nem fognak tudni üzeneteket küldeni, és az összes üzenetük rejtve lesz. Bármikor feloldhatja a letiltásukat."</string>
|
||||
<string name="screen_room_member_details_block_user">"Felhasználó letiltása"</string>
|
||||
<string name="screen_room_member_details_title">"Profil"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_action">"Letiltás feloldása"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_description">"Újra láthatja az összes üzenetét."</string>
|
||||
<string name="screen_room_member_details_unblock_user">"Felhasználó kitiltásának feloldása"</string>
|
||||
<string name="screen_room_member_details_verify_button_subtitle">"Használja a webes alkalmazást a felhasználó ellenőrzéséhez."</string>
|
||||
<string name="screen_room_member_details_verify_button_title">"A(z) %1$s ellenőrzése"</string>
|
||||
<string name="screen_start_chat_error_starting_chat">"Hiba történt a csevegés indításakor"</string>
|
||||
</resources>
|
||||
|
|
|
|||
|
|
@ -6,5 +6,12 @@
|
|||
<string name="screen_dm_details_unblock_alert_action">"Sblocca"</string>
|
||||
<string name="screen_dm_details_unblock_alert_description">"Potrai vedere di nuovo tutti i suoi messaggi."</string>
|
||||
<string name="screen_dm_details_unblock_user">"Sblocca utente"</string>
|
||||
<string name="screen_room_member_details_block_alert_action">"Blocca"</string>
|
||||
<string name="screen_room_member_details_block_alert_description">"Gli utenti bloccati non saranno in grado di inviarti messaggi e tutti quelli già ricevuti saranno nascosti. Puoi sbloccarli in qualsiasi momento."</string>
|
||||
<string name="screen_room_member_details_block_user">"Blocca utente"</string>
|
||||
<string name="screen_room_member_details_title">"Profilo"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_action">"Sblocca"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_description">"Potrai vedere di nuovo tutti i suoi messaggi."</string>
|
||||
<string name="screen_room_member_details_unblock_user">"Sblocca utente"</string>
|
||||
<string name="screen_start_chat_error_starting_chat">"Si è verificato un errore durante il tentativo di avviare una chat"</string>
|
||||
</resources>
|
||||
|
|
|
|||
|
|
@ -6,5 +6,11 @@
|
|||
<string name="screen_dm_details_unblock_alert_action">"განბლოკვა"</string>
|
||||
<string name="screen_dm_details_unblock_alert_description">"თქვენ კვლავ შეძლებთ მათგან ყველა შეტყობინების ნახვას."</string>
|
||||
<string name="screen_dm_details_unblock_user">"Მომხმარებლის განბლოკვა"</string>
|
||||
<string name="screen_room_member_details_block_alert_action">"დაბლოკვა"</string>
|
||||
<string name="screen_room_member_details_block_alert_description">"დაბლოკილი მომხმარებლები ვერ შეძლებენ თქვენთვის შეტყობინების გაგზავნას და ყველა მათი შეტყობინება თქვენთვის დამალული იქნება. თქვენ მათი განბლოკვა ნებისმეირ დროს შეგიძლიათ."</string>
|
||||
<string name="screen_room_member_details_block_user">"მომხმარებლის დაბლოკვა"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_action">"განბლოკვა"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_description">"თქვენ კვლავ შეძლებთ მათგან ყველა შეტყობინების ნახვას."</string>
|
||||
<string name="screen_room_member_details_unblock_user">"Მომხმარებლის განბლოკვა"</string>
|
||||
<string name="screen_start_chat_error_starting_chat">"ჩატის დაწყების მცდელობისას შეცდომა მოხდა"</string>
|
||||
</resources>
|
||||
|
|
|
|||
|
|
@ -6,5 +6,12 @@
|
|||
<string name="screen_dm_details_unblock_alert_action">"Deblokkeren"</string>
|
||||
<string name="screen_dm_details_unblock_alert_description">"Je zult alle berichten van hen weer kunnen zien."</string>
|
||||
<string name="screen_dm_details_unblock_user">"Gebruiker deblokkeren"</string>
|
||||
<string name="screen_room_member_details_block_alert_action">"Blokkeren"</string>
|
||||
<string name="screen_room_member_details_block_alert_description">"Geblokkeerde gebruikers kunnen je geen berichten sturen en al hun berichten worden verborgen. Je kunt ze op elk moment deblokkeren."</string>
|
||||
<string name="screen_room_member_details_block_user">"Gebruiker blokkeren"</string>
|
||||
<string name="screen_room_member_details_title">"Profiel"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_action">"Deblokkeren"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_description">"Je zult alle berichten van hen weer kunnen zien."</string>
|
||||
<string name="screen_room_member_details_unblock_user">"Gebruiker deblokkeren"</string>
|
||||
<string name="screen_start_chat_error_starting_chat">"Er is een fout opgetreden bij het starten van een chat"</string>
|
||||
</resources>
|
||||
|
|
|
|||
|
|
@ -6,5 +6,12 @@
|
|||
<string name="screen_dm_details_unblock_alert_action">"Odblokuj"</string>
|
||||
<string name="screen_dm_details_unblock_alert_description">"Będziesz mógł ponownie zobaczyć wszystkie wiadomości od tego użytkownika."</string>
|
||||
<string name="screen_dm_details_unblock_user">"Odblokuj użytkownika"</string>
|
||||
<string name="screen_room_member_details_block_alert_action">"Zablokuj"</string>
|
||||
<string name="screen_room_member_details_block_alert_description">"Zablokowani użytkownicy nie będą mogli wysyłać Ci wiadomości, a wszystkie ich wiadomości zostaną ukryte. Możesz odblokować ich w dowolnym momencie."</string>
|
||||
<string name="screen_room_member_details_block_user">"Zablokuj użytkownika"</string>
|
||||
<string name="screen_room_member_details_title">"Profil"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_action">"Odblokuj"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_description">"Będziesz mógł ponownie zobaczyć wszystkie wiadomości od tego użytkownika."</string>
|
||||
<string name="screen_room_member_details_unblock_user">"Odblokuj użytkownika"</string>
|
||||
<string name="screen_start_chat_error_starting_chat">"Wystąpił błąd podczas próby rozpoczęcia czatu"</string>
|
||||
</resources>
|
||||
|
|
|
|||
|
|
@ -6,5 +6,11 @@
|
|||
<string name="screen_dm_details_unblock_alert_action">"Desbloquear"</string>
|
||||
<string name="screen_dm_details_unblock_alert_description">"Você poderá ver todas as mensagens deles novamente."</string>
|
||||
<string name="screen_dm_details_unblock_user">"Desbloquear usuário"</string>
|
||||
<string name="screen_room_member_details_block_alert_action">"Bloquear"</string>
|
||||
<string name="screen_room_member_details_block_alert_description">"Usuários bloqueados não poderão enviar mensagens para você e todas as mensagens deles serão ocultadas. Você pode desbloqueá-los a qualquer momento."</string>
|
||||
<string name="screen_room_member_details_block_user">"Bloquear usuário"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_action">"Desbloquear"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_description">"Você poderá ver todas as mensagens deles novamente."</string>
|
||||
<string name="screen_room_member_details_unblock_user">"Desbloquear usuário"</string>
|
||||
<string name="screen_start_chat_error_starting_chat">"Ocorreu um erro ao tentar iniciar um chat"</string>
|
||||
</resources>
|
||||
|
|
|
|||
|
|
@ -6,5 +6,14 @@
|
|||
<string name="screen_dm_details_unblock_alert_action">"Desbloquear"</string>
|
||||
<string name="screen_dm_details_unblock_alert_description">"Poderás voltar a ver todas as suas mensagens."</string>
|
||||
<string name="screen_dm_details_unblock_user">"Desbloquear utilizador"</string>
|
||||
<string name="screen_room_member_details_block_alert_action">"Bloquear"</string>
|
||||
<string name="screen_room_member_details_block_alert_description">"Os utilizadores bloqueados não poderão enviar-te mensagens e todas as suas mensagens ficarão ocultas. Podes desbloqueá-los em qualquer altura."</string>
|
||||
<string name="screen_room_member_details_block_user">"Bloquear utilizador"</string>
|
||||
<string name="screen_room_member_details_title">"Perfil"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_action">"Desbloquear"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_description">"Poderás voltar a ver todas as suas mensagens."</string>
|
||||
<string name="screen_room_member_details_unblock_user">"Desbloquear utilizador"</string>
|
||||
<string name="screen_room_member_details_verify_button_subtitle">"Utiliza a aplicação Web para verificar este utilizador."</string>
|
||||
<string name="screen_room_member_details_verify_button_title">"Verifique %1$s"</string>
|
||||
<string name="screen_start_chat_error_starting_chat">"Ocorreu um erro ao tentar iniciar uma conversa"</string>
|
||||
</resources>
|
||||
|
|
|
|||
|
|
@ -6,5 +6,12 @@
|
|||
<string name="screen_dm_details_unblock_alert_action">"Deblocați"</string>
|
||||
<string name="screen_dm_details_unblock_alert_description">"La deblocarea utilizatorului, veți putea vedea din nou toate mesajele de la acesta."</string>
|
||||
<string name="screen_dm_details_unblock_user">"Deblocați utilizatorul"</string>
|
||||
<string name="screen_room_member_details_block_alert_action">"Blocați"</string>
|
||||
<string name="screen_room_member_details_block_alert_description">"Utilizatorii blocați nu vă vor putea trimite mesaje și toate mesajele lor vor fi ascunse. Puteți anula această acțiune oricând."</string>
|
||||
<string name="screen_room_member_details_block_user">"Blocați utilizatorul"</string>
|
||||
<string name="screen_room_member_details_title">"Profil"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_action">"Deblocați"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_description">"La deblocarea utilizatorului, veți putea vedea din nou toate mesajele de la acesta."</string>
|
||||
<string name="screen_room_member_details_unblock_user">"Deblocați utilizatorul"</string>
|
||||
<string name="screen_start_chat_error_starting_chat">"A apărut o eroare la încercarea începerii conversației"</string>
|
||||
</resources>
|
||||
|
|
|
|||
|
|
@ -6,5 +6,14 @@
|
|||
<string name="screen_dm_details_unblock_alert_action">"Разблокировать"</string>
|
||||
<string name="screen_dm_details_unblock_alert_description">"Вы снова сможете увидеть все сообщения."</string>
|
||||
<string name="screen_dm_details_unblock_user">"Разблокировать пользователя"</string>
|
||||
<string name="screen_room_member_details_block_alert_action">"Заблокировать"</string>
|
||||
<string name="screen_room_member_details_block_alert_description">"Заблокированные пользователи не смогут отправлять вам сообщения, а все их сообщения будут скрыты. Вы можете разблокировать их в любое время."</string>
|
||||
<string name="screen_room_member_details_block_user">"Заблокировать пользователя"</string>
|
||||
<string name="screen_room_member_details_title">"Профиль"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_action">"Разблокировать"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_description">"Вы снова сможете увидеть все сообщения."</string>
|
||||
<string name="screen_room_member_details_unblock_user">"Разблокировать пользователя"</string>
|
||||
<string name="screen_room_member_details_verify_button_subtitle">"Используйте веб-приложение для проверки этого пользователя."</string>
|
||||
<string name="screen_room_member_details_verify_button_title">"Верифицировать %1$s"</string>
|
||||
<string name="screen_start_chat_error_starting_chat">"Произошла ошибка при запуске чата"</string>
|
||||
</resources>
|
||||
|
|
|
|||
|
|
@ -6,5 +6,12 @@
|
|||
<string name="screen_dm_details_unblock_alert_action">"Odblokovať"</string>
|
||||
<string name="screen_dm_details_unblock_alert_description">"Všetky správy od nich budete môcť opäť vidieť."</string>
|
||||
<string name="screen_dm_details_unblock_user">"Odblokovať používateľa"</string>
|
||||
<string name="screen_room_member_details_block_alert_action">"Zablokovať"</string>
|
||||
<string name="screen_room_member_details_block_alert_description">"Blokovaní používatelia vám nebudú môcť posielať správy a všetky ich správy budú skryté. Môžete ich kedykoľvek odblokovať."</string>
|
||||
<string name="screen_room_member_details_block_user">"Zablokovať používateľa"</string>
|
||||
<string name="screen_room_member_details_title">"Profil"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_action">"Odblokovať"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_description">"Všetky správy od nich budete môcť opäť vidieť."</string>
|
||||
<string name="screen_room_member_details_unblock_user">"Odblokovať používateľa"</string>
|
||||
<string name="screen_start_chat_error_starting_chat">"Pri pokuse o spustenie konverzácie sa vyskytla chyba"</string>
|
||||
</resources>
|
||||
|
|
|
|||
|
|
@ -6,5 +6,12 @@
|
|||
<string name="screen_dm_details_unblock_alert_action">"Avblockera"</string>
|
||||
<string name="screen_dm_details_unblock_alert_description">"Du kommer att kunna se alla meddelanden från dem igen."</string>
|
||||
<string name="screen_dm_details_unblock_user">"Avblockera användare"</string>
|
||||
<string name="screen_room_member_details_block_alert_action">"Blockera"</string>
|
||||
<string name="screen_room_member_details_block_alert_description">"Blockerade användare kommer inte att kunna skicka meddelanden till dig och alla deras meddelanden kommer att döljas. Du kan avblockera dem när som helst."</string>
|
||||
<string name="screen_room_member_details_block_user">"Blockera användare"</string>
|
||||
<string name="screen_room_member_details_title">"Profil"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_action">"Avblockera"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_description">"Du kommer att kunna se alla meddelanden från dem igen."</string>
|
||||
<string name="screen_room_member_details_unblock_user">"Avblockera användare"</string>
|
||||
<string name="screen_start_chat_error_starting_chat">"Ett fel uppstod när du försökte starta en chatt"</string>
|
||||
</resources>
|
||||
|
|
|
|||
|
|
@ -6,5 +6,12 @@
|
|||
<string name="screen_dm_details_unblock_alert_action">"Розблокувати"</string>
|
||||
<string name="screen_dm_details_unblock_alert_description">"Ви знову зможете бачити всі повідомлення від них."</string>
|
||||
<string name="screen_dm_details_unblock_user">"Розблокувати користувача"</string>
|
||||
<string name="screen_room_member_details_block_alert_action">"Заблокувати"</string>
|
||||
<string name="screen_room_member_details_block_alert_description">"Заблоковані користувачі не зможуть надсилати Вам повідомлення, і всі їхні повідомлення будуть приховані. Ви можете розблокувати їх у будь-який час."</string>
|
||||
<string name="screen_room_member_details_block_user">"Заблокувати користувача"</string>
|
||||
<string name="screen_room_member_details_title">"Профіль"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_action">"Розблокувати"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_description">"Ви знову зможете бачити всі повідомлення від них."</string>
|
||||
<string name="screen_room_member_details_unblock_user">"Розблокувати користувача"</string>
|
||||
<string name="screen_start_chat_error_starting_chat">"Під час спроби почати чат сталася помилка"</string>
|
||||
</resources>
|
||||
|
|
|
|||
|
|
@ -6,5 +6,11 @@
|
|||
<string name="screen_dm_details_unblock_alert_action">"Blokdan chiqarish"</string>
|
||||
<string name="screen_dm_details_unblock_alert_description">"Ulardan kelgan barcha xabarlarni yana koʻrishingiz mumkin boʻladi."</string>
|
||||
<string name="screen_dm_details_unblock_user">"Foydalanuvchini blokdan chiqarish"</string>
|
||||
<string name="screen_room_member_details_block_alert_action">"Bloklash"</string>
|
||||
<string name="screen_room_member_details_block_alert_description">"Bloklangan foydalanuvchilar sizga xabar yubora olmaydi va ularning barcha xabarlari yashiriladi. Ularni istalgan vaqtda blokdan chiqarishingiz mumkin."</string>
|
||||
<string name="screen_room_member_details_block_user">"Foydalanuvchini bloklash"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_action">"Blokdan chiqarish"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_description">"Ulardan kelgan barcha xabarlarni yana koʻrishingiz mumkin boʻladi."</string>
|
||||
<string name="screen_room_member_details_unblock_user">"Foydalanuvchini blokdan chiqarish"</string>
|
||||
<string name="screen_start_chat_error_starting_chat">"Suhbatni boshlashda xatolik yuz berdi"</string>
|
||||
</resources>
|
||||
|
|
|
|||
|
|
@ -6,4 +6,11 @@
|
|||
<string name="screen_dm_details_unblock_alert_action">"解除封鎖"</string>
|
||||
<string name="screen_dm_details_unblock_alert_description">"您將無法看到任何來自他們的訊息。"</string>
|
||||
<string name="screen_dm_details_unblock_user">"解除封鎖使用者"</string>
|
||||
<string name="screen_room_member_details_block_alert_action">"封鎖"</string>
|
||||
<string name="screen_room_member_details_block_alert_description">"被封鎖的使用者無法傳訊息給您,他們的訊息會被隱藏。您可以在任何時候解除封鎖。"</string>
|
||||
<string name="screen_room_member_details_block_user">"封鎖使用者"</string>
|
||||
<string name="screen_room_member_details_title">"個人檔案"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_action">"解除封鎖"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_description">"您將無法看到任何來自他們的訊息。"</string>
|
||||
<string name="screen_room_member_details_unblock_user">"解除封鎖使用者"</string>
|
||||
</resources>
|
||||
|
|
|
|||
|
|
@ -6,5 +6,12 @@
|
|||
<string name="screen_dm_details_unblock_alert_action">"解封"</string>
|
||||
<string name="screen_dm_details_unblock_alert_description">"可以重新接收他们的消息。"</string>
|
||||
<string name="screen_dm_details_unblock_user">"解封用户"</string>
|
||||
<string name="screen_room_member_details_block_alert_action">"封禁"</string>
|
||||
<string name="screen_room_member_details_block_alert_description">"被封禁的用户无法给你发消息,并且他们的消息会被隐藏。你可以随时解封。"</string>
|
||||
<string name="screen_room_member_details_block_user">"封禁用户"</string>
|
||||
<string name="screen_room_member_details_title">"个人资料"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_action">"解封"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_description">"可以重新接收他们的消息。"</string>
|
||||
<string name="screen_room_member_details_unblock_user">"解封用户"</string>
|
||||
<string name="screen_start_chat_error_starting_chat">"在开始聊天时发生了错误"</string>
|
||||
</resources>
|
||||
|
|
|
|||
|
|
@ -6,5 +6,14 @@
|
|||
<string name="screen_dm_details_unblock_alert_action">"Unblock"</string>
|
||||
<string name="screen_dm_details_unblock_alert_description">"You\'ll be able to see all messages from them again."</string>
|
||||
<string name="screen_dm_details_unblock_user">"Unblock user"</string>
|
||||
<string name="screen_room_member_details_block_alert_action">"Block"</string>
|
||||
<string name="screen_room_member_details_block_alert_description">"Blocked users won\'t be able to send you messages and all their messages will be hidden. You can unblock them anytime."</string>
|
||||
<string name="screen_room_member_details_block_user">"Block user"</string>
|
||||
<string name="screen_room_member_details_title">"Profile"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_action">"Unblock"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_description">"You\'ll be able to see all messages from them again."</string>
|
||||
<string name="screen_room_member_details_unblock_user">"Unblock user"</string>
|
||||
<string name="screen_room_member_details_verify_button_subtitle">"Use the web app to verify this user."</string>
|
||||
<string name="screen_room_member_details_verify_button_title">"Verify %1$s"</string>
|
||||
<string name="screen_start_chat_error_starting_chat">"An error occurred when trying to start a chat"</string>
|
||||
</resources>
|
||||
|
|
|
|||
|
|
@ -40,6 +40,7 @@ import org.junit.Rule
|
|||
import org.junit.Test
|
||||
import org.junit.rules.TestRule
|
||||
import org.junit.runner.RunWith
|
||||
import org.robolectric.annotation.Config
|
||||
|
||||
@RunWith(AndroidJUnit4::class)
|
||||
class UserProfileViewTest {
|
||||
|
|
@ -123,6 +124,7 @@ class UserProfileViewTest {
|
|||
}
|
||||
}
|
||||
|
||||
@Config(qualifiers = "h1024dp")
|
||||
@Test
|
||||
fun `on Block user clicked - a BlockUser event is emitted with needsConfirmation`() = runTest {
|
||||
val eventsRecorder = EventsRecorder<UserProfileEvents>()
|
||||
|
|
@ -161,6 +163,7 @@ class UserProfileViewTest {
|
|||
eventsRecorder.assertSingle(UserProfileEvents.ClearConfirmationDialog)
|
||||
}
|
||||
|
||||
@Config(qualifiers = "h1024dp")
|
||||
@Test
|
||||
fun `on Unblock user clicked - an UnblockUser event is emitted with needsConfirmation`() = runTest {
|
||||
val eventsRecorder = EventsRecorder<UserProfileEvents>()
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
* Please see LICENSE in the repository root for full details.
|
||||
*/
|
||||
|
||||
package io.element.android.features.roomdetails.impl.components
|
||||
package io.element.android.libraries.designsystem.atomic.atoms
|
||||
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.graphics.vector.ImageVector
|
||||
|
|
@ -21,36 +21,41 @@ import io.element.android.libraries.designsystem.theme.badgeNeutralContentColor
|
|||
import io.element.android.libraries.designsystem.theme.badgePositiveBackgroundColor
|
||||
import io.element.android.libraries.designsystem.theme.badgePositiveContentColor
|
||||
|
||||
object RoomBadge {
|
||||
object MatrixBadgeAtom {
|
||||
data class MatrixBadgeData(
|
||||
val text: String,
|
||||
val icon: ImageVector,
|
||||
val type: Type,
|
||||
)
|
||||
|
||||
enum class Type {
|
||||
Positive,
|
||||
Neutral,
|
||||
Negative
|
||||
}
|
||||
|
||||
@Composable fun View(
|
||||
text: String,
|
||||
icon: ImageVector,
|
||||
type: Type,
|
||||
@Composable
|
||||
fun View(
|
||||
data: MatrixBadgeData,
|
||||
) {
|
||||
val backgroundColor = when (type) {
|
||||
val backgroundColor = when (data.type) {
|
||||
Type.Positive -> ElementTheme.colors.badgePositiveBackgroundColor
|
||||
Type.Neutral -> ElementTheme.colors.badgeNeutralBackgroundColor
|
||||
Type.Negative -> ElementTheme.colors.badgeNegativeBackgroundColor
|
||||
}
|
||||
val textColor = when (type) {
|
||||
val textColor = when (data.type) {
|
||||
Type.Positive -> ElementTheme.colors.badgePositiveContentColor
|
||||
Type.Neutral -> ElementTheme.colors.badgeNeutralContentColor
|
||||
Type.Negative -> ElementTheme.colors.badgeNegativeContentColor
|
||||
}
|
||||
val iconColor = when (type) {
|
||||
val iconColor = when (data.type) {
|
||||
Type.Positive -> ElementTheme.colors.iconSuccessPrimary
|
||||
Type.Neutral -> ElementTheme.colors.iconSecondary
|
||||
Type.Negative -> ElementTheme.colors.iconCriticalPrimary
|
||||
}
|
||||
Badge(
|
||||
text = text,
|
||||
icon = icon,
|
||||
text = data.text,
|
||||
icon = data.icon,
|
||||
backgroundColor = backgroundColor,
|
||||
iconColor = iconColor,
|
||||
textColor = textColor,
|
||||
|
|
@ -60,36 +65,36 @@ object RoomBadge {
|
|||
|
||||
@PreviewsDayNight
|
||||
@Composable
|
||||
internal fun RoomBadgePositivePreview() {
|
||||
ElementPreview {
|
||||
RoomBadge.View(
|
||||
internal fun MatrixBadgeAtomPositivePreview() = ElementPreview {
|
||||
MatrixBadgeAtom.View(
|
||||
MatrixBadgeAtom.MatrixBadgeData(
|
||||
text = "Trusted",
|
||||
icon = CompoundIcons.Verified(),
|
||||
type = RoomBadge.Type.Positive,
|
||||
type = MatrixBadgeAtom.Type.Positive,
|
||||
)
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
@PreviewsDayNight
|
||||
@Composable
|
||||
internal fun RoomBadgeNeutralPreview() {
|
||||
ElementPreview {
|
||||
RoomBadge.View(
|
||||
internal fun MatrixBadgeAtomNeutralPreview() = ElementPreview {
|
||||
MatrixBadgeAtom.View(
|
||||
MatrixBadgeAtom.MatrixBadgeData(
|
||||
text = "Public room",
|
||||
icon = CompoundIcons.Public(),
|
||||
type = RoomBadge.Type.Neutral,
|
||||
type = MatrixBadgeAtom.Type.Neutral,
|
||||
)
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
@PreviewsDayNight
|
||||
@Composable
|
||||
internal fun RoomBadgeNegativePreview() {
|
||||
ElementPreview {
|
||||
RoomBadge.View(
|
||||
internal fun MatrixBadgeAtomNegativePreview() = ElementPreview {
|
||||
MatrixBadgeAtom.View(
|
||||
MatrixBadgeAtom.MatrixBadgeData(
|
||||
text = "Not trusted",
|
||||
icon = CompoundIcons.Error(),
|
||||
type = RoomBadge.Type.Negative,
|
||||
type = MatrixBadgeAtom.Type.Negative,
|
||||
)
|
||||
}
|
||||
)
|
||||
}
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
/*
|
||||
* Copyright 2024 New Vector Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
* Please see LICENSE in the repository root for full details.
|
||||
*/
|
||||
|
||||
package io.element.android.libraries.designsystem.atomic.molecules
|
||||
|
||||
import androidx.compose.foundation.layout.Arrangement
|
||||
import androidx.compose.foundation.layout.Row
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.unit.dp
|
||||
import io.element.android.libraries.designsystem.atomic.atoms.MatrixBadgeAtom
|
||||
import kotlinx.collections.immutable.ImmutableList
|
||||
|
||||
@Composable
|
||||
fun MatrixBadgeRowMolecule(
|
||||
data: ImmutableList<MatrixBadgeAtom.MatrixBadgeData>,
|
||||
modifier: Modifier = Modifier,
|
||||
) {
|
||||
Row(
|
||||
modifier = modifier
|
||||
.padding(start = 16.dp, end = 16.dp, top = 8.dp),
|
||||
horizontalArrangement = Arrangement.spacedBy(8.dp),
|
||||
) {
|
||||
for (badge in data) {
|
||||
MatrixBadgeAtom.View(badge)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -60,6 +60,8 @@ interface EncryptionService {
|
|||
*/
|
||||
suspend fun startIdentityReset(): Result<IdentityResetHandle?>
|
||||
|
||||
suspend fun isUserVerified(userId: UserId): Result<Boolean>
|
||||
|
||||
/**
|
||||
* Remember this identity, ensuring it does not result in a pin violation.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -38,6 +38,7 @@ import org.matrix.rustcomponents.sdk.BackupSteadyStateListener
|
|||
import org.matrix.rustcomponents.sdk.Client
|
||||
import org.matrix.rustcomponents.sdk.EnableRecoveryProgressListener
|
||||
import org.matrix.rustcomponents.sdk.Encryption
|
||||
import org.matrix.rustcomponents.sdk.UserIdentity
|
||||
import org.matrix.rustcomponents.sdk.BackupUploadState as RustBackupUploadState
|
||||
import org.matrix.rustcomponents.sdk.EnableRecoveryProgress as RustEnableRecoveryProgress
|
||||
import org.matrix.rustcomponents.sdk.SteadyStateException as RustSteadyStateException
|
||||
|
|
@ -204,8 +205,18 @@ internal class RustEncryptionService(
|
|||
}
|
||||
}
|
||||
|
||||
override suspend fun isUserVerified(userId: UserId): Result<Boolean> = runCatching {
|
||||
getUserIdentity(userId).isVerified()
|
||||
}
|
||||
|
||||
override suspend fun pinUserIdentity(userId: UserId): Result<Unit> = runCatching {
|
||||
val userIdentity = service.userIdentity(userId.value) ?: error("User identity not found")
|
||||
userIdentity.pin()
|
||||
getUserIdentity(userId).pin()
|
||||
}
|
||||
|
||||
private suspend fun getUserIdentity(userId: UserId): UserIdentity {
|
||||
return service.userIdentity(
|
||||
userId = userId.value,
|
||||
// requestFromHomeserverIfNeeded = true,
|
||||
) ?: error("User identity not found")
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ import kotlinx.coroutines.flow.flowOf
|
|||
class FakeEncryptionService(
|
||||
var startIdentityResetLambda: () -> Result<IdentityResetHandle?> = { lambdaError() },
|
||||
private val pinUserIdentityResult: (UserId) -> Result<Unit> = { lambdaError() },
|
||||
private val isUserVerifiedResult: (UserId) -> Result<Boolean> = { lambdaError() },
|
||||
) : EncryptionService {
|
||||
private var disableRecoveryFailure: Exception? = null
|
||||
override val backupStateStateFlow: MutableStateFlow<BackupState> = MutableStateFlow(BackupState.UNKNOWN)
|
||||
|
|
@ -123,6 +124,10 @@ class FakeEncryptionService(
|
|||
return pinUserIdentityResult(userId)
|
||||
}
|
||||
|
||||
override suspend fun isUserVerified(userId: UserId): Result<Boolean> = simulateLongTask {
|
||||
isUserVerifiedResult(userId)
|
||||
}
|
||||
|
||||
companion object {
|
||||
const val FAKE_RECOVERY_KEY = "fake"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -303,13 +303,6 @@
|
|||
<string name="screen_room_details_pinned_events_row_title">"Замацаваныя паведамленні"</string>
|
||||
<string name="screen_room_error_failed_processing_media">"Не атрымалася апрацаваць медыяфайл для загрузкі, паспрабуйце яшчэ раз."</string>
|
||||
<string name="screen_room_error_failed_retrieving_user_details">"Не ўдалося атрымаць інфармацыю пра карыстальніка"</string>
|
||||
<string name="screen_room_member_details_block_alert_action">"Заблакіраваць"</string>
|
||||
<string name="screen_room_member_details_block_alert_description">"Заблакіраваныя карыстальнікі не змогуць адпраўляць вам паведамленні, і ўсе іх паведамленні будуць схаваны. Вы можаце разблакіраваць іх у любы час."</string>
|
||||
<string name="screen_room_member_details_block_user">"Заблакіраваць карыстальніка"</string>
|
||||
<string name="screen_room_member_details_title">"Профіль"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_action">"Разблакіраваць"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_description">"Вы зноў зможаце ўбачыць усе паведамленні."</string>
|
||||
<string name="screen_room_member_details_unblock_user">"Разблакіраваць карыстальніка"</string>
|
||||
<string name="screen_room_pinned_banner_indicator">"%1$s з %2$s"</string>
|
||||
<string name="screen_room_pinned_banner_indicator_description">"%1$s Замацаваныя паведамленні"</string>
|
||||
<string name="screen_room_pinned_banner_loading_description">"Загрузка паведамлення…"</string>
|
||||
|
|
|
|||
|
|
@ -198,10 +198,6 @@
|
|||
<string name="invite_friends_rich_title">"🔐️ Присъединете се към мен в %1$s"</string>
|
||||
<string name="invite_friends_text">"Хей, говорете с мен в %1$s: %2$s"</string>
|
||||
<string name="login_initial_device_name_android">"%1$s Android"</string>
|
||||
<string name="screen_room_member_details_block_alert_action">"Блокиране"</string>
|
||||
<string name="screen_room_member_details_block_user">"Блокиране на потребителя"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_action">"Отблокиране"</string>
|
||||
<string name="screen_room_member_details_unblock_user">"Отблокиране на потребителя"</string>
|
||||
<string name="screen_share_location_title">"Споделяне на местоположение"</string>
|
||||
<string name="screen_share_my_location_action">"Споделяне на моето местоположение"</string>
|
||||
<string name="screen_share_open_apple_maps">"Отваряне в Apple Maps"</string>
|
||||
|
|
|
|||
|
|
@ -326,15 +326,6 @@ Důvod: %1$s."</string>
|
|||
<string name="screen_room_details_pinned_events_row_title">"Připnuté zprávy"</string>
|
||||
<string name="screen_room_error_failed_processing_media">"Nahrání média se nezdařilo, zkuste to prosím znovu."</string>
|
||||
<string name="screen_room_error_failed_retrieving_user_details">"Nepodařilo se načíst údaje o uživateli"</string>
|
||||
<string name="screen_room_member_details_block_alert_action">"Zablokovat"</string>
|
||||
<string name="screen_room_member_details_block_alert_description">"Blokovaní uživatelé vám nebudou moci posílat zprávy a všechny jejich zprávy budou skryty. Můžete je kdykoli odblokovat."</string>
|
||||
<string name="screen_room_member_details_block_user">"Zablokovat uživatele"</string>
|
||||
<string name="screen_room_member_details_title">"Profil"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_action">"Odblokovat"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_description">"Znovu uvidíte všechny zprávy od nich."</string>
|
||||
<string name="screen_room_member_details_unblock_user">"Odblokovat uživatele"</string>
|
||||
<string name="screen_room_member_details_verify_button_subtitle">"K ověření tohoto uživatele použijte webovou aplikaci."</string>
|
||||
<string name="screen_room_member_details_verify_button_title">"Ověřit %1$s"</string>
|
||||
<string name="screen_room_pinned_banner_indicator">"%1$s z %2$s"</string>
|
||||
<string name="screen_room_pinned_banner_indicator_description">"%1$s Připnuté zprávy"</string>
|
||||
<string name="screen_room_pinned_banner_loading_description">"Načítání zprávy…"</string>
|
||||
|
|
|
|||
|
|
@ -294,13 +294,6 @@ Grund: %1$s."</string>
|
|||
<string name="screen_room_details_pinned_events_row_title">"Fixierte Nachrichten"</string>
|
||||
<string name="screen_room_error_failed_processing_media">"Fehler beim Verarbeiten des hochgeladenen Mediums. Bitte versuche es erneut."</string>
|
||||
<string name="screen_room_error_failed_retrieving_user_details">"Benutzerdetails konnten nicht abgerufen werden"</string>
|
||||
<string name="screen_room_member_details_block_alert_action">"Blockieren"</string>
|
||||
<string name="screen_room_member_details_block_alert_description">"Blockierte Benutzer können Dir keine Nachrichten senden und alle ihre alten Nachrichten werden ausgeblendet. Die Blockierung kann jederzeit aufgehoben werden."</string>
|
||||
<string name="screen_room_member_details_block_user">"Benutzer blockieren"</string>
|
||||
<string name="screen_room_member_details_title">"Profil"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_action">"Blockierung aufheben"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_description">"Der Nutzer kann dir wieder Nachrichten senden & alle Nachrichten des Nutzers werden wieder angezeigt."</string>
|
||||
<string name="screen_room_member_details_unblock_user">"Blockierung aufheben"</string>
|
||||
<string name="screen_room_pinned_banner_indicator">"%1$s von %2$s"</string>
|
||||
<string name="screen_room_pinned_banner_indicator_description">"%1$s fixierte Nachrichten"</string>
|
||||
<string name="screen_room_pinned_banner_loading_description">"Nachricht wird geladen…"</string>
|
||||
|
|
|
|||
|
|
@ -312,13 +312,6 @@
|
|||
<string name="screen_room_details_pinned_events_row_title">"Καρφιτσωμένα μηνύματα"</string>
|
||||
<string name="screen_room_error_failed_processing_media">"Αποτυχία μεταφόρτωσης μέσου, δοκίμασε ξανά."</string>
|
||||
<string name="screen_room_error_failed_retrieving_user_details">"Δεν ήταν δυνατή η ανάκτηση στοιχείων χρήστη"</string>
|
||||
<string name="screen_room_member_details_block_alert_action">"Αποκλεισμός"</string>
|
||||
<string name="screen_room_member_details_block_alert_description">"Οι αποκλεισμένοι χρήστες δεν θα μπορούν να σου στέλνουν μηνύματα και όλα τα μηνύματά τους θα είναι κρυμμένα. Μπορείς να τα ξεμπλοκάρεις ανά πάσα στιγμή."</string>
|
||||
<string name="screen_room_member_details_block_user">"Αποκλεισμός χρήστη"</string>
|
||||
<string name="screen_room_member_details_title">"Προφίλ"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_action">"Άρση αποκλεισμού"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_description">"Θα μπορείς να δεις ξανά όλα τα μηνύματα του."</string>
|
||||
<string name="screen_room_member_details_unblock_user">"Κατάργηση αποκλεισμού χρήστη"</string>
|
||||
<string name="screen_room_pinned_banner_indicator">"%1$s από %2$s"</string>
|
||||
<string name="screen_room_pinned_banner_indicator_description">"%1$s Καρφιτσωμένα μηνύματα"</string>
|
||||
<string name="screen_room_pinned_banner_loading_description">"Φόρτωση μηνύματος…"</string>
|
||||
|
|
|
|||
|
|
@ -250,12 +250,6 @@
|
|||
<string name="screen_media_upload_preview_error_failed_sending">"Error al subir el contenido multimedia, por favor inténtalo de nuevo."</string>
|
||||
<string name="screen_room_error_failed_processing_media">"Error al procesar el contenido multimedia, por favor inténtalo de nuevo."</string>
|
||||
<string name="screen_room_error_failed_retrieving_user_details">"No se pudieron recuperar los detalles del usuario"</string>
|
||||
<string name="screen_room_member_details_block_alert_action">"Bloquear"</string>
|
||||
<string name="screen_room_member_details_block_alert_description">"Los usuarios bloqueados no podrán enviarte mensajes y todos sus mensajes se ocultarán. Puedes desbloquearlos cuando quieras."</string>
|
||||
<string name="screen_room_member_details_block_user">"Bloquear usuario"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_action">"Desbloquear"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_description">"Podrás ver todos sus mensajes de nuevo."</string>
|
||||
<string name="screen_room_member_details_unblock_user">"Desbloquear usuario"</string>
|
||||
<string name="screen_share_location_title">"Compartir ubicación"</string>
|
||||
<string name="screen_share_my_location_action">"Compartir mi ubicación"</string>
|
||||
<string name="screen_share_open_apple_maps">"Abrir en Apple Maps"</string>
|
||||
|
|
|
|||
|
|
@ -321,15 +321,6 @@ Põhjus: %1$s."</string>
|
|||
<string name="screen_room_details_pinned_events_row_title">"Esiletõstetud sõnumid"</string>
|
||||
<string name="screen_room_error_failed_processing_media">"Meediafaili töötlemine enne üleslaadimist ei õnnestunud. Palun proovi uuesti."</string>
|
||||
<string name="screen_room_error_failed_retrieving_user_details">"Kasutaja andmete laadimine ei õnnestunud"</string>
|
||||
<string name="screen_room_member_details_block_alert_action">"Blokeeri"</string>
|
||||
<string name="screen_room_member_details_block_alert_description">"Blokeeritud kasutajad ei saa sulle kirjutada ja kõik nende sõnumid on sinu eest peidetud. Sa saad alati blokeeringu eemaldada."</string>
|
||||
<string name="screen_room_member_details_block_user">"Blokeeri kasutaja"</string>
|
||||
<string name="screen_room_member_details_title">"Profiil"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_action">"Eemalda blokeering"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_description">"Nüüd näed sa jälle kõiki tema sõnumeid"</string>
|
||||
<string name="screen_room_member_details_unblock_user">"Eemalda kasutajalt blokeering"</string>
|
||||
<string name="screen_room_member_details_verify_button_subtitle">"Kasutaja verifitseerimiseks kasuta veebirakendust."</string>
|
||||
<string name="screen_room_member_details_verify_button_title">"Verifitseeri kasutaja %1$s"</string>
|
||||
<string name="screen_room_pinned_banner_indicator">"%1$s / %2$s"</string>
|
||||
<string name="screen_room_pinned_banner_indicator_description">"%1$s esiletõstetud sõnumit"</string>
|
||||
<string name="screen_room_pinned_banner_loading_description">"Laadime sõnumit…"</string>
|
||||
|
|
|
|||
|
|
@ -262,12 +262,6 @@
|
|||
<string name="screen_resolve_send_failure_unsigned_device_primary_button_title">"فرستادن پیام به هر روی"</string>
|
||||
<string name="screen_room_details_pinned_events_row_title">"پیامهای سنجاق شده"</string>
|
||||
<string name="screen_room_error_failed_processing_media">"پردازش رسانه برای بارگذاری شکست خورد. لطفاً دوباره تلاش کنید."</string>
|
||||
<string name="screen_room_member_details_block_alert_action">"بلوک"</string>
|
||||
<string name="screen_room_member_details_block_user">"انسداد کاربر"</string>
|
||||
<string name="screen_room_member_details_title">"نمایه"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_action">"رفع انسداد"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_description">"قادر خواهید بود دوباره همهٔ پیامهایش را ببینید."</string>
|
||||
<string name="screen_room_member_details_unblock_user">"رفع انسداد کاربر"</string>
|
||||
<string name="screen_room_pinned_banner_indicator">"%1$s از %2$s"</string>
|
||||
<string name="screen_room_pinned_banner_indicator_description">"%1$s پیامهای سنجاق شده"</string>
|
||||
<string name="screen_room_pinned_banner_loading_description">"بار کردن پشامها…"</string>
|
||||
|
|
|
|||
|
|
@ -317,15 +317,6 @@ Raison: %1$s."</string>
|
|||
<string name="screen_room_details_pinned_events_row_title">"Messages épinglés"</string>
|
||||
<string name="screen_room_error_failed_processing_media">"Échec du traitement des médias à télécharger, veuillez réessayer."</string>
|
||||
<string name="screen_room_error_failed_retrieving_user_details">"Impossible de récupérer les détails de l’utilisateur"</string>
|
||||
<string name="screen_room_member_details_block_alert_action">"Bloquer"</string>
|
||||
<string name="screen_room_member_details_block_alert_description">"Les utilisateurs bloqués ne pourront pas vous envoyer de messages et tous leurs messages seront masqués. Vous pouvez les débloquer à tout moment."</string>
|
||||
<string name="screen_room_member_details_block_user">"Bloquer l’utilisateur"</string>
|
||||
<string name="screen_room_member_details_title">"Profil"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_action">"Débloquer"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_description">"Vous pourrez à nouveau voir tous ses messages."</string>
|
||||
<string name="screen_room_member_details_unblock_user">"Débloquer l’utilisateur"</string>
|
||||
<string name="screen_room_member_details_verify_button_subtitle">"Utilisez l’application Web pour vérifier cet utilisateur."</string>
|
||||
<string name="screen_room_member_details_verify_button_title">"Vérifier %1$s"</string>
|
||||
<string name="screen_room_pinned_banner_indicator">"%1$s sur %2$s"</string>
|
||||
<string name="screen_room_pinned_banner_indicator_description">"%1$s Messages épinglés"</string>
|
||||
<string name="screen_room_pinned_banner_loading_description">"Chargement du message…"</string>
|
||||
|
|
|
|||
|
|
@ -321,15 +321,6 @@ Ok: %1$s."</string>
|
|||
<string name="screen_room_details_pinned_events_row_title">"Kitűzött üzenetek"</string>
|
||||
<string name="screen_room_error_failed_processing_media">"Nem sikerült feldolgozni a feltöltendő médiát, próbálja újra."</string>
|
||||
<string name="screen_room_error_failed_retrieving_user_details">"Nem sikerült letölteni a felhasználói adatokat"</string>
|
||||
<string name="screen_room_member_details_block_alert_action">"Letiltás"</string>
|
||||
<string name="screen_room_member_details_block_alert_description">"A letiltott felhasználók nem fognak tudni üzeneteket küldeni, és az összes üzenetük rejtve lesz. Bármikor feloldhatja a letiltásukat."</string>
|
||||
<string name="screen_room_member_details_block_user">"Felhasználó letiltása"</string>
|
||||
<string name="screen_room_member_details_title">"Profil"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_action">"Letiltás feloldása"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_description">"Újra láthatja az összes üzenetét."</string>
|
||||
<string name="screen_room_member_details_unblock_user">"Felhasználó kitiltásának feloldása"</string>
|
||||
<string name="screen_room_member_details_verify_button_subtitle">"Használja a webes alkalmazást a felhasználó ellenőrzéséhez."</string>
|
||||
<string name="screen_room_member_details_verify_button_title">"A(z) %1$s ellenőrzése"</string>
|
||||
<string name="screen_room_pinned_banner_indicator">"%1$s / %2$s"</string>
|
||||
<string name="screen_room_pinned_banner_indicator_description">"%1$s kitűzött üzenet"</string>
|
||||
<string name="screen_room_pinned_banner_loading_description">"Üzenet betöltése…"</string>
|
||||
|
|
|
|||
|
|
@ -260,13 +260,6 @@ Alasan: %1$s."</string>
|
|||
<string name="screen_media_upload_preview_error_failed_sending">"Gagal mengunggah media, silakan coba lagi."</string>
|
||||
<string name="screen_room_error_failed_processing_media">"Gagal memproses media untuk diunggah, silakan coba lagi."</string>
|
||||
<string name="screen_room_error_failed_retrieving_user_details">"Tidak dapat mengambil detail pengguna"</string>
|
||||
<string name="screen_room_member_details_block_alert_action">"Blokir"</string>
|
||||
<string name="screen_room_member_details_block_alert_description">"Pengguna yang diblokir tidak akan dapat mengirim Anda pesan dan semua pesan mereka akan disembunyikan. Anda dapat membuka blokirnya kapan saja."</string>
|
||||
<string name="screen_room_member_details_block_user">"Blokir pengguna"</string>
|
||||
<string name="screen_room_member_details_title">"Profil"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_action">"Buka blokir"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_description">"Anda akan dapat melihat semua pesan dari mereka lagi."</string>
|
||||
<string name="screen_room_member_details_unblock_user">"Buka blokir pengguna"</string>
|
||||
<string name="screen_room_title">"Obrolan"</string>
|
||||
<string name="screen_share_location_title">"Bagikan lokasi"</string>
|
||||
<string name="screen_share_my_location_action">"Bagikan lokasi saya"</string>
|
||||
|
|
|
|||
|
|
@ -302,13 +302,6 @@ Motivo:. %1$s"</string>
|
|||
<string name="screen_room_details_pinned_events_row_title">"Messaggi fissati"</string>
|
||||
<string name="screen_room_error_failed_processing_media">"Elaborazione del file multimediale da caricare fallita, riprova."</string>
|
||||
<string name="screen_room_error_failed_retrieving_user_details">"Impossibile recuperare i dettagli dell\'utente"</string>
|
||||
<string name="screen_room_member_details_block_alert_action">"Blocca"</string>
|
||||
<string name="screen_room_member_details_block_alert_description">"Gli utenti bloccati non saranno in grado di inviarti messaggi e tutti quelli già ricevuti saranno nascosti. Puoi sbloccarli in qualsiasi momento."</string>
|
||||
<string name="screen_room_member_details_block_user">"Blocca utente"</string>
|
||||
<string name="screen_room_member_details_title">"Profilo"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_action">"Sblocca"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_description">"Potrai vedere di nuovo tutti i suoi messaggi."</string>
|
||||
<string name="screen_room_member_details_unblock_user">"Sblocca utente"</string>
|
||||
<string name="screen_room_pinned_banner_indicator">"%1$s di %2$s"</string>
|
||||
<string name="screen_room_pinned_banner_indicator_description">"%1$s Messaggi fissati"</string>
|
||||
<string name="screen_room_pinned_banner_loading_description">"Caricamento messaggio…"</string>
|
||||
|
|
|
|||
|
|
@ -238,12 +238,6 @@
|
|||
<string name="screen_media_upload_preview_error_failed_sending">"მედიის ატვირთვა ვერ მოხერხდა, გთხოვთ, სცადოთ ხელახლა."</string>
|
||||
<string name="screen_room_error_failed_processing_media">"მედიის ატვირთვა ვერ მოხერხდა. გთხოვთ, სცადოთ ხელახლა."</string>
|
||||
<string name="screen_room_error_failed_retrieving_user_details">"მომხმარებლის მონაცემების მოძიება ვერ მოხერხდა"</string>
|
||||
<string name="screen_room_member_details_block_alert_action">"დაბლოკვა"</string>
|
||||
<string name="screen_room_member_details_block_alert_description">"დაბლოკილი მომხმარებლები ვერ შეძლებენ თქვენთვის შეტყობინების გაგზავნას და ყველა მათი შეტყობინება თქვენთვის დამალული იქნება. თქვენ მათი განბლოკვა ნებისმეირ დროს შეგიძლიათ."</string>
|
||||
<string name="screen_room_member_details_block_user">"მომხმარებლის დაბლოკვა"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_action">"განბლოკვა"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_description">"თქვენ კვლავ შეძლებთ მათგან ყველა შეტყობინების ნახვას."</string>
|
||||
<string name="screen_room_member_details_unblock_user">"Მომხმარებლის განბლოკვა"</string>
|
||||
<string name="screen_share_location_title">"მდებარეობის გაზიარება"</string>
|
||||
<string name="screen_share_my_location_action">"ჩემი მდებარეობის გაზიარება"</string>
|
||||
<string name="screen_share_open_apple_maps">"Apple Maps-ში გახსნა"</string>
|
||||
|
|
|
|||
|
|
@ -260,13 +260,6 @@
|
|||
<string name="screen_media_upload_preview_error_failed_sending">"Het uploaden van media is mislukt. Probeer het opnieuw."</string>
|
||||
<string name="screen_room_error_failed_processing_media">"Het verwerken van media voor uploaden is mislukt. Probeer het opnieuw."</string>
|
||||
<string name="screen_room_error_failed_retrieving_user_details">"Kon gebruikersgegevens niet ophalen"</string>
|
||||
<string name="screen_room_member_details_block_alert_action">"Blokkeren"</string>
|
||||
<string name="screen_room_member_details_block_alert_description">"Geblokkeerde gebruikers kunnen je geen berichten sturen en al hun berichten worden verborgen. Je kunt ze op elk moment deblokkeren."</string>
|
||||
<string name="screen_room_member_details_block_user">"Gebruiker blokkeren"</string>
|
||||
<string name="screen_room_member_details_title">"Profiel"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_action">"Deblokkeren"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_description">"Je zult alle berichten van hen weer kunnen zien."</string>
|
||||
<string name="screen_room_member_details_unblock_user">"Gebruiker deblokkeren"</string>
|
||||
<string name="screen_room_title">"Chat"</string>
|
||||
<string name="screen_share_location_title">"Locatie delen"</string>
|
||||
<string name="screen_share_my_location_action">"Deel mijn locatie"</string>
|
||||
|
|
|
|||
|
|
@ -307,13 +307,6 @@ Powód: %1$s."</string>
|
|||
<string name="screen_room_details_pinned_events_row_title">"Przypięte wiadomości"</string>
|
||||
<string name="screen_room_error_failed_processing_media">"Przetwarzanie multimediów do przesłania nie powiodło się, spróbuj ponownie."</string>
|
||||
<string name="screen_room_error_failed_retrieving_user_details">"Nie można pobrać danych użytkownika"</string>
|
||||
<string name="screen_room_member_details_block_alert_action">"Zablokuj"</string>
|
||||
<string name="screen_room_member_details_block_alert_description">"Zablokowani użytkownicy nie będą mogli wysyłać Ci wiadomości, a wszystkie ich wiadomości zostaną ukryte. Możesz odblokować ich w dowolnym momencie."</string>
|
||||
<string name="screen_room_member_details_block_user">"Zablokuj użytkownika"</string>
|
||||
<string name="screen_room_member_details_title">"Profil"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_action">"Odblokuj"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_description">"Będziesz mógł ponownie zobaczyć wszystkie wiadomości od tego użytkownika."</string>
|
||||
<string name="screen_room_member_details_unblock_user">"Odblokuj użytkownika"</string>
|
||||
<string name="screen_room_pinned_banner_indicator">"%1$s z %2$s"</string>
|
||||
<string name="screen_room_pinned_banner_indicator_description">"%1$s przypiętych wiadomości"</string>
|
||||
<string name="screen_room_pinned_banner_loading_description">"Wczytywanie wiadomości…"</string>
|
||||
|
|
|
|||
|
|
@ -266,12 +266,6 @@
|
|||
<string name="screen_media_upload_preview_error_failed_sending">"Falha ao enviar mídia. Tente novamente."</string>
|
||||
<string name="screen_room_error_failed_processing_media">"Falha ao processar mídia para upload. Tente novamente."</string>
|
||||
<string name="screen_room_error_failed_retrieving_user_details">"Não foi possível recuperar os detalhes do usuário"</string>
|
||||
<string name="screen_room_member_details_block_alert_action">"Bloquear"</string>
|
||||
<string name="screen_room_member_details_block_alert_description">"Usuários bloqueados não poderão enviar mensagens para você e todas as mensagens deles serão ocultadas. Você pode desbloqueá-los a qualquer momento."</string>
|
||||
<string name="screen_room_member_details_block_user">"Bloquear usuário"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_action">"Desbloquear"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_description">"Você poderá ver todas as mensagens deles novamente."</string>
|
||||
<string name="screen_room_member_details_unblock_user">"Desbloquear usuário"</string>
|
||||
<string name="screen_share_location_title">"Compartilhar localização"</string>
|
||||
<string name="screen_share_my_location_action">"Compartilhar minha localização"</string>
|
||||
<string name="screen_share_open_apple_maps">"Abrir no Apple Maps"</string>
|
||||
|
|
|
|||
|
|
@ -317,15 +317,6 @@ Razão: %1$s."</string>
|
|||
<string name="screen_room_details_pinned_events_row_title">"Mensagens afixadas"</string>
|
||||
<string name="screen_room_error_failed_processing_media">"Falha ao processar multimédia para carregamento, por favor tente novamente."</string>
|
||||
<string name="screen_room_error_failed_retrieving_user_details">"Não foi possível obter os detalhes de utilizador."</string>
|
||||
<string name="screen_room_member_details_block_alert_action">"Bloquear"</string>
|
||||
<string name="screen_room_member_details_block_alert_description">"Os utilizadores bloqueados não poderão enviar-te mensagens e todas as suas mensagens ficarão ocultas. Podes desbloqueá-los em qualquer altura."</string>
|
||||
<string name="screen_room_member_details_block_user">"Bloquear utilizador"</string>
|
||||
<string name="screen_room_member_details_title">"Perfil"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_action">"Desbloquear"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_description">"Poderás voltar a ver todas as suas mensagens."</string>
|
||||
<string name="screen_room_member_details_unblock_user">"Desbloquear utilizador"</string>
|
||||
<string name="screen_room_member_details_verify_button_subtitle">"Utiliza a aplicação Web para verificar este utilizador."</string>
|
||||
<string name="screen_room_member_details_verify_button_title">"Verifique %1$s"</string>
|
||||
<string name="screen_room_pinned_banner_indicator">"%1$s de %2$s"</string>
|
||||
<string name="screen_room_pinned_banner_indicator_description">"%1$s mensagens afixadas"</string>
|
||||
<string name="screen_room_pinned_banner_loading_description">"A carregar mensagem…"</string>
|
||||
|
|
|
|||
|
|
@ -264,13 +264,6 @@
|
|||
<string name="screen_media_upload_preview_error_failed_sending">"Încărcarea fișierelor media a eșuat, încercați din nou."</string>
|
||||
<string name="screen_room_error_failed_processing_media">"Procesarea datelor media a eșuat, vă rugăm să încercați din nou."</string>
|
||||
<string name="screen_room_error_failed_retrieving_user_details">"Nu am putut găsi detaliile utilizatorului"</string>
|
||||
<string name="screen_room_member_details_block_alert_action">"Blocați"</string>
|
||||
<string name="screen_room_member_details_block_alert_description">"Utilizatorii blocați nu vă vor putea trimite mesaje și toate mesajele lor vor fi ascunse. Puteți anula această acțiune oricând."</string>
|
||||
<string name="screen_room_member_details_block_user">"Blocați utilizatorul"</string>
|
||||
<string name="screen_room_member_details_title">"Profil"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_action">"Deblocați"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_description">"La deblocarea utilizatorului, veți putea vedea din nou toate mesajele de la acesta."</string>
|
||||
<string name="screen_room_member_details_unblock_user">"Deblocați utilizatorul"</string>
|
||||
<string name="screen_room_title">"Chat"</string>
|
||||
<string name="screen_share_location_title">"Partajați locația"</string>
|
||||
<string name="screen_share_my_location_action">"Distribuiți locația mea"</string>
|
||||
|
|
|
|||
|
|
@ -328,15 +328,6 @@
|
|||
<string name="screen_room_details_pinned_events_row_title">"Закрепленные сообщения"</string>
|
||||
<string name="screen_room_error_failed_processing_media">"Не удалось обработать медиафайл для загрузки, попробуйте еще раз."</string>
|
||||
<string name="screen_room_error_failed_retrieving_user_details">"Не удалось получить данные о пользователе"</string>
|
||||
<string name="screen_room_member_details_block_alert_action">"Заблокировать"</string>
|
||||
<string name="screen_room_member_details_block_alert_description">"Заблокированные пользователи не смогут отправлять вам сообщения, а все их сообщения будут скрыты. Вы можете разблокировать их в любое время."</string>
|
||||
<string name="screen_room_member_details_block_user">"Заблокировать пользователя"</string>
|
||||
<string name="screen_room_member_details_title">"Профиль"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_action">"Разблокировать"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_description">"Вы снова сможете увидеть все сообщения."</string>
|
||||
<string name="screen_room_member_details_unblock_user">"Разблокировать пользователя"</string>
|
||||
<string name="screen_room_member_details_verify_button_subtitle">"Используйте веб-приложение для проверки этого пользователя."</string>
|
||||
<string name="screen_room_member_details_verify_button_title">"Верифицировать %1$s"</string>
|
||||
<string name="screen_room_pinned_banner_indicator">"%1$s из %2$s"</string>
|
||||
<string name="screen_room_pinned_banner_indicator_description">"%1$s Закрепленные сообщения"</string>
|
||||
<string name="screen_room_pinned_banner_loading_description">"Загрузка сообщения…"</string>
|
||||
|
|
|
|||
|
|
@ -308,13 +308,6 @@ Dôvod: %1$s."</string>
|
|||
<string name="screen_room_details_pinned_events_row_title">"Pripnuté správy"</string>
|
||||
<string name="screen_room_error_failed_processing_media">"Nepodarilo sa spracovať médiá na odoslanie, skúste to prosím znova."</string>
|
||||
<string name="screen_room_error_failed_retrieving_user_details">"Nepodarilo sa získať údaje o používateľovi"</string>
|
||||
<string name="screen_room_member_details_block_alert_action">"Zablokovať"</string>
|
||||
<string name="screen_room_member_details_block_alert_description">"Blokovaní používatelia vám nebudú môcť posielať správy a všetky ich správy budú skryté. Môžete ich kedykoľvek odblokovať."</string>
|
||||
<string name="screen_room_member_details_block_user">"Zablokovať používateľa"</string>
|
||||
<string name="screen_room_member_details_title">"Profil"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_action">"Odblokovať"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_description">"Všetky správy od nich budete môcť opäť vidieť."</string>
|
||||
<string name="screen_room_member_details_unblock_user">"Odblokovať používateľa"</string>
|
||||
<string name="screen_room_pinned_banner_indicator">"%1$s z %2$s"</string>
|
||||
<string name="screen_room_pinned_banner_indicator_description">"%1$s Pripnutých správ"</string>
|
||||
<string name="screen_room_pinned_banner_loading_description">"Načítava sa správa…"</string>
|
||||
|
|
|
|||
|
|
@ -286,13 +286,6 @@ Anledning:%1$s."</string>
|
|||
<string name="screen_room_details_pinned_events_row_title">"Fästa meddelanden"</string>
|
||||
<string name="screen_room_error_failed_processing_media">"Misslyckades att bearbeta media för uppladdning, vänligen pröva igen."</string>
|
||||
<string name="screen_room_error_failed_retrieving_user_details">"Kunde inte hämta användarinformation"</string>
|
||||
<string name="screen_room_member_details_block_alert_action">"Blockera"</string>
|
||||
<string name="screen_room_member_details_block_alert_description">"Blockerade användare kommer inte att kunna skicka meddelanden till dig och alla deras meddelanden kommer att döljas. Du kan avblockera dem när som helst."</string>
|
||||
<string name="screen_room_member_details_block_user">"Blockera användare"</string>
|
||||
<string name="screen_room_member_details_title">"Profil"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_action">"Avblockera"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_description">"Du kommer att kunna se alla meddelanden från dem igen."</string>
|
||||
<string name="screen_room_member_details_unblock_user">"Avblockera användare"</string>
|
||||
<string name="screen_room_pinned_banner_indicator">"%1$s av %2$s"</string>
|
||||
<string name="screen_room_pinned_banner_indicator_description">"%1$s Fästa meddelanden"</string>
|
||||
<string name="screen_room_pinned_banner_loading_description">"Laddar meddelande …"</string>
|
||||
|
|
|
|||
|
|
@ -276,13 +276,6 @@
|
|||
<string name="screen_media_upload_preview_error_failed_sending">"Не вдалося завантажити медіафайл, спробуйте ще раз."</string>
|
||||
<string name="screen_room_error_failed_processing_media">"Не вдалося обробити медіафайл для завантаження, спробуйте ще раз."</string>
|
||||
<string name="screen_room_error_failed_retrieving_user_details">"Не вдалося отримати дані користувача"</string>
|
||||
<string name="screen_room_member_details_block_alert_action">"Заблокувати"</string>
|
||||
<string name="screen_room_member_details_block_alert_description">"Заблоковані користувачі не зможуть надсилати Вам повідомлення, і всі їхні повідомлення будуть приховані. Ви можете розблокувати їх у будь-який час."</string>
|
||||
<string name="screen_room_member_details_block_user">"Заблокувати користувача"</string>
|
||||
<string name="screen_room_member_details_title">"Профіль"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_action">"Розблокувати"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_description">"Ви знову зможете бачити всі повідомлення від них."</string>
|
||||
<string name="screen_room_member_details_unblock_user">"Розблокувати користувача"</string>
|
||||
<string name="screen_room_pinned_banner_indicator">"%1$s із %2$s"</string>
|
||||
<string name="screen_room_pinned_banner_indicator_description">"%1$s Закріплених повідомлень"</string>
|
||||
<string name="screen_room_pinned_banner_view_all_button_title">"Переглянути всі"</string>
|
||||
|
|
|
|||
|
|
@ -192,12 +192,6 @@
|
|||
<string name="screen_media_upload_preview_error_failed_sending">"Media yuklanmadi, qayta urinib ko‘ring."</string>
|
||||
<string name="screen_room_error_failed_processing_media">"Mediani yuklab bo‘lmadi, qayta urinib ko‘ring."</string>
|
||||
<string name="screen_room_error_failed_retrieving_user_details">"Foydalanuvchi tafsilotlarini olinmadi"</string>
|
||||
<string name="screen_room_member_details_block_alert_action">"Bloklash"</string>
|
||||
<string name="screen_room_member_details_block_alert_description">"Bloklangan foydalanuvchilar sizga xabar yubora olmaydi va ularning barcha xabarlari yashiriladi. Ularni istalgan vaqtda blokdan chiqarishingiz mumkin."</string>
|
||||
<string name="screen_room_member_details_block_user">"Foydalanuvchini bloklash"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_action">"Blokdan chiqarish"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_description">"Ulardan kelgan barcha xabarlarni yana koʻrishingiz mumkin boʻladi."</string>
|
||||
<string name="screen_room_member_details_unblock_user">"Foydalanuvchini blokdan chiqarish"</string>
|
||||
<string name="screen_share_location_title">"Joylashuvni ulashish"</string>
|
||||
<string name="screen_share_my_location_action">"Joylashuvimni ulashing"</string>
|
||||
<string name="screen_share_open_apple_maps">"Apple Mapsda oching"</string>
|
||||
|
|
|
|||
|
|
@ -242,13 +242,6 @@
|
|||
<string name="invite_friends_text">"嘿,來 %1$s 和我聊天:%2$s"</string>
|
||||
<string name="login_initial_device_name_android">"%1$s Android"</string>
|
||||
<string name="screen_media_upload_preview_error_failed_sending">"無法上傳媒體檔案,請稍後再試。"</string>
|
||||
<string name="screen_room_member_details_block_alert_action">"封鎖"</string>
|
||||
<string name="screen_room_member_details_block_alert_description">"被封鎖的使用者無法傳訊息給您,他們的訊息會被隱藏。您可以在任何時候解除封鎖。"</string>
|
||||
<string name="screen_room_member_details_block_user">"封鎖使用者"</string>
|
||||
<string name="screen_room_member_details_title">"個人檔案"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_action">"解除封鎖"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_description">"您將無法看到任何來自他們的訊息。"</string>
|
||||
<string name="screen_room_member_details_unblock_user">"解除封鎖使用者"</string>
|
||||
<string name="screen_share_location_title">"分享位置"</string>
|
||||
<string name="screen_share_my_location_action">"分享我的位置"</string>
|
||||
<string name="screen_share_open_apple_maps">"在 Apple Maps 中開啟"</string>
|
||||
|
|
|
|||
|
|
@ -281,13 +281,6 @@
|
|||
<string name="screen_room_details_pinned_events_row_title">"置顶消息"</string>
|
||||
<string name="screen_room_error_failed_processing_media">"处理要上传的媒体失败,请重试。"</string>
|
||||
<string name="screen_room_error_failed_retrieving_user_details">"无法获取用户信息"</string>
|
||||
<string name="screen_room_member_details_block_alert_action">"封禁"</string>
|
||||
<string name="screen_room_member_details_block_alert_description">"被封禁的用户无法给你发消息,并且他们的消息会被隐藏。你可以随时解封。"</string>
|
||||
<string name="screen_room_member_details_block_user">"封禁用户"</string>
|
||||
<string name="screen_room_member_details_title">"个人资料"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_action">"解封"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_description">"可以重新接收他们的消息。"</string>
|
||||
<string name="screen_room_member_details_unblock_user">"解封用户"</string>
|
||||
<string name="screen_room_pinned_banner_indicator">"%1$s / %2$s"</string>
|
||||
<string name="screen_room_pinned_banner_indicator_description">"置顶消息 %1$s"</string>
|
||||
<string name="screen_room_pinned_banner_loading_description">"正在加载消息…"</string>
|
||||
|
|
|
|||
|
|
@ -321,15 +321,6 @@ Reason: %1$s."</string>
|
|||
<string name="screen_room_details_pinned_events_row_title">"Pinned messages"</string>
|
||||
<string name="screen_room_error_failed_processing_media">"Failed processing media to upload, please try again."</string>
|
||||
<string name="screen_room_error_failed_retrieving_user_details">"Could not retrieve user details"</string>
|
||||
<string name="screen_room_member_details_block_alert_action">"Block"</string>
|
||||
<string name="screen_room_member_details_block_alert_description">"Blocked users won\'t be able to send you messages and all their messages will be hidden. You can unblock them anytime."</string>
|
||||
<string name="screen_room_member_details_block_user">"Block user"</string>
|
||||
<string name="screen_room_member_details_title">"Profile"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_action">"Unblock"</string>
|
||||
<string name="screen_room_member_details_unblock_alert_description">"You\'ll be able to see all messages from them again."</string>
|
||||
<string name="screen_room_member_details_unblock_user">"Unblock user"</string>
|
||||
<string name="screen_room_member_details_verify_button_subtitle">"Use the web app to verify this user."</string>
|
||||
<string name="screen_room_member_details_verify_button_title">"Verify %1$s"</string>
|
||||
<string name="screen_room_pinned_banner_indicator">"%1$s of %2$s"</string>
|
||||
<string name="screen_room_pinned_banner_indicator_description">"%1$s Pinned messages"</string>
|
||||
<string name="screen_room_pinned_banner_loading_description">"Loading message…"</string>
|
||||
|
|
|
|||
|
|
@ -70,6 +70,9 @@ class KonsistPreviewTest {
|
|||
"IconsCompoundPreview",
|
||||
"IconsOtherPreview",
|
||||
"MarkdownTextComposerEditPreview",
|
||||
"MatrixBadgeAtomPositivePreview",
|
||||
"MatrixBadgeAtomNeutralPreview",
|
||||
"MatrixBadgeAtomNegativePreview",
|
||||
"MentionSpanPreview",
|
||||
"MessageComposerViewVoicePreview",
|
||||
"MessagesReactionButtonAddPreview",
|
||||
|
|
@ -94,9 +97,6 @@ class KonsistPreviewTest {
|
|||
"PollContentViewEndedPreview",
|
||||
"PollContentViewUndisclosedPreview",
|
||||
"ReadReceiptBottomSheetPreview",
|
||||
"RoomBadgePositivePreview",
|
||||
"RoomBadgeNeutralPreview",
|
||||
"RoomBadgeNegativePreview",
|
||||
"RoomMemberListViewBannedPreview",
|
||||
"SasEmojisPreview",
|
||||
"SecureBackupSetupViewChangePreview",
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:f9d3d78555516e89ebabbf4a42999c3a5eaa592a61f21cedd8860acd7a77210c
|
||||
size 42214
|
||||
oid sha256:53f64097a1b58c155764740d08587ef3c1ffd75d0e5592906f35a208ad1d22ba
|
||||
size 38455
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:b785267e5fbda41dc3b7ee054459cbcd19a7e7c6b750ce747034a11ff1236531
|
||||
size 43065
|
||||
oid sha256:010ebb10eb97f9eef21bf6ed2d2471a4e883a0886195dc43d117e4c8a0c61352
|
||||
size 39619
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:fd3fbba34517626f11c940e583db1b7b058575b4078e260ef5ab146076a9256e
|
||||
size 12757
|
||||
oid sha256:f8f47f89b71826b87e2f6b1de8a325710f67da4c342a2fed10a253546f3b4658
|
||||
size 15303
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:7d6f038f3180c2f8f0a80ab608409a75fbcdb363e3e3931dda01a89cc1a7abaf
|
||||
size 13078
|
||||
oid sha256:c0bed8702030f9431a281c16cbf515821be63a49a5f25d7899eee2491f1804ca
|
||||
size 15405
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:37159c7d2974110a19aded9121c8d72d199007e97d873516bac209f5171561ba
|
||||
size 21583
|
||||
oid sha256:d5641f60c900c49dfccadfff390fe2e3a72c80e7bb4bbcdecac9a8af97a01c3a
|
||||
size 28709
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:f5d7e07f546ef3f9147be979869d007cc35873c1856290f42472d57e3111ef0c
|
||||
size 19313
|
||||
oid sha256:049980e2859db4dd266e4162f3859f129d7552ab0894ee88e3a3cf628e6fc606
|
||||
size 28993
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:6cbc9ce6cfd64740584e72371325374196904ea68c79dd78c5ab525fe665d044
|
||||
size 21922
|
||||
oid sha256:6697aa15bb8f4c8381c018a167947464b3153f98e0a3a0a3763c1ef87b6444d4
|
||||
size 24247
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:fec3a5602442d2fc48e0d0c603971c3d0a2d4e3e67917a00a70cec3421763946
|
||||
size 33654
|
||||
oid sha256:d2671908939f3dae083506227e389cce84f15e8a24c6fa24016e59ffc134495f
|
||||
size 36247
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:aef57c0efcbc88d0595ac161cdb4805459315fbcc8b27451e958806dee4712ce
|
||||
size 25123
|
||||
oid sha256:313b32ffe654551c9a402d5cb4ca37bb7ec2868616e73514d3ff8fac2b476917
|
||||
size 30119
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:6d32f7e0ba91562e8605e1df632c28ac38e301e2df806a46663353983bea8a94
|
||||
size 20875
|
||||
oid sha256:6fdfaa160bbee0b300422392fcd7f335db78864a03d92238eb6843fc2e50b7d1
|
||||
size 26417
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:c75d1e76f2c4c7ec3c381fd3ecba45c4eb62ad7239a97a298ac41f686f839e99
|
||||
size 22502
|
||||
oid sha256:c33ceaeae591f4f00a1efc71b2fd469b0dabaef6449ef126acb72300b4ae8551
|
||||
size 29665
|
||||
|
|
|
|||
|
|
@ -1,3 +0,0 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:37159c7d2974110a19aded9121c8d72d199007e97d873516bac209f5171561ba
|
||||
size 21583
|
||||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:1fb3d68142c04a84073b646d8a2daece4853b6db518033bf597d7e73cf997ca7
|
||||
size 20935
|
||||
oid sha256:6bfd432edf40bc901959d8209dd500b5102827376fd0d47fe5090882476bf5d5
|
||||
size 27771
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:bca6804dda6c169bfb90bfe562d3609ba0f844e086703150a42e0ec08a5aacf9
|
||||
size 18746
|
||||
oid sha256:08e46fd726c936a781d3ab049c4c60e080c673498ce54a3f956fce42d8ef7b90
|
||||
size 28135
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:5153d0bf8aa10335fd81fb6a6f33720edf8e0bdeb017c69d30be1ef175cb0318
|
||||
size 21263
|
||||
oid sha256:e9642867b66bdb1005802a5314e03ea33dd859aed63a882a974f71a3491fadb2
|
||||
size 23329
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:9926ceec284b746b2b46c15377ecdca624f1cd8303336f2d082b34602f0e6d3a
|
||||
size 31172
|
||||
oid sha256:1eb2962105a905fdb832de7070d2999f32db85ff4dec0bb66ec707b224fb446d
|
||||
size 33428
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:3bc079ddb639f05d60cf702fd0a8c1ae01520f19204df271fdc5a203c1442eee
|
||||
size 22979
|
||||
oid sha256:bff4a01c20d94363238b106d42c596810f0cf8ea5f14e3207bee984966b92f3a
|
||||
size 27542
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:58a2a378b174cf93de0925872ea6e980c724967751b0feabba51eeb6261f4318
|
||||
size 19065
|
||||
oid sha256:fca592210633e752cccfbcac3373acdd0ca55277fce9473b0e1b7db32ea19a04
|
||||
size 24208
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:0d7d7bf305375a306d1d1f002527f7ac81daf4f3387041035df4f9ef0f80c82e
|
||||
size 21809
|
||||
oid sha256:6058bb4b845ba2a174c1d35baa0e44604ec14e1d618b9a66f6825a58da81e61a
|
||||
size 28649
|
||||
|
|
|
|||
|
|
@ -1,3 +0,0 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:1fb3d68142c04a84073b646d8a2daece4853b6db518033bf597d7e73cf997ca7
|
||||
size 20935
|
||||
|
|
@ -176,7 +176,8 @@
|
|||
"name" : ":features:userprofile:shared",
|
||||
"includeRegex" : [
|
||||
"screen_start_chat_error_starting_chat",
|
||||
"screen_dm_details_.*"
|
||||
"screen_dm_details_.*",
|
||||
"screen_room_member_details_.*"
|
||||
]
|
||||
},
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue