From 198bff99158e8321b9b9a863e7f9390fd6cf6a23 Mon Sep 17 00:00:00 2001 From: ganfra Date: Thu, 22 May 2025 21:41:44 +0200 Subject: [PATCH 01/25] fix (left room membership) : use correct membership change and add test --- .../matrix/api/room/RoomMembershipObserver.kt | 17 ++- .../matrix/impl/room/RustBaseRoom.kt | 3 +- .../impl/fixtures/fakes/FakeRustRoom.kt | 5 + .../matrix/impl/room/RustBaseRoomTest.kt | 109 +++++++++++++++++- 4 files changed, 120 insertions(+), 14 deletions(-) diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/RoomMembershipObserver.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/RoomMembershipObserver.kt index 090f196269..19d7fdaaf2 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/RoomMembershipObserver.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/RoomMembershipObserver.kt @@ -22,15 +22,12 @@ class RoomMembershipObserver { private val _updates = MutableSharedFlow(extraBufferCapacity = 10) val updates = _updates.asSharedFlow() - suspend fun notifyUserLeftRoom(roomId: RoomId) { - _updates.emit(RoomMembershipUpdate(roomId, false, MembershipChange.LEFT)) - } - - suspend fun notifyUserDeclinedInvite(roomId: RoomId) { - _updates.emit(RoomMembershipUpdate(roomId, false, MembershipChange.INVITATION_REJECTED)) - } - - suspend fun notifyUserCanceledKnock(roomId: RoomId) { - _updates.emit(RoomMembershipUpdate(roomId, false, MembershipChange.KNOCK_RETRACTED)) + suspend fun notifyUserLeftRoom(roomId: RoomId, membershipBeforeLeft: CurrentUserMembership) { + val membershipChange = when (membershipBeforeLeft) { + CurrentUserMembership.INVITED -> MembershipChange.INVITATION_REJECTED + CurrentUserMembership.KNOCKED -> MembershipChange.KNOCK_RETRACTED + else -> MembershipChange.LEFT + } + _updates.emit(RoomMembershipUpdate(roomId, false, membershipChange)) } } diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RustBaseRoom.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RustBaseRoom.kt index 10c07a1ac9..3a7a78d444 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RustBaseRoom.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RustBaseRoom.kt @@ -137,10 +137,11 @@ class RustBaseRoom( } override suspend fun leave(): Result = withContext(roomDispatcher) { + val membershipBeforeLeft = roomInfoFlow.value.currentUserMembership runCatching { innerRoom.leave() }.onSuccess { - roomMembershipObserver.notifyUserLeftRoom(roomId) + roomMembershipObserver.notifyUserLeftRoom(roomId, membershipBeforeLeft) } } diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeRustRoom.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeRustRoom.kt index 8704f5ee1b..1e1146a038 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeRustRoom.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeRustRoom.kt @@ -18,6 +18,7 @@ class FakeRustRoom( private val roomId: RoomId = A_ROOM_ID, private val getMembers: () -> RoomMembersIterator = { lambdaError() }, private val getMembersNoSync: () -> RoomMembersIterator = { lambdaError() }, + private val leaveLambda: () -> Unit = { lambdaError() }, ) : Room(NoPointer) { override fun id(): String { return roomId.value @@ -31,6 +32,10 @@ class FakeRustRoom( return getMembersNoSync() } + override suspend fun leave() { + leaveLambda() + } + override fun close() { // No-op } diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/room/RustBaseRoomTest.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/room/RustBaseRoomTest.kt index 8a9050a884..990b3c29fa 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/room/RustBaseRoomTest.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/room/RustBaseRoomTest.kt @@ -7,8 +7,12 @@ package io.element.android.libraries.matrix.impl.room +import app.cash.turbine.test import com.google.common.truth.Truth.assertThat +import io.element.android.libraries.matrix.api.room.CurrentUserMembership +import io.element.android.libraries.matrix.api.room.RoomInfo import io.element.android.libraries.matrix.api.room.RoomMembershipObserver +import io.element.android.libraries.matrix.api.timeline.item.event.MembershipChange import io.element.android.libraries.matrix.impl.fixtures.fakes.FakeRustRoom import io.element.android.libraries.matrix.impl.fixtures.fakes.FakeRustRoomListService import io.element.android.libraries.matrix.test.A_DEVICE_ID @@ -16,6 +20,8 @@ import io.element.android.libraries.matrix.test.A_SESSION_ID import io.element.android.libraries.matrix.test.room.aRoomInfo import io.element.android.tests.testutils.testCoroutineDispatchers import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.shareIn import kotlinx.coroutines.isActive import kotlinx.coroutines.test.TestScope import kotlinx.coroutines.test.runTest @@ -33,23 +39,120 @@ class RustBaseRoomTest { assertThat(rustBaseRoom.roomCoroutineScope.isActive).isFalse() } + @Test + fun `when currentUserMembership=JOINED and user leave room succeed then roomMembershipObserver emits change as LEFT`() = runTest { + val roomMembershipObserver = RoomMembershipObserver() + val rustBaseRoom = createRustBaseRoom( + sessionCoroutineScope = this, + initialRoomInfo = aRoomInfo(currentUserMembership = CurrentUserMembership.JOINED), + innerRoom = FakeRustRoom( + leaveLambda = { + // Simulate a successful leave + } + ), + roomMembershipObserver = roomMembershipObserver, + ) + val shared = roomMembershipObserver.updates.shareIn(scope = backgroundScope, started = SharingStarted.Eagerly, replay = 1) + rustBaseRoom.leave() + shared.test { + val membershipUpdate = awaitItem() + assertThat(membershipUpdate.roomId).isEqualTo(rustBaseRoom.roomId) + assertThat(membershipUpdate.isUserInRoom).isFalse() + assertThat(membershipUpdate.change).isEqualTo(MembershipChange.LEFT) + ensureAllEventsConsumed() + } + rustBaseRoom.destroy() + } + + @Test + fun `when currentUserMembership=KNOCKED and user leave room succeed then roomMembershipObserver emits change as KNOCK_RETRACTED`() = runTest { + val roomMembershipObserver = RoomMembershipObserver() + val rustBaseRoom = createRustBaseRoom( + sessionCoroutineScope = this, + initialRoomInfo = aRoomInfo(currentUserMembership = CurrentUserMembership.KNOCKED), + innerRoom = FakeRustRoom( + leaveLambda = { + // Simulate a successful leave + } + ), + roomMembershipObserver = roomMembershipObserver, + ) + val shared = roomMembershipObserver.updates.shareIn(scope = backgroundScope, started = SharingStarted.Eagerly, replay = 1) + rustBaseRoom.leave() + shared.test { + val membershipUpdate = awaitItem() + assertThat(membershipUpdate.roomId).isEqualTo(rustBaseRoom.roomId) + assertThat(membershipUpdate.isUserInRoom).isFalse() + assertThat(membershipUpdate.change).isEqualTo(MembershipChange.KNOCK_RETRACTED) + ensureAllEventsConsumed() + } + rustBaseRoom.destroy() + } + + @Test + fun `when currentUserMembership=INVITED and user leave room succeed then roomMembershipObserver emits change as INVITATION_REJECTED`() = runTest { + val roomMembershipObserver = RoomMembershipObserver() + val rustBaseRoom = createRustBaseRoom( + sessionCoroutineScope = this, + initialRoomInfo = aRoomInfo(currentUserMembership = CurrentUserMembership.INVITED), + innerRoom = FakeRustRoom( + leaveLambda = { + // Simulate a successful leave + } + ), + roomMembershipObserver = roomMembershipObserver, + ) + val shared = roomMembershipObserver.updates.shareIn(scope = backgroundScope, started = SharingStarted.Eagerly, replay = 1) + rustBaseRoom.leave() + shared.test { + val membershipUpdate = awaitItem() + assertThat(membershipUpdate.roomId).isEqualTo(rustBaseRoom.roomId) + assertThat(membershipUpdate.isUserInRoom).isFalse() + assertThat(membershipUpdate.change).isEqualTo(MembershipChange.INVITATION_REJECTED) + ensureAllEventsConsumed() + } + rustBaseRoom.destroy() + } + + @Test + fun `when user leave room fails then roomMembershipObserver emits nothing`() = runTest { + val roomMembershipObserver = RoomMembershipObserver() + val rustBaseRoom = createRustBaseRoom( + sessionCoroutineScope = this, + initialRoomInfo = aRoomInfo(currentUserMembership = CurrentUserMembership.INVITED), + innerRoom = FakeRustRoom( + leaveLambda = { error("Leave failed") } + ), + roomMembershipObserver = roomMembershipObserver, + ) + val shared = roomMembershipObserver.updates.shareIn(scope = backgroundScope, started = SharingStarted.Eagerly, replay = 1) + rustBaseRoom.leave() + shared.test { + ensureAllEventsConsumed() + } + rustBaseRoom.destroy() + } + private fun TestScope.createRustBaseRoom( sessionCoroutineScope: CoroutineScope, + initialRoomInfo: RoomInfo = aRoomInfo(), + innerRoom: FakeRustRoom = FakeRustRoom(), + roomMembershipObserver: RoomMembershipObserver = RoomMembershipObserver(), ): RustBaseRoom { val dispatchers = testCoroutineDispatchers() return RustBaseRoom( sessionId = A_SESSION_ID, deviceId = A_DEVICE_ID, - innerRoom = FakeRustRoom(), + innerRoom = innerRoom, coroutineDispatchers = dispatchers, roomSyncSubscriber = RoomSyncSubscriber( roomListService = FakeRustRoomListService(), dispatchers = dispatchers, ), - roomMembershipObserver = RoomMembershipObserver(), + roomMembershipObserver = roomMembershipObserver, sessionCoroutineScope = sessionCoroutineScope, roomInfoMapper = RoomInfoMapper(), - initialRoomInfo = aRoomInfo(), + initialRoomInfo = initialRoomInfo, ) } } From dbe75cd4ea3ef9d858e086d58c53369b9c982e74 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 23 May 2025 18:36:48 +0200 Subject: [PATCH 02/25] On boarding flow: add a screen to select account provider among a fixed list (#4769) * Hide login with QrCode when the app is opened by a link * Fix UI on ChangeAccountProviderView. * Add flow to choose between a fixed list of account provider * Update screenshots * Fix licence header * Rename preview. * Ensure that the default account provider cannot be "*" This should not happen IRL, but better be robust against issue in application configuration. * Create const of any account provider value * Fix typo --------- Co-authored-by: ElementBot --- .../enterprise/api/EnterpriseService.kt | 10 ++ .../features/login/impl/LoginFlowNode.kt | 28 ++- .../AccountProviderDataSource.kt | 19 +- .../AccountProviderOtherView.kt | 75 ++++++++ .../AccountProviderProvider.kt | 12 +- .../accountprovider/AccountProviderView.kt | 12 +- .../features/login/impl/login/LoginHelper.kt | 4 +- .../ChangeAccountProviderPresenter.kt | 7 + .../ChangeAccountProviderState.kt | 1 + .../ChangeAccountProviderStateProvider.kt | 14 +- .../ChangeAccountProviderView.kt | 14 +- .../ChooseAccountProviderEvents.kt | 16 ++ .../ChooseAccountProviderNode.kt | 62 +++++++ .../ChooseAccountProviderPresenter.kt | 80 +++++++++ .../ChooseAccountProviderState.kt | 23 +++ .../ChooseAccountProviderStateProvider.kt | 77 ++++++++ .../ChooseAccountProviderView.kt | 150 ++++++++++++++++ .../impl/screens/onboarding/OnBoardingNode.kt | 6 +- .../screens/onboarding/OnBoardingPresenter.kt | 38 +++- .../screens/onboarding/OnBoardingState.kt | 1 + .../onboarding/OnBoardingStateProvider.kt | 2 + .../impl/screens/onboarding/OnBoardingView.kt | 8 +- .../impl/src/main/res/values/localazy.xml | 1 + .../AccountProviderDataSourceTest.kt | 23 +++ .../ChangeAccountProviderPresenterTest.kt | 76 +++++++- .../ChooseAccountProviderPresenterTest.kt | 167 ++++++++++++++++++ .../ChooseAccountProviderViewTest.kt | 102 +++++++++++ .../onboarding/OnBoardingPresenterTest.kt | 95 +++++++++- .../screens/onboarding/OnboardingViewTest.kt | 47 ++++- .../android/libraries/matrix/test/TestData.kt | 4 + ...ider_AccountProviderOtherView_Day_0_en.png | 3 + ...er_AccountProviderOtherView_Night_0_en.png | 3 + ...tprovider_AccountProviderView_Day_3_en.png | 4 +- ...rovider_AccountProviderView_Night_3_en.png | 4 +- ...der_ChangeAccountProviderView_Day_0_en.png | 4 +- ...der_ChangeAccountProviderView_Day_1_en.png | 3 + ...r_ChangeAccountProviderView_Night_0_en.png | 4 +- ...r_ChangeAccountProviderView_Night_1_en.png | 3 + ...der_ChooseAccountProviderView_Day_0_en.png | 3 + ...der_ChooseAccountProviderView_Day_1_en.png | 3 + ...der_ChooseAccountProviderView_Day_2_en.png | 3 + ...r_ChooseAccountProviderView_Night_0_en.png | 3 + ...r_ChooseAccountProviderView_Night_1_en.png | 3 + ...r_ChooseAccountProviderView_Night_2_en.png | 3 + ...der_SearchAccountProviderView_Day_1_en.png | 4 +- ...r_SearchAccountProviderView_Night_1_en.png | 4 +- 46 files changed, 1164 insertions(+), 64 deletions(-) create mode 100644 features/login/impl/src/main/kotlin/io/element/android/features/login/impl/accountprovider/AccountProviderOtherView.kt create mode 100644 features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderEvents.kt create mode 100644 features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderNode.kt create mode 100644 features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderPresenter.kt create mode 100644 features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderState.kt create mode 100644 features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderStateProvider.kt create mode 100644 features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderView.kt create mode 100644 features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderPresenterTest.kt create mode 100644 features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderViewTest.kt create mode 100644 tests/uitests/src/test/snapshots/images/features.login.impl.accountprovider_AccountProviderOtherView_Day_0_en.png create mode 100644 tests/uitests/src/test/snapshots/images/features.login.impl.accountprovider_AccountProviderOtherView_Night_0_en.png create mode 100644 tests/uitests/src/test/snapshots/images/features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Day_1_en.png create mode 100644 tests/uitests/src/test/snapshots/images/features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Night_1_en.png create mode 100644 tests/uitests/src/test/snapshots/images/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_0_en.png create mode 100644 tests/uitests/src/test/snapshots/images/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_1_en.png create mode 100644 tests/uitests/src/test/snapshots/images/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_2_en.png create mode 100644 tests/uitests/src/test/snapshots/images/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Night_0_en.png create mode 100644 tests/uitests/src/test/snapshots/images/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Night_1_en.png create mode 100644 tests/uitests/src/test/snapshots/images/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Night_2_en.png diff --git a/features/enterprise/api/src/main/kotlin/io/element/android/features/enterprise/api/EnterpriseService.kt b/features/enterprise/api/src/main/kotlin/io/element/android/features/enterprise/api/EnterpriseService.kt index 3209fb4631..4e2a3cc1f2 100644 --- a/features/enterprise/api/src/main/kotlin/io/element/android/features/enterprise/api/EnterpriseService.kt +++ b/features/enterprise/api/src/main/kotlin/io/element/android/features/enterprise/api/EnterpriseService.kt @@ -21,4 +21,14 @@ interface EnterpriseService { fun firebasePushGateway(): String? fun unifiedPushDefaultPushGateway(): String? + + companion object { + const val ANY_ACCOUNT_PROVIDER = "*" + } +} + +fun EnterpriseService.canConnectToAnyHomeserver(): Boolean { + return defaultHomeserverList().let { + it.isEmpty() || it.contains(EnterpriseService.ANY_ACCOUNT_PROVIDER) + } } diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/LoginFlowNode.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/LoginFlowNode.kt index 9efce719d8..fb21367501 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/LoginFlowNode.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/LoginFlowNode.kt @@ -30,6 +30,7 @@ import io.element.android.features.login.api.LoginEntryPoint import io.element.android.features.login.impl.accountprovider.AccountProviderDataSource import io.element.android.features.login.impl.qrcode.QrCodeLoginFlowNode import io.element.android.features.login.impl.screens.changeaccountprovider.ChangeAccountProviderNode +import io.element.android.features.login.impl.screens.chooseaccountprovider.ChooseAccountProviderNode import io.element.android.features.login.impl.screens.confirmaccountprovider.ConfirmAccountProviderNode import io.element.android.features.login.impl.screens.createaccount.CreateAccountNode import io.element.android.features.login.impl.screens.loginpassword.LoginPasswordNode @@ -107,6 +108,9 @@ class LoginFlowNode @AssistedInject constructor( val isAccountCreation: Boolean, ) : NavTarget + @Parcelize + data object ChooseAccountProvider : NavTarget + @Parcelize data object ChangeAccountProvider : NavTarget @@ -133,9 +137,13 @@ class LoginFlowNode @AssistedInject constructor( ) } - override fun onSignIn() { + override fun onSignIn(mustChooseAccountProvider: Boolean) { backstack.push( - NavTarget.ConfirmAccountProvider(isAccountCreation = false) + if (mustChooseAccountProvider) { + NavTarget.ChooseAccountProvider + } else { + NavTarget.ConfirmAccountProvider(isAccountCreation = false) + } ) } @@ -166,6 +174,22 @@ class LoginFlowNode @AssistedInject constructor( ) createNode(buildContext, listOf(callback, inputs)) } + NavTarget.ChooseAccountProvider -> { + val callback = object : ChooseAccountProviderNode.Callback { + override fun onOidcDetails(oidcDetails: OidcDetails) { + navigateToMas(oidcDetails) + } + + override fun onCreateAccountContinue(url: String) { + backstack.push(NavTarget.CreateAccount(url)) + } + + override fun onLoginPasswordNeeded() { + backstack.push(NavTarget.LoginPassword) + } + } + createNode(buildContext, listOf(callback)) + } NavTarget.QrCode -> { createNode(buildContext) } diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/accountprovider/AccountProviderDataSource.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/accountprovider/AccountProviderDataSource.kt index 23d60abd01..9ebc246e25 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/accountprovider/AccountProviderDataSource.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/accountprovider/AccountProviderDataSource.kt @@ -20,15 +20,16 @@ import javax.inject.Inject class AccountProviderDataSource @Inject constructor( enterpriseService: EnterpriseService, ) { - private val defaultAccountProvider = (enterpriseService.defaultHomeserverList().firstOrNull() ?: AuthenticationConfig.MATRIX_ORG_URL) - .let { url -> - AccountProvider( - url = url, - subtitle = null, - isPublic = url == AuthenticationConfig.MATRIX_ORG_URL, - isMatrixOrg = url == AuthenticationConfig.MATRIX_ORG_URL, - ) - } + private val defaultAccountProvider = + (enterpriseService.defaultHomeserverList().firstOrNull { it != EnterpriseService.ANY_ACCOUNT_PROVIDER } ?: AuthenticationConfig.MATRIX_ORG_URL) + .let { url -> + AccountProvider( + url = url, + subtitle = null, + isPublic = url == AuthenticationConfig.MATRIX_ORG_URL, + isMatrixOrg = url == AuthenticationConfig.MATRIX_ORG_URL, + ) + } private val accountProvider: MutableStateFlow = MutableStateFlow( defaultAccountProvider diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/accountprovider/AccountProviderOtherView.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/accountprovider/AccountProviderOtherView.kt new file mode 100644 index 0000000000..92fda4cf14 --- /dev/null +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/accountprovider/AccountProviderOtherView.kt @@ -0,0 +1,75 @@ +/* + * Copyright 2025 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +package io.element.android.features.login.impl.accountprovider + +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.heightIn +import androidx.compose.foundation.layout.padding +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.stringResource +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.features.login.impl.R +import io.element.android.libraries.designsystem.atomic.atoms.RoundedIconAtom +import io.element.android.libraries.designsystem.atomic.atoms.RoundedIconAtomSize +import io.element.android.libraries.designsystem.preview.ElementPreview +import io.element.android.libraries.designsystem.preview.PreviewsDayNight +import io.element.android.libraries.designsystem.theme.components.HorizontalDivider +import io.element.android.libraries.designsystem.theme.components.Text + +/** + * https://www.figma.com/file/o9p34zmiuEpZRyvZXJZAYL/FTUE?type=design&node-id=604-60817 + */ +@Composable +fun AccountProviderOtherView( + onClick: () -> Unit, + modifier: Modifier = Modifier, +) { + Column( + modifier = modifier + .fillMaxWidth() + .clickable { onClick() } + ) { + HorizontalDivider() + Row( + modifier = Modifier + .fillMaxWidth() + .heightIn(min = 44.dp) + .padding(vertical = 4.dp, horizontal = 16.dp), + verticalAlignment = Alignment.CenterVertically + ) { + RoundedIconAtom( + size = RoundedIconAtomSize.Medium, + imageVector = CompoundIcons.Search(), + tint = ElementTheme.colors.iconPrimary, + ) + Text( + modifier = Modifier + .padding(start = 16.dp) + .weight(1f), + text = stringResource(R.string.screen_change_account_provider_other), + style = ElementTheme.typography.fontBodyLgMedium, + color = ElementTheme.colors.textPrimary, + ) + } + } +} + +@PreviewsDayNight +@Composable +internal fun AccountProviderOtherViewPreview() = ElementPreview { + AccountProviderOtherView( + onClick = { }, + ) +} diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/accountprovider/AccountProviderProvider.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/accountprovider/AccountProviderProvider.kt index 75a6127d9f..a5f0fd7d3b 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/accountprovider/AccountProviderProvider.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/accountprovider/AccountProviderProvider.kt @@ -23,10 +23,14 @@ open class AccountProviderProvider : PreviewParameterProvider { fun anAccountProvider( url: String = AuthenticationConfig.MATRIX_ORG_URL, + subtitle: String? = "Matrix.org is an open network for secure, decentralized communication.", + isPublic: Boolean = true, + isMatrixOrg: Boolean = true, + isValid: Boolean = true, ) = AccountProvider( url = url, - subtitle = "Matrix.org is an open network for secure, decentralized communication.", - isPublic = true, - isMatrixOrg = true, - isValid = true, + subtitle = subtitle, + isPublic = isPublic, + isMatrixOrg = isMatrixOrg, + isValid = isValid, ) diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/accountprovider/AccountProviderView.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/accountprovider/AccountProviderView.kt index 091f2e6e02..b61f0283a7 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/accountprovider/AccountProviderView.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/accountprovider/AccountProviderView.kt @@ -39,6 +39,7 @@ fun AccountProviderView( item: AccountProvider, onClick: () -> Unit, modifier: Modifier = Modifier, + selected: Boolean = false, ) { Column( modifier = modifier @@ -66,7 +67,7 @@ fun AccountProviderView( } else { RoundedIconAtom( size = RoundedIconAtomSize.Medium, - imageVector = CompoundIcons.Search(), + imageVector = CompoundIcons.Host(), tint = ElementTheme.colors.iconPrimary, ) } @@ -88,6 +89,15 @@ fun AccountProviderView( tint = ElementTheme.colors.iconSecondary, ) } + if (selected) { + Icon( + modifier = Modifier + .padding(start = 10.dp), + imageVector = CompoundIcons.Check(), + contentDescription = null, + tint = ElementTheme.colors.iconAccentPrimary, + ) + } } if (item.subtitle != null) { Text( diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/login/LoginHelper.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/login/LoginHelper.kt index 2d401d45aa..459f45a06c 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/login/LoginHelper.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/login/LoginHelper.kt @@ -14,6 +14,7 @@ import androidx.compose.runtime.State import androidx.compose.runtime.mutableStateOf import io.element.android.features.login.impl.DefaultLoginUserStory import io.element.android.features.login.impl.error.ChangeServerError +import io.element.android.features.login.impl.screens.chooseaccountprovider.ChooseAccountProviderPresenter import io.element.android.features.login.impl.screens.confirmaccountprovider.ConfirmAccountProviderPresenter import io.element.android.features.login.impl.screens.createaccount.AccountCreationNotSupported import io.element.android.features.login.impl.screens.onboarding.OnBoardingPresenter @@ -31,7 +32,8 @@ import javax.inject.Inject /** * This class is responsible for managing the login flow, including handling OIDC actions and * submitting login requests. - * It's an helper to avoid code duplication. It is used by [OnBoardingPresenter] and [ConfirmAccountProviderPresenter]. + * It's an helper to avoid code duplication. It is used by [OnBoardingPresenter], [ConfirmAccountProviderPresenter] + * and [ChooseAccountProviderPresenter]. */ class LoginHelper @Inject constructor( private val oidcActionFlow: OidcActionFlow, diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderPresenter.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderPresenter.kt index 590be0d6a7..bb3da316b1 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderPresenter.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderPresenter.kt @@ -11,6 +11,7 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.remember import io.element.android.appconfig.AuthenticationConfig import io.element.android.features.enterprise.api.EnterpriseService +import io.element.android.features.enterprise.api.canConnectToAnyHomeserver import io.element.android.features.login.impl.accountprovider.AccountProvider import io.element.android.features.login.impl.changeserver.ChangeServerState import io.element.android.libraries.architecture.Presenter @@ -25,6 +26,7 @@ class ChangeAccountProviderPresenter @Inject constructor( override fun present(): ChangeAccountProviderState { val staticAccountProviderList = remember { enterpriseService.defaultHomeserverList() + .filter { it != EnterpriseService.ANY_ACCOUNT_PROVIDER } .map { it.ensureProtocol() } .ifEmpty { listOf(AuthenticationConfig.MATRIX_ORG_URL) } .map { url -> @@ -38,9 +40,14 @@ class ChangeAccountProviderPresenter @Inject constructor( } } + val canSearchForAccountProviders = remember { + enterpriseService.canConnectToAnyHomeserver() + } + val changeServerState = changeServerPresenter.present() return ChangeAccountProviderState( accountProviders = staticAccountProviderList, + canSearchForAccountProviders = canSearchForAccountProviders, changeServerState = changeServerState, ) } diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderState.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderState.kt index ecd2b8a3d6..e8e1f21cd8 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderState.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderState.kt @@ -13,5 +13,6 @@ import io.element.android.features.login.impl.changeserver.ChangeServerState // Do not use default value, so no member get forgotten in the presenters. data class ChangeAccountProviderState( val accountProviders: List, + val canSearchForAccountProviders: Boolean, val changeServerState: ChangeServerState, ) diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderStateProvider.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderStateProvider.kt index d061303f3a..435eee7f89 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderStateProvider.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderStateProvider.kt @@ -8,20 +8,28 @@ package io.element.android.features.login.impl.screens.changeaccountprovider import androidx.compose.ui.tooling.preview.PreviewParameterProvider +import io.element.android.features.login.impl.accountprovider.AccountProvider import io.element.android.features.login.impl.accountprovider.anAccountProvider +import io.element.android.features.login.impl.changeserver.ChangeServerState import io.element.android.features.login.impl.changeserver.aChangeServerState open class ChangeAccountProviderStateProvider : PreviewParameterProvider { override val values: Sequence get() = sequenceOf( aChangeAccountProviderState(), + aChangeAccountProviderState(canSearchForAccountProviders = false), // Add other state here ) } -fun aChangeAccountProviderState() = ChangeAccountProviderState( - accountProviders = listOf( +fun aChangeAccountProviderState( + accountProviders: List = listOf( anAccountProvider() ), - changeServerState = aChangeServerState(), + canSearchForAccountProviders: Boolean = true, + changeServerState: ChangeServerState = aChangeServerState(), +) = ChangeAccountProviderState( + accountProviders = accountProviders, + canSearchForAccountProviders = canSearchForAccountProviders, + changeServerState = changeServerState, ) diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderView.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderView.kt index ad2befb628..c4542dfb0d 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderView.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderView.kt @@ -27,7 +27,7 @@ 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.login.impl.R -import io.element.android.features.login.impl.accountprovider.AccountProvider +import io.element.android.features.login.impl.accountprovider.AccountProviderOtherView import io.element.android.features.login.impl.accountprovider.AccountProviderView import io.element.android.features.login.impl.changeserver.ChangeServerEvents import io.element.android.features.login.impl.changeserver.ChangeServerView @@ -95,13 +95,11 @@ fun ChangeAccountProviderView( ) } // Other - AccountProviderView( - item = AccountProvider( - url = "", - title = stringResource(id = R.string.screen_change_account_provider_other), - ), - onClick = onOtherProviderClick - ) + if (state.canSearchForAccountProviders) { + AccountProviderOtherView( + onClick = onOtherProviderClick + ) + } Spacer(Modifier.height(32.dp)) } ChangeServerView( diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderEvents.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderEvents.kt new file mode 100644 index 0000000000..76c86d18c2 --- /dev/null +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderEvents.kt @@ -0,0 +1,16 @@ +/* + * Copyright 2025 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +package io.element.android.features.login.impl.screens.chooseaccountprovider + +import io.element.android.features.login.impl.accountprovider.AccountProvider + +sealed interface ChooseAccountProviderEvents { + data class SelectAccountProvider(val accountProvider: AccountProvider) : ChooseAccountProviderEvents + data object Continue : ChooseAccountProviderEvents + data object ClearError : ChooseAccountProviderEvents +} diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderNode.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderNode.kt new file mode 100644 index 0000000000..2189252d01 --- /dev/null +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderNode.kt @@ -0,0 +1,62 @@ +/* + * Copyright 2025 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +package io.element.android.features.login.impl.screens.chooseaccountprovider + +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.LocalContext +import com.bumble.appyx.core.modality.BuildContext +import com.bumble.appyx.core.node.Node +import com.bumble.appyx.core.plugin.Plugin +import com.bumble.appyx.core.plugin.plugins +import dagger.assisted.Assisted +import dagger.assisted.AssistedInject +import io.element.android.anvilannotations.ContributesNode +import io.element.android.features.login.impl.util.openLearnMorePage +import io.element.android.libraries.di.AppScope +import io.element.android.libraries.matrix.api.auth.OidcDetails + +@ContributesNode(AppScope::class) +class ChooseAccountProviderNode @AssistedInject constructor( + @Assisted buildContext: BuildContext, + @Assisted plugins: List, + private val presenter: ChooseAccountProviderPresenter, +) : Node(buildContext, plugins = plugins) { + interface Callback : Plugin { + fun onLoginPasswordNeeded() + fun onOidcDetails(oidcDetails: OidcDetails) + fun onCreateAccountContinue(url: String) + } + + private fun onOidcDetails(oidcDetails: OidcDetails) { + plugins().forEach { it.onOidcDetails(oidcDetails) } + } + + private fun onLoginPasswordNeeded() { + plugins().forEach { it.onLoginPasswordNeeded() } + } + + private fun onCreateAccountContinue(url: String) { + plugins().forEach { it.onCreateAccountContinue(url) } + } + + @Composable + override fun View(modifier: Modifier) { + val state = presenter.present() + val context = LocalContext.current + ChooseAccountProviderView( + state = state, + modifier = modifier, + onBackClick = ::navigateUp, + onOidcDetails = ::onOidcDetails, + onNeedLoginPassword = ::onLoginPasswordNeeded, + onLearnMoreClick = { openLearnMorePage(context) }, + onCreateAccountContinue = ::onCreateAccountContinue, + ) + } +} diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderPresenter.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderPresenter.kt new file mode 100644 index 0000000000..464e30936f --- /dev/null +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderPresenter.kt @@ -0,0 +1,80 @@ +/* + * Copyright 2025 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +package io.element.android.features.login.impl.screens.chooseaccountprovider + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberCoroutineScope +import androidx.compose.runtime.setValue +import io.element.android.appconfig.AuthenticationConfig +import io.element.android.features.enterprise.api.EnterpriseService +import io.element.android.features.login.impl.accountprovider.AccountProvider +import io.element.android.features.login.impl.login.LoginHelper +import io.element.android.libraries.architecture.AsyncData +import io.element.android.libraries.architecture.Presenter +import io.element.android.libraries.core.uri.ensureProtocol +import javax.inject.Inject + +class ChooseAccountProviderPresenter @Inject constructor( + private val enterpriseService: EnterpriseService, + private val loginHelper: LoginHelper, +) : Presenter { + @Composable + override fun present(): ChooseAccountProviderState { + val localCoroutineScope = rememberCoroutineScope() + val loginMode by loginHelper.collectLoginMode() + + var selectedAccountProvider: AccountProvider? by remember { mutableStateOf(null) } + + fun handleEvent(event: ChooseAccountProviderEvents) { + when (event) { + ChooseAccountProviderEvents.Continue -> { + selectedAccountProvider?.let { + loginHelper.submit( + coroutineScope = localCoroutineScope, + isAccountCreation = false, + homeserverUrl = it.url, + loginHint = null, + ) + } + } + is ChooseAccountProviderEvents.SelectAccountProvider -> { + // Ensure that the user do not change the server during processing + if (loginMode is AsyncData.Uninitialized) { + selectedAccountProvider = event.accountProvider + } + } + ChooseAccountProviderEvents.ClearError -> loginHelper.clearError() + } + } + + val staticAccountProviderList = remember { + // The list cannot contains ANY_ACCOUNT_PROVIDER ("*") and cannot be empty at this point + enterpriseService.defaultHomeserverList() + .map { it.ensureProtocol() } + .map { url -> + AccountProvider( + url = url, + subtitle = null, + isPublic = url == AuthenticationConfig.MATRIX_ORG_URL, + isMatrixOrg = url == AuthenticationConfig.MATRIX_ORG_URL, + isValid = true, + ) + } + } + + return ChooseAccountProviderState( + accountProviders = staticAccountProviderList, + selectedAccountProvider = selectedAccountProvider, + loginMode = loginMode, + eventSink = ::handleEvent, + ) + } +} diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderState.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderState.kt new file mode 100644 index 0000000000..3591334047 --- /dev/null +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderState.kt @@ -0,0 +1,23 @@ +/* + * Copyright 2025 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +package io.element.android.features.login.impl.screens.chooseaccountprovider + +import io.element.android.features.login.impl.accountprovider.AccountProvider +import io.element.android.features.login.impl.login.LoginMode +import io.element.android.libraries.architecture.AsyncData + +// Do not use default value, so no member get forgotten in the presenters. +data class ChooseAccountProviderState( + val accountProviders: List, + val selectedAccountProvider: AccountProvider?, + val loginMode: AsyncData, + val eventSink: (ChooseAccountProviderEvents) -> Unit, +) { + val submitEnabled: Boolean + get() = selectedAccountProvider != null && (loginMode is AsyncData.Uninitialized || loginMode is AsyncData.Loading) +} diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderStateProvider.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderStateProvider.kt new file mode 100644 index 0000000000..b921fee330 --- /dev/null +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderStateProvider.kt @@ -0,0 +1,77 @@ +/* + * Copyright 2025 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +package io.element.android.features.login.impl.screens.chooseaccountprovider + +import androidx.compose.ui.tooling.preview.PreviewParameterProvider +import io.element.android.features.login.impl.accountprovider.AccountProvider +import io.element.android.features.login.impl.accountprovider.anAccountProvider +import io.element.android.features.login.impl.login.LoginMode +import io.element.android.libraries.architecture.AsyncData + +open class ChooseAccountProviderStateProvider : PreviewParameterProvider { + private val server1 = anAccountProvider( + url = "https://server1.io", + subtitle = null, + isPublic = false, + isMatrixOrg = false, + ) + private val server2 = anAccountProvider( + url = "https://server2.io", + subtitle = null, + isPublic = false, + isMatrixOrg = false, + ) + private val server3 = anAccountProvider( + url = "https://server3.io", + subtitle = null, + isPublic = false, + isMatrixOrg = false, + ) + override val values: Sequence + get() = sequenceOf( + aChooseAccountProviderState( + accountProviders = listOf( + server1, + server2, + server3, + ) + ), + aChooseAccountProviderState( + accountProviders = listOf( + server1, + server2, + server3, + ), + selectedAccountProvider = server2, + ), + aChooseAccountProviderState( + accountProviders = listOf( + server1, + server2, + server3, + ), + selectedAccountProvider = server2, + loginMode = AsyncData.Loading(), + ), + // Add other state here + ) +} + +fun aChooseAccountProviderState( + accountProviders: List = listOf( + anAccountProvider() + ), + selectedAccountProvider: AccountProvider? = null, + loginMode: AsyncData = AsyncData.Uninitialized, + eventSink: (ChooseAccountProviderEvents) -> Unit = {}, +) = ChooseAccountProviderState( + accountProviders = accountProviders, + selectedAccountProvider = selectedAccountProvider, + loginMode = loginMode, + eventSink = eventSink, +) diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderView.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderView.kt new file mode 100644 index 0000000000..760e39ce85 --- /dev/null +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderView.kt @@ -0,0 +1,150 @@ +/* + * Copyright 2025 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +@file:OptIn(ExperimentalMaterial3Api::class) + +package io.element.android.features.login.impl.screens.chooseaccountprovider + +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.consumeWindowInsets +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.imePadding +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.verticalScroll +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.runtime.Composable +import androidx.compose.runtime.derivedStateOf +import androidx.compose.runtime.getValue +import androidx.compose.runtime.remember +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.login.impl.R +import io.element.android.features.login.impl.accountprovider.AccountProviderView +import io.element.android.features.login.impl.login.LoginModeView +import io.element.android.libraries.architecture.AsyncData +import io.element.android.libraries.designsystem.atomic.molecules.IconTitleSubtitleMolecule +import io.element.android.libraries.designsystem.components.BigIcon +import io.element.android.libraries.designsystem.components.button.BackButton +import io.element.android.libraries.designsystem.preview.ElementPreview +import io.element.android.libraries.designsystem.preview.PreviewsDayNight +import io.element.android.libraries.designsystem.theme.components.Button +import io.element.android.libraries.designsystem.theme.components.Scaffold +import io.element.android.libraries.designsystem.theme.components.TopAppBar +import io.element.android.libraries.matrix.api.auth.OidcDetails +import io.element.android.libraries.ui.strings.CommonStrings + +@Composable +fun ChooseAccountProviderView( + state: ChooseAccountProviderState, + onBackClick: () -> Unit, + onOidcDetails: (OidcDetails) -> Unit, + onNeedLoginPassword: () -> Unit, + onLearnMoreClick: () -> Unit, + onCreateAccountContinue: (url: String) -> Unit, + modifier: Modifier = Modifier, +) { + val isLoading by remember(state.loginMode) { + derivedStateOf { + state.loginMode is AsyncData.Loading + } + } + + Scaffold( + modifier = modifier, + topBar = { + TopAppBar( + title = {}, + navigationIcon = { BackButton(onClick = onBackClick) } + ) + } + ) { padding -> + Box( + modifier = Modifier + .fillMaxSize() + .imePadding() + .padding(padding) + .consumeWindowInsets(padding) + ) { + Column( + modifier = Modifier + .fillMaxSize() + .verticalScroll(state = rememberScrollState()) + ) { + IconTitleSubtitleMolecule( + modifier = Modifier.padding(top = 16.dp, bottom = 32.dp, start = 16.dp, end = 16.dp), + iconStyle = BigIcon.Style.Default(CompoundIcons.HomeSolid()), + title = stringResource(id = R.string.screen_server_confirmation_title_picker_mode), + subTitle = null, + ) + + state.accountProviders.forEach { item -> + val alteredItem = if (item.isMatrixOrg) { + // Set the subtitle from the resource + item.copy( + subtitle = stringResource(id = R.string.screen_change_account_provider_matrix_org_subtitle), + ) + } else { + item + } + AccountProviderView( + item = alteredItem, + selected = item == state.selectedAccountProvider, + onClick = { + state.eventSink(ChooseAccountProviderEvents.SelectAccountProvider(item)) + } + ) + } + Spacer(Modifier.height(32.dp)) + // Flexible spacing to keep the submit button at the bottom + Spacer(modifier = Modifier.weight(1f)) + Button( + text = stringResource(id = CommonStrings.action_continue), + showProgress = isLoading, + onClick = { + state.eventSink(ChooseAccountProviderEvents.Continue) + }, + enabled = state.submitEnabled || isLoading, + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 16.dp) + ) + Spacer(modifier = Modifier.height(48.dp)) + } + LoginModeView( + loginMode = state.loginMode, + onClearError = { + state.eventSink(ChooseAccountProviderEvents.ClearError) + }, + onLearnMoreClick = onLearnMoreClick, + onOidcDetails = onOidcDetails, + onNeedLoginPassword = onNeedLoginPassword, + onCreateAccountContinue = onCreateAccountContinue, + ) + } + } +} + +@PreviewsDayNight +@Composable +internal fun ChooseAccountProviderViewPreview(@PreviewParameter(ChooseAccountProviderStateProvider::class) state: ChooseAccountProviderState) = ElementPreview { + ChooseAccountProviderView( + state = state, + onBackClick = { }, + onLearnMoreClick = { }, + onOidcDetails = { }, + onNeedLoginPassword = { }, + onCreateAccountContinue = { }, + ) +} diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingNode.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingNode.kt index f17372b3ab..d9c1615fde 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingNode.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingNode.kt @@ -34,7 +34,7 @@ class OnBoardingNode @AssistedInject constructor( ) { interface Callback : Plugin { fun onSignUp() - fun onSignIn() + fun onSignIn(mustChooseAccountProvider: Boolean) fun onSignInWithQrCode() fun onReportProblem() fun onLoginPasswordNeeded() @@ -53,8 +53,8 @@ class OnBoardingNode @AssistedInject constructor( params = params, ) - private fun onSignIn() { - plugins().forEach { it.onSignIn() } + private fun onSignIn(mustChooseAccountProvider: Boolean) { + plugins().forEach { it.onSignIn(mustChooseAccountProvider) } } private fun onSignUp() { diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingPresenter.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingPresenter.kt index 38ea9c3b49..f4696133fe 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingPresenter.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingPresenter.kt @@ -16,6 +16,8 @@ import dagger.assisted.Assisted import dagger.assisted.AssistedFactory import dagger.assisted.AssistedInject import io.element.android.appconfig.OnBoardingConfig +import io.element.android.features.enterprise.api.EnterpriseService +import io.element.android.features.enterprise.api.canConnectToAnyHomeserver import io.element.android.features.login.impl.login.LoginHelper import io.element.android.features.rageshake.api.RageshakeFeatureAvailability import io.element.android.libraries.architecture.Presenter @@ -27,6 +29,7 @@ class OnBoardingPresenter @AssistedInject constructor( @Assisted private val params: OnBoardingNode.Params, private val buildMeta: BuildMeta, private val featureFlagService: FeatureFlagService, + private val enterpriseService: EnterpriseService, private val rageshakeFeatureAvailability: RageshakeFeatureAvailability, private val loginHelper: LoginHelper, ) : Presenter { @@ -37,15 +40,33 @@ class OnBoardingPresenter @AssistedInject constructor( ): OnBoardingPresenter } - private val defaultAccountProvider = params.accountProvider - private val loginHint = params.loginHint - @Composable override fun present(): OnBoardingState { val localCoroutineScope = rememberCoroutineScope() - - val canLoginWithQrCode by produceState(initialValue = false) { - value = defaultAccountProvider == null && + val forcedAccountProvider = remember { + // If defaultHomeserverList() returns a singleton list, this is the default account provider. + // In this case, the user can sign in using this homeserver, or use QrCode login + enterpriseService.defaultHomeserverList().singleOrNull() + } + val canConnectToAnyHomeserver = remember { + enterpriseService.canConnectToAnyHomeserver() + } + val mustChooseAccountProvider = remember { + !canConnectToAnyHomeserver && enterpriseService.defaultHomeserverList().size > 1 + } + val linkAccountProvider by produceState(initialValue = null) { + // Account provider from the link, if allowed by the enterprise service + value = params.accountProvider?.takeIf { + enterpriseService.isAllowedToConnectToHomeserver(it) + } + } + val defaultAccountProvider = remember(linkAccountProvider) { + // If there is a forced account provider, this is the default account provider + // Else use the account provider passed in the params if any and if allowed + forcedAccountProvider ?: linkAccountProvider + } + val canLoginWithQrCode by produceState(initialValue = false, linkAccountProvider) { + value = linkAccountProvider == null && featureFlagService.isFeatureEnabled(FeatureFlags.QrCodeLogin) } val canReportBug = remember { rageshakeFeatureAvailability.isAvailable() } @@ -58,7 +79,7 @@ class OnBoardingPresenter @AssistedInject constructor( coroutineScope = localCoroutineScope, isAccountCreation = false, homeserverUrl = event.defaultAccountProvider, - loginHint = loginHint, + loginHint = params.loginHint?.takeIf { forcedAccountProvider == null }, ) OnBoardingEvents.ClearError -> loginHelper.clearError() } @@ -67,8 +88,9 @@ class OnBoardingPresenter @AssistedInject constructor( return OnBoardingState( productionApplicationName = buildMeta.productionApplicationName, defaultAccountProvider = defaultAccountProvider, + mustChooseAccountProvider = mustChooseAccountProvider, canLoginWithQrCode = canLoginWithQrCode, - canCreateAccount = defaultAccountProvider == null && OnBoardingConfig.CAN_CREATE_ACCOUNT, + canCreateAccount = defaultAccountProvider == null && canConnectToAnyHomeserver && OnBoardingConfig.CAN_CREATE_ACCOUNT, canReportBug = canReportBug, loginMode = loginMode, eventSink = ::handleEvent, diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingState.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingState.kt index ded9ae7102..98484a1fc2 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingState.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingState.kt @@ -13,6 +13,7 @@ import io.element.android.libraries.architecture.AsyncData data class OnBoardingState( val productionApplicationName: String, val defaultAccountProvider: String?, + val mustChooseAccountProvider: Boolean, val canLoginWithQrCode: Boolean, val canCreateAccount: Boolean, val canReportBug: Boolean, diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingStateProvider.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingStateProvider.kt index 975f9d2e7f..9be36719e2 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingStateProvider.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingStateProvider.kt @@ -26,6 +26,7 @@ open class OnBoardingStateProvider : PreviewParameterProvider { fun anOnBoardingState( productionApplicationName: String = "Element", defaultAccountProvider: String? = null, + mustChooseAccountProvider: Boolean = false, canLoginWithQrCode: Boolean = false, canCreateAccount: Boolean = false, canReportBug: Boolean = false, @@ -34,6 +35,7 @@ fun anOnBoardingState( ) = OnBoardingState( productionApplicationName = productionApplicationName, defaultAccountProvider = defaultAccountProvider, + mustChooseAccountProvider = mustChooseAccountProvider, canLoginWithQrCode = canLoginWithQrCode, canCreateAccount = canCreateAccount, canReportBug = canReportBug, diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingView.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingView.kt index dd41e38e64..99ab348b06 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingView.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingView.kt @@ -56,7 +56,7 @@ import io.element.android.libraries.ui.strings.CommonStrings fun OnBoardingView( state: OnBoardingState, onSignInWithQrCode: () -> Unit, - onSignIn: () -> Unit, + onSignIn: (mustChooseAccountProvider: Boolean) -> Unit, onCreateAccount: () -> Unit, onOidcDetails: (OidcDetails) -> Unit, onNeedLoginPassword: () -> Unit, @@ -143,7 +143,7 @@ private fun OnBoardingContent(state: OnBoardingState) { private fun OnBoardingButtons( state: OnBoardingState, onSignInWithQrCode: () -> Unit, - onSignIn: () -> Unit, + onSignIn: (mustChooseAccountProvider: Boolean) -> Unit, onCreateAccount: () -> Unit, onReportProblem: () -> Unit, ) { @@ -171,7 +171,9 @@ private fun OnBoardingButtons( if (defaultAccountProvider == null) { Button( text = stringResource(id = signInButtonStringRes), - onClick = onSignIn, + onClick = { + onSignIn(state.mustChooseAccountProvider) + }, modifier = Modifier .fillMaxWidth() .testTag(TestTags.onBoardingSignIn) diff --git a/features/login/impl/src/main/res/values/localazy.xml b/features/login/impl/src/main/res/values/localazy.xml index 998a0bc775..4f4d98baaf 100644 --- a/features/login/impl/src/main/res/values/localazy.xml +++ b/features/login/impl/src/main/res/values/localazy.xml @@ -89,5 +89,6 @@ Try signing in manually, or scan the QR code with another device." "Matrix is an open network for secure, decentralised communication." "This is where your conversations will live — just like you would use an email provider to keep your emails." "You’re about to sign in to %1$s" + "Choose account provider" "You’re about to create an account on %1$s" diff --git a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/accountprovider/AccountProviderDataSourceTest.kt b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/accountprovider/AccountProviderDataSourceTest.kt index a5ede23b2e..3d84a1da41 100644 --- a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/accountprovider/AccountProviderDataSourceTest.kt +++ b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/accountprovider/AccountProviderDataSourceTest.kt @@ -10,6 +10,7 @@ package io.element.android.features.login.impl.accountprovider import app.cash.turbine.test import com.google.common.truth.Truth.assertThat import io.element.android.appconfig.AuthenticationConfig +import io.element.android.features.enterprise.api.EnterpriseService import io.element.android.features.enterprise.test.FakeEnterpriseService import io.element.android.tests.testutils.WarmUpRule import kotlinx.coroutines.test.runTest @@ -60,6 +61,28 @@ class AccountProviderDataSourceTest { } } + @Test + fun `present - ensure that default homeserver is not star char`() = runTest { + val sut = AccountProviderDataSource( + FakeEnterpriseService( + defaultHomeserverListResult = { listOf(EnterpriseService.ANY_ACCOUNT_PROVIDER, AuthenticationConfig.MATRIX_ORG_URL) } + ) + ) + sut.flow.test { + val initialState = awaitItem() + assertThat(initialState).isEqualTo( + AccountProvider( + url = AuthenticationConfig.MATRIX_ORG_URL, + title = "matrix.org", + subtitle = null, + isPublic = true, + isMatrixOrg = true, + isValid = false, + ) + ) + } + } + @Test fun `present - user change and reset`() = runTest { val sut = AccountProviderDataSource(FakeEnterpriseService()) diff --git a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderPresenterTest.kt b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderPresenterTest.kt index dbce8164c6..89abc6ddef 100644 --- a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderPresenterTest.kt +++ b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderPresenterTest.kt @@ -11,9 +11,12 @@ import app.cash.molecule.RecompositionMode import app.cash.molecule.moleculeFlow import app.cash.turbine.test import com.google.common.truth.Truth.assertThat +import io.element.android.features.enterprise.api.EnterpriseService import io.element.android.features.enterprise.test.FakeEnterpriseService import io.element.android.features.login.impl.accountprovider.AccountProvider import io.element.android.features.login.impl.changeserver.aChangeServerState +import io.element.android.libraries.matrix.test.AN_ACCOUNT_PROVIDER +import io.element.android.libraries.matrix.test.AN_ACCOUNT_PROVIDER_2 import io.element.android.tests.testutils.WarmUpRule import kotlinx.coroutines.test.runTest import org.junit.Rule @@ -27,7 +30,9 @@ class ChangeAccountProviderPresenterTest { fun `present - initial state`() = runTest { val presenter = ChangeAccountProviderPresenter( changeServerPresenter = { aChangeServerState() }, - enterpriseService = FakeEnterpriseService(), + enterpriseService = FakeEnterpriseService( + defaultHomeserverListResult = { emptyList() } + ), ) moleculeFlow(RecompositionMode.Immediate) { presenter.present() @@ -45,6 +50,75 @@ class ChangeAccountProviderPresenterTest { ) ) ) + assertThat(initialState.canSearchForAccountProviders).isTrue() + } + } + + @Test + fun `present - fixed list of account providers`() = runTest { + val presenter = ChangeAccountProviderPresenter( + changeServerPresenter = { aChangeServerState() }, + enterpriseService = FakeEnterpriseService( + defaultHomeserverListResult = { + listOf(AN_ACCOUNT_PROVIDER, AN_ACCOUNT_PROVIDER_2) + } + ), + ) + moleculeFlow(RecompositionMode.Immediate) { + presenter.present() + }.test { + val initialState = awaitItem() + assertThat(initialState.accountProviders).isEqualTo( + listOf( + AccountProvider( + url = "https://matrix.org", + title = "matrix.org", + subtitle = null, + isPublic = true, + isMatrixOrg = true, + isValid = true, + ), + AccountProvider( + url = "https://element.io", + title = "element.io", + subtitle = null, + isPublic = false, + isMatrixOrg = false, + isValid = true, + ) + ) + ) + assertThat(initialState.canSearchForAccountProviders).isFalse() + } + } + + @Test + fun `present - opened list of account providers`() = runTest { + val presenter = ChangeAccountProviderPresenter( + changeServerPresenter = { aChangeServerState() }, + enterpriseService = FakeEnterpriseService( + defaultHomeserverListResult = { + listOf(AN_ACCOUNT_PROVIDER, EnterpriseService.ANY_ACCOUNT_PROVIDER) + } + ), + ) + moleculeFlow(RecompositionMode.Immediate) { + presenter.present() + }.test { + val initialState = awaitItem() + assertThat(initialState.accountProviders).isEqualTo( + listOf( + AccountProvider( + url = "https://matrix.org", + title = "matrix.org", + subtitle = null, + isPublic = true, + isMatrixOrg = true, + isValid = true, + ) + ) + ) + assertThat(initialState.canSearchForAccountProviders).isTrue() } } } diff --git a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderPresenterTest.kt b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderPresenterTest.kt new file mode 100644 index 0000000000..98a185cac4 --- /dev/null +++ b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderPresenterTest.kt @@ -0,0 +1,167 @@ +/* + * Copyright 2025 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +package io.element.android.features.login.impl.screens.chooseaccountprovider + +import com.google.common.truth.Truth.assertThat +import io.element.android.features.enterprise.api.EnterpriseService +import io.element.android.features.enterprise.test.FakeEnterpriseService +import io.element.android.features.login.impl.accountprovider.AccountProvider +import io.element.android.features.login.impl.login.LoginHelper +import io.element.android.features.login.impl.screens.onboarding.createLoginHelper +import io.element.android.libraries.architecture.AsyncData +import io.element.android.libraries.core.uri.ensureProtocol +import io.element.android.libraries.matrix.test.AN_ACCOUNT_PROVIDER_2 +import io.element.android.libraries.matrix.test.AN_ACCOUNT_PROVIDER_3 +import io.element.android.libraries.matrix.test.A_THROWABLE +import io.element.android.libraries.matrix.test.auth.FakeMatrixAuthenticationService +import io.element.android.tests.testutils.WarmUpRule +import io.element.android.tests.testutils.test +import kotlinx.coroutines.test.runTest +import org.junit.Rule +import org.junit.Test + +class ChooseAccountProviderPresenterTest { + @get:Rule + val warmUpRule = WarmUpRule() + + companion object { + private const val ACCOUNT_PROVIDER_FROM_CONFIG_1 = AN_ACCOUNT_PROVIDER_2 + private const val ACCOUNT_PROVIDER_FROM_CONFIG_2 = AN_ACCOUNT_PROVIDER_3 + val accountProvider1 = AccountProvider( + url = ACCOUNT_PROVIDER_FROM_CONFIG_1.ensureProtocol(), + subtitle = null, + isPublic = false, + isMatrixOrg = false, + isValid = true, + ) + val accountProvider2 = AccountProvider( + url = ACCOUNT_PROVIDER_FROM_CONFIG_2.ensureProtocol(), + subtitle = null, + isPublic = false, + isMatrixOrg = false, + isValid = true, + ) + } + + @Test + fun `present - ensure initial conditions`() { + assertThat( + setOf( + ACCOUNT_PROVIDER_FROM_CONFIG_1, + ACCOUNT_PROVIDER_FROM_CONFIG_2, + ).size + ).isEqualTo(2) + } + + @Test + fun `present - initial state`() = runTest { + val presenter = createPresenter( + enterpriseService = FakeEnterpriseService( + defaultHomeserverListResult = { listOf(ACCOUNT_PROVIDER_FROM_CONFIG_1, ACCOUNT_PROVIDER_FROM_CONFIG_2) }, + ), + ) + presenter.test { + val initialState = awaitItem() + assertThat(initialState.accountProviders).containsExactly( + accountProvider1, + accountProvider2, + ) + assertThat(initialState.selectedAccountProvider).isNull() + } + } + + @Test + fun `present - Continue when no account provider is selected has no effect`() = runTest { + val authenticationService = FakeMatrixAuthenticationService() + val presenter = createPresenter( + enterpriseService = FakeEnterpriseService( + defaultHomeserverListResult = { listOf(ACCOUNT_PROVIDER_FROM_CONFIG_1, ACCOUNT_PROVIDER_FROM_CONFIG_2) }, + ), + loginHelper = createLoginHelper( + authenticationService = authenticationService, + ), + ) + presenter.test { + awaitItem().also { + assertThat(it.selectedAccountProvider).isNull() + it.eventSink(ChooseAccountProviderEvents.Continue) + expectNoEvents() + } + } + } + + @Test + fun `present - select account provider and continue - error then clear error`() = runTest { + val authenticationService = FakeMatrixAuthenticationService() + val presenter = createPresenter( + enterpriseService = FakeEnterpriseService( + defaultHomeserverListResult = { listOf(ACCOUNT_PROVIDER_FROM_CONFIG_1, ACCOUNT_PROVIDER_FROM_CONFIG_2) }, + ), + loginHelper = createLoginHelper( + authenticationService = authenticationService, + ), + ) + presenter.test { + awaitItem().also { + assertThat(it.selectedAccountProvider).isNull() + it.eventSink(ChooseAccountProviderEvents.SelectAccountProvider(accountProvider1)) + } + awaitItem().also { + assertThat(it.selectedAccountProvider).isEqualTo(accountProvider1) + authenticationService.givenChangeServerError(A_THROWABLE) + it.eventSink(ChooseAccountProviderEvents.Continue) + skipItems(1) // Loading + + // Check an error was returned + val submittedState = awaitItem() + assertThat(submittedState.loginMode).isInstanceOf(AsyncData.Failure::class.java) + + // Assert the error is then cleared + submittedState.eventSink(ChooseAccountProviderEvents.ClearError) + val clearedState = awaitItem() + assertThat(clearedState.loginMode).isEqualTo(AsyncData.Uninitialized) + } + } + } + + @Test + fun `present - default account provider - select account provider during login has no effect`() = runTest { + val authenticationService = FakeMatrixAuthenticationService() + val presenter = createPresenter( + enterpriseService = FakeEnterpriseService( + defaultHomeserverListResult = { listOf(ACCOUNT_PROVIDER_FROM_CONFIG_1, ACCOUNT_PROVIDER_FROM_CONFIG_2) }, + ), + loginHelper = createLoginHelper( + authenticationService = authenticationService, + ), + ) + presenter.test { + awaitItem().also { + assertThat(it.selectedAccountProvider).isNull() + it.eventSink(ChooseAccountProviderEvents.SelectAccountProvider(accountProvider1)) + } + awaitItem().also { + assertThat(it.selectedAccountProvider).isEqualTo(accountProvider1) + it.eventSink(ChooseAccountProviderEvents.Continue) + } + awaitItem().also { + assertThat(it.loginMode.isLoading()).isTrue() + it.eventSink(ChooseAccountProviderEvents.SelectAccountProvider(accountProvider2)) + } + expectNoEvents() + } + } +} + +private fun createPresenter( + enterpriseService: EnterpriseService = FakeEnterpriseService(), + loginHelper: LoginHelper = createLoginHelper(), +) = ChooseAccountProviderPresenter( + enterpriseService = enterpriseService, + loginHelper = loginHelper, +) diff --git a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderViewTest.kt b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderViewTest.kt new file mode 100644 index 0000000000..a044874eed --- /dev/null +++ b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderViewTest.kt @@ -0,0 +1,102 @@ +/* + * Copyright 2025 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +package io.element.android.features.login.impl.screens.chooseaccountprovider + +import androidx.activity.ComponentActivity +import androidx.compose.ui.test.junit4.AndroidComposeTestRule +import androidx.compose.ui.test.junit4.createAndroidComposeRule +import androidx.compose.ui.test.onNodeWithText +import androidx.compose.ui.test.performClick +import androidx.test.ext.junit.runners.AndroidJUnit4 +import io.element.android.features.login.impl.accountprovider.anAccountProvider +import io.element.android.libraries.architecture.AsyncData +import io.element.android.libraries.matrix.api.auth.OidcDetails +import io.element.android.libraries.matrix.test.AN_EXCEPTION +import io.element.android.libraries.ui.strings.CommonStrings +import io.element.android.tests.testutils.EnsureNeverCalled +import io.element.android.tests.testutils.EnsureNeverCalledWithParam +import io.element.android.tests.testutils.EventsRecorder +import io.element.android.tests.testutils.clickOn +import io.element.android.tests.testutils.ensureCalledOnce +import io.element.android.tests.testutils.pressBack +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 ChooseAccountProviderViewTest { + @get:Rule + val rule = createAndroidComposeRule() + + @Test + fun `clicking on back invokes the expected callback`() { + val eventSink = EventsRecorder(expectEvents = false) + ensureCalledOnce { + rule.setChooseAccountProviderView( + state = aChooseAccountProviderState( + eventSink = eventSink, + ), + onBackClick = it, + ) + rule.pressBack() + } + } + + @Config(qualifiers = "h1024dp") + @Test + fun `selecting an account provider emits the the expected event`() { + val eventSink = EventsRecorder() + rule.setChooseAccountProviderView( + state = aChooseAccountProviderState( + accountProviders = listOf( + ChooseAccountProviderPresenterTest.accountProvider1, + ChooseAccountProviderPresenterTest.accountProvider2, + ), + selectedAccountProvider = anAccountProvider(), + eventSink = eventSink, + ), + ) + rule.onNodeWithText(ChooseAccountProviderPresenterTest.accountProvider1.title).performClick() + eventSink.assertSingle(ChooseAccountProviderEvents.SelectAccountProvider(ChooseAccountProviderPresenterTest.accountProvider1)) + } + + @Test + fun `when error is displayed - closing the dialog emits the expected event`() { + val eventSink = EventsRecorder() + rule.setChooseAccountProviderView( + state = aChooseAccountProviderState( + loginMode = AsyncData.Failure(AN_EXCEPTION), + eventSink = eventSink, + ), + ) + rule.clickOn(CommonStrings.action_ok) + eventSink.assertSingle(ChooseAccountProviderEvents.ClearError) + } + + private fun AndroidComposeTestRule.setChooseAccountProviderView( + state: ChooseAccountProviderState, + onBackClick: () -> Unit = EnsureNeverCalled(), + onOidcDetails: (OidcDetails) -> Unit = EnsureNeverCalledWithParam(), + onNeedLoginPassword: () -> Unit = EnsureNeverCalled(), + onLearnMoreClick: () -> Unit = EnsureNeverCalled(), + onCreateAccountContinue: (url: String) -> Unit = EnsureNeverCalledWithParam(), + ) { + setContent { + ChooseAccountProviderView( + state = state, + onBackClick = onBackClick, + onOidcDetails = onOidcDetails, + onNeedLoginPassword = onNeedLoginPassword, + onLearnMoreClick = onLearnMoreClick, + onCreateAccountContinue = onCreateAccountContinue, + ) + } + } +} diff --git a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingPresenterTest.kt b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingPresenterTest.kt index 06034fef19..45be02b128 100644 --- a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingPresenterTest.kt +++ b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingPresenterTest.kt @@ -9,6 +9,8 @@ package io.element.android.features.login.impl.screens.onboarding import com.google.common.truth.Truth.assertThat import io.element.android.appconfig.OnBoardingConfig +import io.element.android.features.enterprise.api.EnterpriseService +import io.element.android.features.enterprise.test.FakeEnterpriseService import io.element.android.features.login.impl.DefaultLoginUserStory import io.element.android.features.login.impl.login.LoginHelper import io.element.android.features.login.impl.web.FakeWebClientUrlForAuthenticationRetriever @@ -19,6 +21,9 @@ import io.element.android.libraries.featureflag.api.FeatureFlagService import io.element.android.libraries.featureflag.api.FeatureFlags import io.element.android.libraries.featureflag.test.FakeFeatureFlagService import io.element.android.libraries.matrix.api.auth.MatrixAuthenticationService +import io.element.android.libraries.matrix.test.AN_ACCOUNT_PROVIDER +import io.element.android.libraries.matrix.test.AN_ACCOUNT_PROVIDER_2 +import io.element.android.libraries.matrix.test.AN_ACCOUNT_PROVIDER_3 import io.element.android.libraries.matrix.test.A_HOMESERVER_URL import io.element.android.libraries.matrix.test.A_LOGIN_HINT import io.element.android.libraries.matrix.test.A_THROWABLE @@ -36,6 +41,23 @@ class OnBoardingPresenterTest { @get:Rule val warmUpRule = WarmUpRule() + companion object { + private const val ACCOUNT_PROVIDER_FROM_LINK = AN_ACCOUNT_PROVIDER + private const val ACCOUNT_PROVIDER_FROM_CONFIG = AN_ACCOUNT_PROVIDER_2 + private const val ACCOUNT_PROVIDER_FROM_CONFIG_2 = AN_ACCOUNT_PROVIDER_3 + } + + @Test + fun `present - ensure initial conditions`() { + assertThat( + setOf( + ACCOUNT_PROVIDER_FROM_LINK, + ACCOUNT_PROVIDER_FROM_CONFIG, + ACCOUNT_PROVIDER_FROM_CONFIG_2, + ).size + ).isEqualTo(3) + } + @Test fun `present - initial state`() = runTest { val buildMeta = aBuildMeta( @@ -50,10 +72,14 @@ class OnBoardingPresenterTest { val presenter = createPresenter( buildMeta = buildMeta, featureFlagService = featureFlagService, + enterpriseService = FakeEnterpriseService( + defaultHomeserverListResult = { listOf(ACCOUNT_PROVIDER_FROM_CONFIG, EnterpriseService.ANY_ACCOUNT_PROVIDER) }, + ), rageshakeFeatureAvailability = { true }, ) presenter.test { val initialState = awaitItem() + assertThat(initialState.defaultAccountProvider).isNull() assertThat(initialState.canLoginWithQrCode).isFalse() assertThat(initialState.productionApplicationName).isEqualTo("B") assertThat(initialState.canCreateAccount).isEqualTo(OnBoardingConfig.CAN_CREATE_ACCOUNT) @@ -74,22 +100,79 @@ class OnBoardingPresenterTest { } @Test - fun `present - default account provider`() = runTest { + fun `present - opening the app using link with allowed account provider, and the app does not force account provider`() = runTest { val presenter = createPresenter( params = OnBoardingNode.Params( - accountProvider = A_HOMESERVER_URL, + accountProvider = ACCOUNT_PROVIDER_FROM_LINK, loginHint = null, ), + featureFlagService = FakeFeatureFlagService( + initialState = mapOf(FeatureFlags.QrCodeLogin.key to true), + ), + enterpriseService = FakeEnterpriseService( + defaultHomeserverListResult = { listOf(ACCOUNT_PROVIDER_FROM_CONFIG, EnterpriseService.ANY_ACCOUNT_PROVIDER) }, + isAllowedToConnectToHomeserverResult = { true }, + ), ) presenter.test { + skipItems(3) awaitItem().also { - assertThat(it.defaultAccountProvider).isEqualTo(A_HOMESERVER_URL) + assertThat(it.defaultAccountProvider).isEqualTo(ACCOUNT_PROVIDER_FROM_LINK) assertThat(it.canLoginWithQrCode).isFalse() assertThat(it.canCreateAccount).isFalse() } } } + @Test + fun `present - opening the app using link with not allowed account provider, and the app does not force account provider`() = runTest { + val presenter = createPresenter( + params = OnBoardingNode.Params( + accountProvider = ACCOUNT_PROVIDER_FROM_LINK, + loginHint = null, + ), + featureFlagService = FakeFeatureFlagService( + initialState = mapOf(FeatureFlags.QrCodeLogin.key to true), + ), + enterpriseService = FakeEnterpriseService( + defaultHomeserverListResult = { listOf(ACCOUNT_PROVIDER_FROM_CONFIG, ACCOUNT_PROVIDER_FROM_CONFIG_2) }, + isAllowedToConnectToHomeserverResult = { false }, + ), + ) + presenter.test { + skipItems(1) + awaitItem().also { + assertThat(it.defaultAccountProvider).isNull() + assertThat(it.canLoginWithQrCode).isTrue() + assertThat(it.canCreateAccount).isFalse() + } + } + } + + @Test + fun `present - opening the app using link, and the app forces account provider`() = runTest { + val presenter = createPresenter( + params = OnBoardingNode.Params( + accountProvider = ACCOUNT_PROVIDER_FROM_LINK, + loginHint = null, + ), + featureFlagService = FakeFeatureFlagService( + initialState = mapOf(FeatureFlags.QrCodeLogin.key to true), + ), + enterpriseService = FakeEnterpriseService( + defaultHomeserverListResult = { listOf(ACCOUNT_PROVIDER_FROM_CONFIG) }, + ) + ) + presenter.test { + skipItems(1) + awaitItem().also { + assertThat(it.defaultAccountProvider).isEqualTo(ACCOUNT_PROVIDER_FROM_CONFIG) + assertThat(it.canLoginWithQrCode).isTrue() + assertThat(it.canCreateAccount).isFalse() + } + } + } + @Test fun `present - default account provider - login and clear error`() = runTest { val authenticationService = FakeMatrixAuthenticationService() @@ -98,11 +181,15 @@ class OnBoardingPresenterTest { accountProvider = A_HOMESERVER_URL, loginHint = A_LOGIN_HINT, ), + enterpriseService = FakeEnterpriseService( + isAllowedToConnectToHomeserverResult = { true }, + ), loginHelper = createLoginHelper( authenticationService = authenticationService, ), ) presenter.test { + skipItems(3) awaitItem().also { assertThat(it.defaultAccountProvider).isEqualTo(A_HOMESERVER_URL) authenticationService.givenChangeServerError(A_THROWABLE) @@ -126,12 +213,14 @@ private fun createPresenter( params: OnBoardingNode.Params = OnBoardingNode.Params(null, null), buildMeta: BuildMeta = aBuildMeta(), featureFlagService: FeatureFlagService = FakeFeatureFlagService(), + enterpriseService: EnterpriseService = FakeEnterpriseService(), rageshakeFeatureAvailability: () -> Boolean = { true }, loginHelper: LoginHelper = createLoginHelper(), ) = OnBoardingPresenter( params = params, buildMeta = buildMeta, featureFlagService = featureFlagService, + enterpriseService = enterpriseService, rageshakeFeatureAvailability = rageshakeFeatureAvailability, loginHelper = loginHelper, ) diff --git a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/onboarding/OnboardingViewTest.kt b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/onboarding/OnboardingViewTest.kt index 141b5c29ae..52af14cfe4 100644 --- a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/onboarding/OnboardingViewTest.kt +++ b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/onboarding/OnboardingViewTest.kt @@ -23,6 +23,7 @@ import io.element.android.tests.testutils.EnsureNeverCalledWithParam import io.element.android.tests.testutils.EventsRecorder import io.element.android.tests.testutils.clickOn import io.element.android.tests.testutils.ensureCalledOnce +import io.element.android.tests.testutils.ensureCalledOnceWithParam import org.junit.Rule import org.junit.Test import org.junit.rules.TestRule @@ -56,10 +57,28 @@ class OnboardingViewTest { } @Test - fun `when can login with QR code - clicking on sign in manually calls the expected callback`() { - ensureCalledOnce { callback -> + fun `when can login with QR code - clicking on sign in manually calls the expected callback - can search account provider`() { + `when can login with QR code - clicking on sign in manually calls the expected callback`( + mustChooseAccountProvider = false, + ) + } + + @Test + fun `when can login with QR code - clicking on sign in manually calls the expected callback - cannot search account provider`() { + `when can login with QR code - clicking on sign in manually calls the expected callback`( + mustChooseAccountProvider = true, + ) + } + + private fun `when can login with QR code - clicking on sign in manually calls the expected callback`( + mustChooseAccountProvider: Boolean, + ) { + ensureCalledOnceWithParam(mustChooseAccountProvider) { callback -> rule.setOnboardingView( - state = anOnBoardingState(canLoginWithQrCode = true), + state = anOnBoardingState( + canLoginWithQrCode = true, + mustChooseAccountProvider = mustChooseAccountProvider, + ), onSignIn = callback, ) rule.clickOn(R.string.screen_onboarding_sign_in_manually) @@ -67,12 +86,28 @@ class OnboardingViewTest { } @Test - fun `when cannot login with QR code or create account - clicking on continue calls the sign in callback`() { - ensureCalledOnce { callback -> + fun `when cannot login with QR code or create account - clicking on continue calls the sign in callback - can search account provider`() { + `when cannot login with QR code or create account - clicking on continue calls the sign in callback`( + mustChooseAccountProvider = false, + ) + } + + @Test + fun `when cannot login with QR code or create account - clicking on continue calls the sign in callback - cannot search account provider`() { + `when cannot login with QR code or create account - clicking on continue calls the sign in callback`( + mustChooseAccountProvider = true, + ) + } + + private fun `when cannot login with QR code or create account - clicking on continue calls the sign in callback`( + mustChooseAccountProvider: Boolean, + ) { + ensureCalledOnceWithParam(mustChooseAccountProvider) { callback -> rule.setOnboardingView( state = anOnBoardingState( canLoginWithQrCode = false, canCreateAccount = false, + mustChooseAccountProvider = mustChooseAccountProvider, ), onSignIn = callback, ) @@ -137,7 +172,7 @@ class OnboardingViewTest { private fun AndroidComposeTestRule.setOnboardingView( state: OnBoardingState, onSignInWithQrCode: () -> Unit = EnsureNeverCalled(), - onSignIn: () -> Unit = EnsureNeverCalled(), + onSignIn: (Boolean) -> Unit = EnsureNeverCalledWithParam(), onCreateAccount: () -> Unit = EnsureNeverCalled(), onReportProblem: () -> Unit = EnsureNeverCalled(), onOidcDetails: (OidcDetails) -> Unit = EnsureNeverCalledWithParam(), diff --git a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/TestData.kt b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/TestData.kt index 11a0257685..3a354df6b9 100644 --- a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/TestData.kt +++ b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/TestData.kt @@ -69,6 +69,10 @@ const val A_REDACTION_REASON = "A redaction reason" const val A_HOMESERVER_URL = "matrix.org" const val A_HOMESERVER_URL_2 = "matrix-client.org" +const val AN_ACCOUNT_PROVIDER = "matrix.org" +const val AN_ACCOUNT_PROVIDER_2 = "element.io" +const val AN_ACCOUNT_PROVIDER_3 = "other.io" + val A_HOMESERVER = MatrixHomeServerDetails(A_HOMESERVER_URL, supportsPasswordLogin = true, supportsOidcLogin = false) val A_HOMESERVER_OIDC = MatrixHomeServerDetails(A_HOMESERVER_URL, supportsPasswordLogin = false, supportsOidcLogin = true) val A_ROOM_NOTIFICATION_MODE = RoomNotificationMode.MUTE diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.accountprovider_AccountProviderOtherView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.accountprovider_AccountProviderOtherView_Day_0_en.png new file mode 100644 index 0000000000..31b7ce8217 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.accountprovider_AccountProviderOtherView_Day_0_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4b4adf1bb086cb46f6a9cc20dffe23cba656a571a4f6651a82063907e82a117e +size 5843 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.accountprovider_AccountProviderOtherView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.accountprovider_AccountProviderOtherView_Night_0_en.png new file mode 100644 index 0000000000..e96cb9b338 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.accountprovider_AccountProviderOtherView_Night_0_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6d7ed9363bd7b6f09be20f58019260dceb36c8cbebf1c74474b94e227bebb37d +size 5926 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.accountprovider_AccountProviderView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.accountprovider_AccountProviderView_Day_3_en.png index cccd463c66..e7c3642e9f 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.accountprovider_AccountProviderView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.accountprovider_AccountProviderView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6d742af6422e7f5ce0070831e921180006a5b48d52c042fdc52030435597f242 -size 5835 +oid sha256:ef744b07b6e40d1017713b3e44c2e6d358495ea9e1ff88c183c963994e216738 +size 5554 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.accountprovider_AccountProviderView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.accountprovider_AccountProviderView_Night_3_en.png index 6e685f122d..ab8bcda276 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.accountprovider_AccountProviderView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.accountprovider_AccountProviderView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b4731443df36855c8785072a8085fc9968ec231ff46ff24012b0ae72cd084e46 -size 5867 +oid sha256:04a8e2e856805b0888f901278537a217e233445b9f09060e1f4b764db87146c8 +size 5589 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Day_0_en.png index c76898c457..28032f8d60 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c5d38292c3927910a4ac9df5d2ad63dddf41818611096db2ba4a2101b880c8c0 -size 47316 +oid sha256:4406e5c57eea02b3ac315b303e0995e6ad0ae1b25f751cb8a154220e08a2bf23 +size 47284 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Day_1_en.png new file mode 100644 index 0000000000..fcaae762cc --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Day_1_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bc85189c4ebe4539c02294c5fa98d41816321848de5d68718de2dffef010719e +size 45074 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Night_0_en.png index 81774f463f..5f4d6441ca 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4a954fc1d3091b50581dcb4cdd9ca89acb0c9c92e35fc9ffd6bfe240685d37b0 -size 46333 +oid sha256:35820145f9f9fe836035774390808d5778cdca064730a3b4ebe62f66a26fafae +size 46350 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Night_1_en.png new file mode 100644 index 0000000000..1bcba3b056 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Night_1_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9a3e19f270562bbd81c9508e90319b819c08ecc766f5d08adc657aa2781ad679 +size 44112 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_0_en.png new file mode 100644 index 0000000000..3ca626466a --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_0_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4051b09fbcb571273ff3edf21d482fa75684b73846a4992aa495274dbc8fcb97 +size 22602 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_1_en.png new file mode 100644 index 0000000000..d8831b99f6 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_1_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d2f1145b53dd1b031d3fb213217fd5128b5dae6f5882f0af5f339973f61d8748 +size 23556 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_2_en.png new file mode 100644 index 0000000000..605f09a379 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_2_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b8dc7e4a04653998514fb3ca02bd220fdb0979c5ce8251031cf90e51f6a7265c +size 24082 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Night_0_en.png new file mode 100644 index 0000000000..37a1c8060a --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Night_0_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cf820f7343125063ff3e92f3d4902e427a424d148760168884cd143628925010 +size 22111 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Night_1_en.png new file mode 100644 index 0000000000..0b3b32b30f --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Night_1_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9bd58639caaa55c921244a15b0f4c1d3997b4c591cab4ad46ddcfc07d7a4fdc1 +size 23010 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Night_2_en.png new file mode 100644 index 0000000000..7c80a5e9f4 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Night_2_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c9dfd90cd62e5511075857c5642660228b553208bda00cf07d51db087b8b37a9 +size 23508 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Day_1_en.png index 469acb982f..f5f864b6aa 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c5ac88572a7fbcacbf571b86586a887ec4931c9e92c15f2ac3633e0adc4088e4 -size 51364 +oid sha256:cb99a065e901322c590b5331880e8035b6ab6101d4e2f4603ceb3abce2344147 +size 50804 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Night_1_en.png index 751f19d89c..485a3a2552 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:02f1214c9ced09fcb178d04ec0e8683ecb1f31c169056db9a3849e6680d060fe -size 50318 +oid sha256:ecc79b3e57881971e5bfc7d8e2937b4e9ccb18536851be3fc79154b544aa6895 +size 49800 From b39100ef6f4b7cdf008886c065d45238856e5fa7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=9C=E5=9D=82=E9=9B=85?= <23130178+ShadowRZ@users.noreply.github.com> Date: Mon, 26 May 2025 15:33:04 +0800 Subject: [PATCH 03/25] fix: Ignore global proxy settings if system thinks there's none (#4744) Otherwise a :0 proxy would break in Rust SDK. --- .../libraries/matrix/impl/proxy/DefaultProxyProvider.kt | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/proxy/DefaultProxyProvider.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/proxy/DefaultProxyProvider.kt index 57f7cd8e6b..08809be5f7 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/proxy/DefaultProxyProvider.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/proxy/DefaultProxyProvider.kt @@ -8,7 +8,9 @@ package io.element.android.libraries.matrix.impl.proxy import android.content.Context +import android.net.ConnectivityManager import android.provider.Settings +import androidx.core.content.getSystemService import com.squareup.anvil.annotations.ContributesBinding import io.element.android.libraries.di.AppScope import io.element.android.libraries.di.ApplicationContext @@ -32,6 +34,13 @@ class DefaultProxyProvider @Inject constructor( private val context: Context ) : ProxyProvider { override fun provides(): String? { + val defaultProxy = context.getSystemService()?.defaultProxy + if (defaultProxy == null) { + // Note: can be tested by running: + // adb shell settings put global http_proxy :0 + Timber.d("No default proxy") + return null + } return Settings.Global.getString(context.contentResolver, Settings.Global.HTTP_PROXY) ?.also { Timber.d("Using global proxy") From c67089edf7ac14625eba1a32b56379d17c993f1d Mon Sep 17 00:00:00 2001 From: Jorge Martin Espinosa Date: Mon, 26 May 2025 13:03:55 +0200 Subject: [PATCH 04/25] Add `ActiveRoomsHolder` to manage the active rooms for a session (#4758) --- .../room/joined/JoinedRoomLoadedFlowNode.kt | 4 ++ ...est.kt => JoinedRoomLoadedFlowNodeTest.kt} | 57 +++++++++++++++- .../call/impl/ui/CallScreenPresenter.kt | 8 ++- .../impl/utils/DefaultCallWidgetProvider.kt | 6 +- .../call/ui/CallScreenPresenterTest.kt | 3 + .../utils/DefaultCallWidgetProviderTest.kt | 21 ++++++ features/preferences/impl/build.gradle.kts | 1 + .../impl/tasks/ClearCacheUseCase.kt | 4 ++ .../tasks/DefaultClearCacheUseCaseTest.kt | 7 ++ features/share/impl/build.gradle.kts | 1 + .../features/share/impl/SharePresenter.kt | 19 +++++- .../features/share/impl/SharePresenterTest.kt | 7 +- .../matrix/impl/room/JoinedRustRoom.kt | 1 - .../matrix/impl/widget/RustWidgetDriver.kt | 3 - .../NotificationBroadcastReceiverHandler.kt | 8 ++- .../push/impl/push/SyncOnNotifiableEvent.kt | 44 ++++++++---- ...otificationBroadcastReceiverHandlerTest.kt | 3 + .../impl/push/SyncOnNotifiableEventTest.kt | 5 +- .../appnavstate/api/ActiveRoomsHolder.kt | 68 +++++++++++++++++++ 19 files changed, 240 insertions(+), 30 deletions(-) rename appnav/src/test/kotlin/io/element/android/appnav/{JoinBaseRoomLoadedFlowNodeTest.kt => JoinedRoomLoadedFlowNodeTest.kt} (70%) create mode 100644 services/appnavstate/api/src/main/kotlin/io/element/android/services/appnavstate/api/ActiveRoomsHolder.kt diff --git a/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt index 094009f3d3..c6b42e1d11 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt @@ -36,6 +36,7 @@ import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.UserId import io.element.android.libraries.matrix.api.permalink.PermalinkData import io.element.android.libraries.matrix.api.room.JoinedRoom +import io.element.android.services.appnavstate.api.ActiveRoomsHolder import io.element.android.services.appnavstate.api.AppNavigationStateService import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.launch @@ -51,6 +52,7 @@ class JoinedRoomLoadedFlowNode @AssistedInject constructor( private val appNavigationStateService: AppNavigationStateService, private val appCoroutineScope: CoroutineScope, private val matrixClient: MatrixClient, + private val activeRoomsHolder: ActiveRoomsHolder, roomComponentFactory: RoomComponentFactory, ) : BaseFlowNode( backstack = BackStack( @@ -85,6 +87,7 @@ class JoinedRoomLoadedFlowNode @AssistedInject constructor( onCreate = { Timber.v("OnCreate => ${inputs.room.roomId}") appNavigationStateService.onNavigateToRoom(id, inputs.room.roomId) + activeRoomsHolder.addRoom(inputs.room) fetchRoomMembers() trackVisitedRoom() }, @@ -95,6 +98,7 @@ class JoinedRoomLoadedFlowNode @AssistedInject constructor( }, onDestroy = { Timber.v("OnDestroy") + activeRoomsHolder.removeRoom(inputs.room.sessionId, inputs.room.roomId) inputs.room.destroy() appNavigationStateService.onLeavingRoom(id) } diff --git a/appnav/src/test/kotlin/io/element/android/appnav/JoinBaseRoomLoadedFlowNodeTest.kt b/appnav/src/test/kotlin/io/element/android/appnav/JoinedRoomLoadedFlowNodeTest.kt similarity index 70% rename from appnav/src/test/kotlin/io/element/android/appnav/JoinBaseRoomLoadedFlowNodeTest.kt rename to appnav/src/test/kotlin/io/element/android/appnav/JoinedRoomLoadedFlowNodeTest.kt index bb15ed6bb9..f8d4be1807 100644 --- a/appnav/src/test/kotlin/io/element/android/appnav/JoinBaseRoomLoadedFlowNodeTest.kt +++ b/appnav/src/test/kotlin/io/element/android/appnav/JoinedRoomLoadedFlowNodeTest.kt @@ -24,16 +24,18 @@ import io.element.android.features.messages.api.MessagesEntryPoint import io.element.android.features.roomdetails.api.RoomDetailsEntryPoint import io.element.android.libraries.architecture.childNode import io.element.android.libraries.matrix.api.room.JoinedRoom +import io.element.android.libraries.matrix.test.A_SESSION_ID import io.element.android.libraries.matrix.test.FakeMatrixClient import io.element.android.libraries.matrix.test.room.FakeBaseRoom import io.element.android.libraries.matrix.test.room.FakeJoinedRoom +import io.element.android.services.appnavstate.api.ActiveRoomsHolder import io.element.android.services.appnavstate.test.FakeAppNavigationStateService import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.test.runTest import org.junit.Rule import org.junit.Test -class JoinBaseRoomLoadedFlowNodeTest { +class JoinedRoomLoadedFlowNodeTest { @get:Rule val instantTaskExecutorRule = InstantTaskExecutorRule() @@ -100,6 +102,7 @@ class JoinBaseRoomLoadedFlowNodeTest { plugins: List, messagesEntryPoint: MessagesEntryPoint = FakeMessagesEntryPoint(), roomDetailsEntryPoint: RoomDetailsEntryPoint = FakeRoomDetailsEntryPoint(), + activeRoomsHolder: ActiveRoomsHolder = ActiveRoomsHolder(), coroutineScope: CoroutineScope, ) = JoinedRoomLoadedFlowNode( buildContext = BuildContext.root(savedStateMap = null), @@ -110,6 +113,7 @@ class JoinBaseRoomLoadedFlowNodeTest { appCoroutineScope = coroutineScope, roomComponentFactory = FakeRoomComponentFactory(), matrixClient = FakeMatrixClient(), + activeRoomsHolder = activeRoomsHolder, ) @Test @@ -154,4 +158,55 @@ class JoinBaseRoomLoadedFlowNodeTest { val roomDetailsNode = roomFlowNode.childNode(JoinedRoomLoadedFlowNode.NavTarget.RoomDetails)!! assertThat(roomDetailsNode.id).isEqualTo(fakeRoomDetailsEntryPoint.nodeId) } + + @Test + fun `the ActiveRoomsHolder will be updated with the loaded room on create`() = runTest { + // GIVEN + val room = FakeJoinedRoom(baseRoom = FakeBaseRoom(updateMembersResult = {})) + val fakeMessagesEntryPoint = FakeMessagesEntryPoint() + val fakeRoomDetailsEntryPoint = FakeRoomDetailsEntryPoint() + val inputs = JoinedRoomLoadedFlowNode.Inputs(room, RoomNavigationTarget.Messages()) + val activeRoomsHolder = ActiveRoomsHolder() + val roomFlowNode = createJoinedRoomLoadedFlowNode( + plugins = listOf(inputs), + messagesEntryPoint = fakeMessagesEntryPoint, + roomDetailsEntryPoint = fakeRoomDetailsEntryPoint, + coroutineScope = this, + activeRoomsHolder = activeRoomsHolder, + ) + + assertThat(activeRoomsHolder.getActiveRoom(A_SESSION_ID)).isNull() + val roomFlowNodeTestHelper = roomFlowNode.parentNodeTestHelper() + // WHEN + roomFlowNodeTestHelper.assertChildHasLifecycle(JoinedRoomLoadedFlowNode.NavTarget.Messages(null), Lifecycle.State.CREATED) + // THEN + assertThat(activeRoomsHolder.getActiveRoom(A_SESSION_ID)).isNotNull() + } + + @Test + fun `the ActiveRoomsHolder will be removed on destroy`() = runTest { + // GIVEN + val room = FakeJoinedRoom(baseRoom = FakeBaseRoom(updateMembersResult = {})) + val fakeMessagesEntryPoint = FakeMessagesEntryPoint() + val fakeRoomDetailsEntryPoint = FakeRoomDetailsEntryPoint() + val inputs = JoinedRoomLoadedFlowNode.Inputs(room, RoomNavigationTarget.Messages()) + val activeRoomsHolder = ActiveRoomsHolder().apply { + addRoom(room) + } + val roomFlowNode = createJoinedRoomLoadedFlowNode( + plugins = listOf(inputs), + messagesEntryPoint = fakeMessagesEntryPoint, + roomDetailsEntryPoint = fakeRoomDetailsEntryPoint, + coroutineScope = this, + activeRoomsHolder = activeRoomsHolder, + ) + val roomFlowNodeTestHelper = roomFlowNode.parentNodeTestHelper() + roomFlowNodeTestHelper.assertChildHasLifecycle(JoinedRoomLoadedFlowNode.NavTarget.Messages(null), Lifecycle.State.CREATED) + assertThat(activeRoomsHolder.getActiveRoom(A_SESSION_ID)).isNotNull() + // WHEN + roomFlowNode.updateLifecycleState(Lifecycle.State.DESTROYED) + // THEN + roomFlowNodeTestHelper.assertChildHasLifecycle(JoinedRoomLoadedFlowNode.NavTarget.Messages(null), Lifecycle.State.DESTROYED) + assertThat(activeRoomsHolder.getActiveRoom(A_SESSION_ID)).isNull() + } } diff --git a/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/ui/CallScreenPresenter.kt b/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/ui/CallScreenPresenter.kt index 7156a3e603..8550f06f3d 100644 --- a/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/ui/CallScreenPresenter.kt +++ b/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/ui/CallScreenPresenter.kt @@ -39,6 +39,7 @@ import io.element.android.libraries.matrix.api.sync.SyncState import io.element.android.libraries.matrix.api.widget.MatrixWidgetDriver import io.element.android.libraries.network.useragent.UserAgentProvider import io.element.android.services.analytics.api.ScreenTracker +import io.element.android.services.appnavstate.api.ActiveRoomsHolder import io.element.android.services.appnavstate.api.AppForegroundStateService import io.element.android.services.toolbox.api.systemclock.SystemClock import kotlinx.coroutines.CoroutineScope @@ -62,6 +63,7 @@ class CallScreenPresenter @AssistedInject constructor( private val activeCallManager: ActiveCallManager, private val languageTagProvider: LanguageTagProvider, private val appForegroundStateService: AppForegroundStateService, + private val activeRoomsHolder: ActiveRoomsHolder, private val appCoroutineScope: CoroutineScope, ) : Presenter { @AssistedFactory @@ -241,8 +243,10 @@ class CallScreenPresenter @AssistedInject constructor( private suspend fun MatrixClient.notifyCallStartIfNeeded(roomId: RoomId) { if (!notifiedCallStart) { - getJoinedRoom(roomId)?.use { it.sendCallNotificationIfNeeded() } - ?.onSuccess { notifiedCallStart = true } + val activeRoomForSession = activeRoomsHolder.getActiveRoomMatching(sessionId, roomId) + val sendCallNotificationResult = activeRoomForSession?.sendCallNotificationIfNeeded() + ?: getJoinedRoom(roomId)?.use { it.sendCallNotificationIfNeeded() } + sendCallNotificationResult?.onSuccess { notifiedCallStart = true } } } diff --git a/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/utils/DefaultCallWidgetProvider.kt b/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/utils/DefaultCallWidgetProvider.kt index 6f6bd9473c..dd4de7abb5 100644 --- a/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/utils/DefaultCallWidgetProvider.kt +++ b/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/utils/DefaultCallWidgetProvider.kt @@ -14,6 +14,7 @@ import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.libraries.matrix.api.widget.CallWidgetSettingsProvider import io.element.android.libraries.preferences.api.store.AppPreferencesStore +import io.element.android.services.appnavstate.api.ActiveRoomsHolder import kotlinx.coroutines.flow.firstOrNull import javax.inject.Inject @@ -24,6 +25,7 @@ class DefaultCallWidgetProvider @Inject constructor( private val matrixClientsProvider: MatrixClientProvider, private val appPreferencesStore: AppPreferencesStore, private val callWidgetSettingsProvider: CallWidgetSettingsProvider, + private val activeRoomsHolder: ActiveRoomsHolder, ) : CallWidgetProvider { override suspend fun getWidget( sessionId: SessionId, @@ -33,7 +35,9 @@ class DefaultCallWidgetProvider @Inject constructor( theme: String?, ): Result = runCatching { val matrixClient = matrixClientsProvider.getOrRestore(sessionId).getOrThrow() - val room = matrixClient.getJoinedRoom(roomId) ?: error("Room not found") + val room = activeRoomsHolder.getActiveRoomMatching(sessionId, roomId) + ?: matrixClient.getJoinedRoom(roomId) + ?: error("Room not found") val customBaseUrl = appPreferencesStore.getCustomElementCallBaseUrlFlow().firstOrNull() val baseUrl = customBaseUrl ?: EMBEDDED_CALL_WIDGET_BASE_URL diff --git a/features/call/impl/src/test/kotlin/io/element/android/features/call/ui/CallScreenPresenterTest.kt b/features/call/impl/src/test/kotlin/io/element/android/features/call/ui/CallScreenPresenterTest.kt index 43a1e7ceba..ef571e12b3 100644 --- a/features/call/impl/src/test/kotlin/io/element/android/features/call/ui/CallScreenPresenterTest.kt +++ b/features/call/impl/src/test/kotlin/io/element/android/features/call/ui/CallScreenPresenterTest.kt @@ -32,6 +32,7 @@ import io.element.android.libraries.matrix.test.widget.FakeMatrixWidgetDriver import io.element.android.libraries.network.useragent.UserAgentProvider import io.element.android.services.analytics.api.ScreenTracker import io.element.android.services.analytics.test.FakeScreenTracker +import io.element.android.services.appnavstate.api.ActiveRoomsHolder import io.element.android.services.appnavstate.test.FakeAppForegroundStateService import io.element.android.services.toolbox.api.systemclock.SystemClock import io.element.android.tests.testutils.WarmUpRule @@ -367,6 +368,7 @@ import kotlin.time.Duration.Companion.seconds activeCallManager: FakeActiveCallManager = FakeActiveCallManager(), screenTracker: ScreenTracker = FakeScreenTracker(), appForegroundStateService: FakeAppForegroundStateService = FakeAppForegroundStateService(), + activeRoomsHolder: ActiveRoomsHolder = ActiveRoomsHolder(), ): CallScreenPresenter { val userAgentProvider = object : UserAgentProvider { override fun provide(): String { @@ -387,6 +389,7 @@ import kotlin.time.Duration.Companion.seconds languageTagProvider = FakeLanguageTagProvider("en-US"), appForegroundStateService = appForegroundStateService, appCoroutineScope = backgroundScope, + activeRoomsHolder = activeRoomsHolder, ) } } diff --git a/features/call/impl/src/test/kotlin/io/element/android/features/call/utils/DefaultCallWidgetProviderTest.kt b/features/call/impl/src/test/kotlin/io/element/android/features/call/utils/DefaultCallWidgetProviderTest.kt index cd81533a47..f9267eca7b 100644 --- a/features/call/impl/src/test/kotlin/io/element/android/features/call/utils/DefaultCallWidgetProviderTest.kt +++ b/features/call/impl/src/test/kotlin/io/element/android/features/call/utils/DefaultCallWidgetProviderTest.kt @@ -15,11 +15,13 @@ import io.element.android.libraries.matrix.test.A_ROOM_ID import io.element.android.libraries.matrix.test.A_SESSION_ID import io.element.android.libraries.matrix.test.FakeMatrixClient import io.element.android.libraries.matrix.test.FakeMatrixClientProvider +import io.element.android.libraries.matrix.test.room.FakeBaseRoom import io.element.android.libraries.matrix.test.room.FakeJoinedRoom import io.element.android.libraries.matrix.test.widget.FakeCallWidgetSettingsProvider import io.element.android.libraries.matrix.test.widget.FakeMatrixWidgetDriver import io.element.android.libraries.preferences.api.store.AppPreferencesStore import io.element.android.libraries.preferences.test.InMemoryAppPreferencesStore +import io.element.android.services.appnavstate.api.ActiveRoomsHolder import kotlinx.coroutines.test.runTest import org.junit.Test @@ -77,6 +79,23 @@ class DefaultCallWidgetProviderTest { assertThat(provider.getWidget(A_SESSION_ID, A_ROOM_ID, "clientId", "languageTag", "theme").getOrNull()).isNotNull() } + @Test + fun `getWidget - reuses the active room if possible`() = runTest { + val client = FakeMatrixClient().apply { + // No room from the client + givenGetRoomResult(A_ROOM_ID, null) + } + val activeRoomsHolder = ActiveRoomsHolder().apply { + // A current active room with the same room id + addRoom(FakeJoinedRoom(baseRoom = FakeBaseRoom(roomId = A_ROOM_ID))) + } + val provider = createProvider( + matrixClientProvider = FakeMatrixClientProvider { Result.success(client) }, + activeRoomsHolder = activeRoomsHolder + ) + assertThat(provider.getWidget(A_SESSION_ID, A_ROOM_ID, "clientId", "languageTag", "theme").isFailure).isTrue() + } + @Test fun `getWidget - will use a custom base url if it exists`() = runTest { val room = FakeJoinedRoom( @@ -104,9 +123,11 @@ class DefaultCallWidgetProviderTest { matrixClientProvider: MatrixClientProvider = FakeMatrixClientProvider(), appPreferencesStore: AppPreferencesStore = InMemoryAppPreferencesStore(), callWidgetSettingsProvider: CallWidgetSettingsProvider = FakeCallWidgetSettingsProvider(), + activeRoomsHolder: ActiveRoomsHolder = ActiveRoomsHolder(), ) = DefaultCallWidgetProvider( matrixClientsProvider = matrixClientProvider, appPreferencesStore = appPreferencesStore, callWidgetSettingsProvider = callWidgetSettingsProvider, + activeRoomsHolder = activeRoomsHolder, ) } diff --git a/features/preferences/impl/build.gradle.kts b/features/preferences/impl/build.gradle.kts index 8d34d55559..397d0c7acb 100644 --- a/features/preferences/impl/build.gradle.kts +++ b/features/preferences/impl/build.gradle.kts @@ -78,6 +78,7 @@ dependencies { implementation(projects.features.roomlist.api) implementation(projects.services.analytics.api) implementation(projects.services.analytics.compose) + implementation(projects.services.appnavstate.api) implementation(projects.services.toolbox.api) implementation(libs.datetime) implementation(libs.coil.compose) diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/tasks/ClearCacheUseCase.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/tasks/ClearCacheUseCase.kt index 8a081c0e41..5662e4fd46 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/tasks/ClearCacheUseCase.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/tasks/ClearCacheUseCase.kt @@ -18,6 +18,7 @@ import io.element.android.libraries.di.ApplicationContext import io.element.android.libraries.di.SessionScope import io.element.android.libraries.matrix.api.MatrixClient import io.element.android.libraries.push.api.PushService +import io.element.android.services.appnavstate.api.ActiveRoomsHolder import kotlinx.coroutines.withContext import okhttp3.OkHttpClient import javax.inject.Inject @@ -37,8 +38,11 @@ class DefaultClearCacheUseCase @Inject constructor( private val ftueService: FtueService, private val pushService: PushService, private val seenInvitesStore: SeenInvitesStore, + private val activeRoomsHolder: ActiveRoomsHolder, ) : ClearCacheUseCase { override suspend fun invoke() = withContext(coroutineDispatchers.io) { + // Active rooms should be disposed of before clearing the cache + activeRoomsHolder.clear(matrixClient.sessionId) // Clear Matrix cache matrixClient.clearCache() // Clear Coil cache diff --git a/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/tasks/DefaultClearCacheUseCaseTest.kt b/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/tasks/DefaultClearCacheUseCaseTest.kt index 401477d5fc..ab391bfc62 100644 --- a/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/tasks/DefaultClearCacheUseCaseTest.kt +++ b/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/tasks/DefaultClearCacheUseCaseTest.kt @@ -15,8 +15,11 @@ import io.element.android.features.invite.test.InMemorySeenInvitesStore import io.element.android.features.preferences.impl.DefaultCacheService import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.libraries.matrix.test.A_ROOM_ID +import io.element.android.libraries.matrix.test.A_SESSION_ID import io.element.android.libraries.matrix.test.FakeMatrixClient +import io.element.android.libraries.matrix.test.room.FakeJoinedRoom import io.element.android.libraries.push.test.FakePushService +import io.element.android.services.appnavstate.api.ActiveRoomsHolder import io.element.android.tests.testutils.lambda.lambdaRecorder import io.element.android.tests.testutils.lambda.value import io.element.android.tests.testutils.testCoroutineDispatchers @@ -31,8 +34,10 @@ import org.robolectric.RobolectricTestRunner class DefaultClearCacheUseCaseTest { @Test fun `execute clear cache should do all the expected tasks`() = runTest { + val activeRoomsHolder = ActiveRoomsHolder().apply { addRoom(FakeJoinedRoom()) } val clearCacheLambda = lambdaRecorder { } val matrixClient = FakeMatrixClient( + sessionId = A_SESSION_ID, clearCacheLambda = clearCacheLambda, ) val defaultCacheService = DefaultCacheService() @@ -55,6 +60,7 @@ class DefaultClearCacheUseCaseTest { ftueService = ftueService, pushService = pushService, seenInvitesStore = seenInvitesStore, + activeRoomsHolder = activeRoomsHolder, ) defaultCacheService.clearedCacheEventFlow.test { sut.invoke() @@ -64,6 +70,7 @@ class DefaultClearCacheUseCaseTest { .with(value(matrixClient.sessionId), value(false)) assertThat(awaitItem()).isEqualTo(matrixClient.sessionId) assertThat(seenInvitesStore.seenRoomIds().first()).isEmpty() + assertThat(activeRoomsHolder.getActiveRoom(A_SESSION_ID)).isNull() } } } diff --git a/features/share/impl/build.gradle.kts b/features/share/impl/build.gradle.kts index ae0cad80df..c059a24982 100644 --- a/features/share/impl/build.gradle.kts +++ b/features/share/impl/build.gradle.kts @@ -37,6 +37,7 @@ dependencies { implementation(projects.libraries.roomselect.api) implementation(projects.libraries.uiStrings) implementation(projects.libraries.testtags) + implementation(projects.services.appnavstate.api) api(libs.statemachine) api(projects.features.share.api) diff --git a/features/share/impl/src/main/kotlin/io/element/android/features/share/impl/SharePresenter.kt b/features/share/impl/src/main/kotlin/io/element/android/features/share/impl/SharePresenter.kt index 08e9bdc1ff..1c75daa828 100644 --- a/features/share/impl/src/main/kotlin/io/element/android/features/share/impl/SharePresenter.kt +++ b/features/share/impl/src/main/kotlin/io/element/android/features/share/impl/SharePresenter.kt @@ -20,9 +20,11 @@ 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 +import io.element.android.libraries.matrix.api.room.JoinedRoom import io.element.android.libraries.mediaupload.api.MediaPreProcessor import io.element.android.libraries.mediaupload.api.MediaSender import io.element.android.libraries.preferences.api.store.SessionPreferencesStore +import io.element.android.services.appnavstate.api.ActiveRoomsHolder import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.launch @@ -33,6 +35,7 @@ class SharePresenter @AssistedInject constructor( private val matrixClient: MatrixClient, private val mediaPreProcessor: MediaPreProcessor, private val sessionPreferencesStore: SessionPreferencesStore, + private val activeRoomsHolder: ActiveRoomsHolder, ) : Presenter { @AssistedFactory interface Factory { @@ -59,6 +62,12 @@ class SharePresenter @AssistedInject constructor( ) } + private suspend fun getJoinedRoom(roomId: RoomId): JoinedRoom? { + return activeRoomsHolder.getActiveRoom(matrixClient.sessionId) + ?.takeIf { it.roomId == roomId } + ?: matrixClient.getJoinedRoom(roomId) + } + private fun CoroutineScope.share( intent: Intent, roomIds: List, @@ -72,7 +81,7 @@ class SharePresenter @AssistedInject constructor( } else { roomIds .map { roomId -> - val room = matrixClient.getJoinedRoom(roomId) ?: return@map false + val room = getJoinedRoom(roomId) ?: return@map false val mediaSender = MediaSender( preProcessor = mediaPreProcessor, room = room, @@ -86,7 +95,11 @@ class SharePresenter @AssistedInject constructor( ).isSuccess } .all { it } - .also { room.destroy() } + .also { + if (activeRoomsHolder.getActiveRoomMatching(matrixClient.sessionId, roomId) == null) { + room.destroy() + } + } } .all { it } } @@ -94,7 +107,7 @@ class SharePresenter @AssistedInject constructor( onPlainText = { text -> roomIds .map { roomId -> - matrixClient.getJoinedRoom(roomId)?.liveTimeline?.sendMessage( + getJoinedRoom(roomId)?.liveTimeline?.sendMessage( body = text, htmlBody = null, intentionalMentions = emptyList(), diff --git a/features/share/impl/src/test/kotlin/io/element/android/features/share/impl/SharePresenterTest.kt b/features/share/impl/src/test/kotlin/io/element/android/features/share/impl/SharePresenterTest.kt index 3504390f68..07424aa384 100644 --- a/features/share/impl/src/test/kotlin/io/element/android/features/share/impl/SharePresenterTest.kt +++ b/features/share/impl/src/test/kotlin/io/element/android/features/share/impl/SharePresenterTest.kt @@ -28,6 +28,7 @@ import io.element.android.libraries.matrix.test.timeline.FakeTimeline import io.element.android.libraries.mediaupload.api.MediaPreProcessor import io.element.android.libraries.mediaupload.test.FakeMediaPreProcessor import io.element.android.libraries.preferences.test.InMemorySessionPreferencesStore +import io.element.android.services.appnavstate.api.ActiveRoomsHolder import io.element.android.tests.testutils.WarmUpRule import io.element.android.tests.testutils.lambda.lambdaRecorder import kotlinx.coroutines.test.TestScope @@ -163,7 +164,8 @@ class SharePresenterTest { intent: Intent = Intent(), shareIntentHandler: ShareIntentHandler = FakeShareIntentHandler(), matrixClient: MatrixClient = FakeMatrixClient(), - mediaPreProcessor: MediaPreProcessor = FakeMediaPreProcessor() + mediaPreProcessor: MediaPreProcessor = FakeMediaPreProcessor(), + activeRoomsHolder: ActiveRoomsHolder = ActiveRoomsHolder(), ): SharePresenter { return SharePresenter( intent = intent, @@ -171,7 +173,8 @@ class SharePresenterTest { shareIntentHandler = shareIntentHandler, matrixClient = matrixClient, mediaPreProcessor = mediaPreProcessor, - InMemorySessionPreferencesStore(), + sessionPreferencesStore = InMemorySessionPreferencesStore(), + activeRoomsHolder = activeRoomsHolder, ) } } diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/JoinedRustRoom.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/JoinedRustRoom.kt index d01675bb29..79e3a1e0d2 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/JoinedRustRoom.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/JoinedRustRoom.kt @@ -416,7 +416,6 @@ class JoinedRustRoom( RustWidgetDriver( widgetSettings = widgetSettings, room = innerRoom, - joinedRustRoom = this, widgetCapabilitiesProvider = object : WidgetCapabilitiesProvider { override fun acquireCapabilities(capabilities: WidgetCapabilities): WidgetCapabilities { return getElementCallRequiredPermissions(sessionId.value, baseRoom.deviceId.value) diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/widget/RustWidgetDriver.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/widget/RustWidgetDriver.kt index b723ab194b..c80313f5da 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/widget/RustWidgetDriver.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/widget/RustWidgetDriver.kt @@ -9,7 +9,6 @@ package io.element.android.libraries.matrix.impl.widget import io.element.android.libraries.matrix.api.widget.MatrixWidgetDriver import io.element.android.libraries.matrix.api.widget.MatrixWidgetSettings -import io.element.android.libraries.matrix.impl.room.JoinedRustRoom import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job @@ -25,7 +24,6 @@ import kotlin.coroutines.coroutineContext class RustWidgetDriver( widgetSettings: MatrixWidgetSettings, private val room: Room, - private val joinedRustRoom: JoinedRustRoom, private val widgetCapabilitiesProvider: WidgetCapabilitiesProvider, ) : MatrixWidgetDriver { // It's important to have extra capacity here to make sure we don't drop any messages @@ -71,6 +69,5 @@ class RustWidgetDriver( override fun close() { receiveMessageJob?.cancel() driverAndHandle.driver.close() - joinedRustRoom.destroy() } } diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationBroadcastReceiverHandler.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationBroadcastReceiverHandler.kt index 9c899c9dfd..f597fc7e39 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationBroadcastReceiverHandler.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationBroadcastReceiverHandler.kt @@ -23,6 +23,7 @@ import io.element.android.libraries.push.api.notifications.NotificationCleaner import io.element.android.libraries.push.impl.R import io.element.android.libraries.push.impl.notifications.model.NotifiableMessageEvent import io.element.android.libraries.push.impl.push.OnNotifiableEventReceived +import io.element.android.services.appnavstate.api.ActiveRoomsHolder import io.element.android.services.toolbox.api.strings.StringProvider import io.element.android.services.toolbox.api.systemclock.SystemClock import kotlinx.coroutines.CoroutineScope @@ -44,6 +45,7 @@ class NotificationBroadcastReceiverHandler @Inject constructor( private val onNotifiableEventReceived: OnNotifiableEventReceived, private val stringProvider: StringProvider, private val replyMessageExtractor: ReplyMessageExtractor, + private val activeRoomsHolder: ActiveRoomsHolder, ) { fun onReceive(intent: Intent) { val sessionId = intent.getStringExtra(NotificationBroadcastReceiver.KEY_SESSION_ID)?.let(::SessionId) ?: return @@ -117,13 +119,15 @@ class NotificationBroadcastReceiverHandler @Inject constructor( return@launch } val client = matrixClientProvider.getOrRestore(sessionId).getOrNull() ?: return@launch - client.getJoinedRoom(roomId)?.let { room -> + val room = activeRoomsHolder.getActiveRoomMatching(sessionId, roomId) ?: client.getJoinedRoom(roomId) + + room?.let { sendMatrixEvent( sessionId = sessionId, roomId = roomId, replyToEventId = replyToEventId, threadId = threadId, - room = room, + room = it, message = message, ) } diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/push/SyncOnNotifiableEvent.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/push/SyncOnNotifiableEvent.kt index 4c5eee260b..23cad2aba9 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/push/SyncOnNotifiableEvent.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/push/SyncOnNotifiableEvent.kt @@ -17,6 +17,7 @@ import io.element.android.libraries.matrix.api.room.JoinedRoom import io.element.android.libraries.matrix.api.timeline.MatrixTimelineItem import io.element.android.libraries.push.impl.notifications.model.NotifiableEvent import io.element.android.libraries.push.impl.notifications.model.NotifiableRingingCallEvent +import io.element.android.services.appnavstate.api.ActiveRoomsHolder import io.element.android.services.appnavstate.api.AppForegroundStateService import kotlinx.coroutines.flow.first import kotlinx.coroutines.withContext @@ -30,28 +31,43 @@ class SyncOnNotifiableEvent @Inject constructor( private val featureFlagService: FeatureFlagService, private val appForegroundStateService: AppForegroundStateService, private val dispatchers: CoroutineDispatchers, + private val activeRoomsHolder: ActiveRoomsHolder, ) { suspend operator fun invoke(notifiableEvent: NotifiableEvent) = withContext(dispatchers.io) { val isRingingCallEvent = notifiableEvent is NotifiableRingingCallEvent if (!featureFlagService.isFeatureEnabled(FeatureFlags.SyncOnPush) && !isRingingCallEvent) { return@withContext } - val client = matrixClientProvider.getOrRestore(notifiableEvent.sessionId).getOrNull() ?: return@withContext - client.getJoinedRoom(notifiableEvent.roomId)?.use { room -> - room.subscribeToSync() + val activeRoom = activeRoomsHolder.getActiveRoomMatching(notifiableEvent.sessionId, notifiableEvent.roomId) - // If the app is in foreground, sync is already running, so we just add the subscription above. - if (!appForegroundStateService.isInForeground.value) { - if (isRingingCallEvent) { - room.waitsUntilUserIsInTheCall(timeout = 60.seconds) - } else { - try { - appForegroundStateService.updateIsSyncingNotificationEvent(true) - room.waitsUntilEventIsKnown(eventId = notifiableEvent.eventId, timeout = 10.seconds) - } finally { - appForegroundStateService.updateIsSyncingNotificationEvent(false) - } + if (activeRoom != null) { + // If the room is already active, we can use it directly + activeRoom.subscribeToSyncAndWait(notifiableEvent, isRingingCallEvent) + } else { + // Otherwise, we need to get the room from the matrix client + val room = matrixClientProvider + .getOrRestore(notifiableEvent.sessionId) + .mapCatching { it.getJoinedRoom(notifiableEvent.roomId) } + .getOrNull() + + room?.use { it.subscribeToSyncAndWait(notifiableEvent, isRingingCallEvent) } + } + } + + private suspend fun JoinedRoom.subscribeToSyncAndWait(notifiableEvent: NotifiableEvent, isRingingCallEvent: Boolean) { + subscribeToSync() + + // If the app is in foreground, sync is already running, so we just add the subscription above. + if (!appForegroundStateService.isInForeground.value) { + if (isRingingCallEvent) { + waitsUntilUserIsInTheCall(timeout = 60.seconds) + } else { + try { + appForegroundStateService.updateIsSyncingNotificationEvent(true) + waitsUntilEventIsKnown(eventId = notifiableEvent.eventId, timeout = 10.seconds) + } finally { + appForegroundStateService.updateIsSyncingNotificationEvent(false) } } } diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationBroadcastReceiverHandlerTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationBroadcastReceiverHandlerTest.kt index 8a4f535216..f86bd5fa70 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationBroadcastReceiverHandlerTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationBroadcastReceiverHandlerTest.kt @@ -41,6 +41,7 @@ import io.element.android.libraries.push.impl.notifications.model.NotifiableEven import io.element.android.libraries.push.impl.push.FakeOnNotifiableEventReceived import io.element.android.libraries.push.impl.push.OnNotifiableEventReceived import io.element.android.libraries.push.test.notifications.FakeNotificationCleaner +import io.element.android.services.appnavstate.api.ActiveRoomsHolder import io.element.android.services.toolbox.api.strings.StringProvider import io.element.android.services.toolbox.api.systemclock.SystemClock import io.element.android.services.toolbox.test.strings.FakeStringProvider @@ -477,6 +478,7 @@ class NotificationBroadcastReceiverHandlerTest { onNotifiableEventReceived: OnNotifiableEventReceived = FakeOnNotifiableEventReceived(), stringProvider: StringProvider = FakeStringProvider(), replyMessageExtractor: ReplyMessageExtractor = FakeReplyMessageExtractor(), + activeRoomsHolder: ActiveRoomsHolder = ActiveRoomsHolder(), ): NotificationBroadcastReceiverHandler { return NotificationBroadcastReceiverHandler( appCoroutineScope = this, @@ -494,6 +496,7 @@ class NotificationBroadcastReceiverHandlerTest { onNotifiableEventReceived = onNotifiableEventReceived, stringProvider = stringProvider, replyMessageExtractor = replyMessageExtractor, + activeRoomsHolder = activeRoomsHolder, ) } } diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/push/SyncOnNotifiableEventTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/push/SyncOnNotifiableEventTest.kt index 8b3907be0b..9209eb4aeb 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/push/SyncOnNotifiableEventTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/push/SyncOnNotifiableEventTest.kt @@ -26,6 +26,7 @@ import io.element.android.libraries.matrix.test.timeline.FakeTimeline import io.element.android.libraries.matrix.test.timeline.anEventTimelineItem import io.element.android.libraries.push.impl.notifications.fixtures.aNotifiableCallEvent import io.element.android.libraries.push.impl.notifications.fixtures.aNotifiableMessageEvent +import io.element.android.services.appnavstate.api.ActiveRoomsHolder import io.element.android.services.appnavstate.test.FakeAppForegroundStateService import io.element.android.tests.testutils.lambda.assert import io.element.android.tests.testutils.lambda.lambdaRecorder @@ -199,7 +200,8 @@ class SyncOnNotifiableEventTest { isSyncOnPushEnabled: Boolean = true, appForegroundStateService: FakeAppForegroundStateService = FakeAppForegroundStateService( initialForegroundValue = true, - ) + ), + activeRoomsHolder: ActiveRoomsHolder = ActiveRoomsHolder(), ): SyncOnNotifiableEvent { val featureFlagService = FakeFeatureFlagService( initialState = mapOf( @@ -212,6 +214,7 @@ class SyncOnNotifiableEventTest { featureFlagService = featureFlagService, appForegroundStateService = appForegroundStateService, dispatchers = testCoroutineDispatchers(), + activeRoomsHolder = activeRoomsHolder, ) } } diff --git a/services/appnavstate/api/src/main/kotlin/io/element/android/services/appnavstate/api/ActiveRoomsHolder.kt b/services/appnavstate/api/src/main/kotlin/io/element/android/services/appnavstate/api/ActiveRoomsHolder.kt new file mode 100644 index 0000000000..c45fb0a280 --- /dev/null +++ b/services/appnavstate/api/src/main/kotlin/io/element/android/services/appnavstate/api/ActiveRoomsHolder.kt @@ -0,0 +1,68 @@ +/* + * Copyright 2025 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +package io.element.android.services.appnavstate.api + +import io.element.android.libraries.di.AppScope +import io.element.android.libraries.di.SingleIn +import io.element.android.libraries.matrix.api.core.RoomId +import io.element.android.libraries.matrix.api.core.SessionId +import io.element.android.libraries.matrix.api.room.JoinedRoom +import java.util.concurrent.ConcurrentHashMap +import javax.inject.Inject + +/** + * Holds the active rooms for a given session so they can be reused instead of instantiating new ones. + */ +@SingleIn(AppScope::class) +class ActiveRoomsHolder @Inject constructor() { + private val rooms = ConcurrentHashMap>() + + /** + * Adds a new held room for the given sessionId. + */ + fun addRoom(room: JoinedRoom) { + val roomsForSessionId = rooms.getOrPut(key = room.sessionId, defaultValue = { mutableSetOf() }) + if (roomsForSessionId.none { it.roomId == room.roomId }) { + // We don't want to add the same room multiple times + roomsForSessionId.add(room) + } + } + + /** + * Returns the last room added for the given [sessionId] or null if no room was added. + */ + fun getActiveRoom(sessionId: SessionId): JoinedRoom? { + return rooms[sessionId]?.lastOrNull() + } + + /** + * Returns an active room associated to the given [sessionId], with the given [roomId], or null if none match. + */ + fun getActiveRoomMatching(sessionId: SessionId, roomId: RoomId): JoinedRoom? { + return rooms[sessionId]?.find { it.roomId == roomId } + } + + /** + * Removes any room matching the provided [sessionId] and [roomId]. + */ + fun removeRoom(sessionId: SessionId, roomId: RoomId) { + val roomsForSessionId = rooms[sessionId] ?: return + roomsForSessionId.removeIf { it.roomId == roomId } + } + + /** + * Clears all the rooms for the given sessionId. + */ + fun clear(sessionId: SessionId) { + val activeRooms = rooms.remove(sessionId) ?: return + for (room in activeRooms) { + // Destroy the room to reset the live timelines + room.destroy() + } + } +} From df77dc873ad4aefbc660ae5a96837ec78e289d99 Mon Sep 17 00:00:00 2001 From: ElementBot <110224175+ElementBot@users.noreply.github.com> Date: Mon, 26 May 2025 14:56:14 +0200 Subject: [PATCH 05/25] Update Gradle Wrapper from 8.14 to 8.14.1 (#4766) Signed-off-by: gradle-update-robot Co-authored-by: gradle-update-robot Co-authored-by: Jorge Martin Espinosa --- gradle/wrapper/gradle-wrapper.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 247cf2a9f5..9128c7d428 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,7 +1,7 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionSha256Sum=61ad310d3c7d3e5da131b76bbf22b5a4c0786e9d892dae8c1658d4b484de3caa -distributionUrl=https\://services.gradle.org/distributions/gradle-8.14-bin.zip +distributionSha256Sum=845952a9d6afa783db70bb3b0effaae45ae5542ca2bb7929619e8af49cb634cf +distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.1-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME From 819d9c7da095d3e62be1fea4cb579e454e1b3af6 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Mon, 26 May 2025 14:56:54 +0200 Subject: [PATCH 06/25] Update UnifiedPush library (#4358) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Upgrade `com.github.UnifiedPush:android-connector` from 2.4.0 to 3.0.4 * Do not use jitpack to get the unified push library * implementation is ok * Exclude com.google.crypto.tink to fix a compilation issue * Fix tests. * Update log. * Revert "Exclude com.google.crypto.tink to fix a compilation issue" This reverts commit f431ebe3b78a06282e0ee74c9f428702d463df45. * Fix compilation issue after rebase. * Exclude com.google.crypto.tink again. * Try version 3.0.8 * Use latest version 3.0.9 * Replace tink exclusion with dependency resolution --------- Co-authored-by: Jorge Martín --- app/build.gradle.kts | 9 ++++++ gradle/libs.versions.toml | 2 +- .../unifiedpush/build.gradle.kts | 3 +- .../unifiedpush/RegisterUnifiedPushUseCase.kt | 2 +- .../UnregisterUnifiedPushUseCase.kt | 2 +- .../VectorUnifiedPushMessagingReceiver.kt | 25 +++++++++------- .../VectorUnifiedPushMessagingReceiverTest.kt | 30 +++++++++++++++---- settings.gradle.kts | 1 - 8 files changed, 52 insertions(+), 22 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index cd484c95b0..f233620cdb 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -354,3 +354,12 @@ fun Project.configureLicensesTasks(reportingExtension: ReportingExtension) { } } } + +configurations.all { + resolutionStrategy { + dependencySubstitution { + val tink = libs.google.tink.get() + substitute(module("com.google.crypto.tink:tink")).using(module("${tink.group}:${tink.name}:${tink.version}")) + } + } +} diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index fe62088ea0..27e54a3db7 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -177,7 +177,7 @@ sqldelight-driver-jvm = { module = "app.cash.sqldelight:sqlite-driver", version. sqldelight-coroutines = { module = "app.cash.sqldelight:coroutines-extensions", version.ref = "sqldelight" } sqlcipher = "net.zetetic:android-database-sqlcipher:4.5.4" sqlite = "androidx.sqlite:sqlite-ktx:2.5.1" -unifiedpush = "com.github.UnifiedPush:android-connector:2.4.0" +unifiedpush = "org.unifiedpush.android:connector:3.0.9" otaliastudios_transcoder = "com.otaliastudios:transcoder:0.11.2" vanniktech_blurhash = "com.vanniktech:blurhash:0.3.0" telephoto_zoomableimage = { module = "me.saket.telephoto:zoomable-image-coil", version.ref = "telephoto" } diff --git a/libraries/pushproviders/unifiedpush/build.gradle.kts b/libraries/pushproviders/unifiedpush/build.gradle.kts index 1dec445c00..c98d98f64e 100644 --- a/libraries/pushproviders/unifiedpush/build.gradle.kts +++ b/libraries/pushproviders/unifiedpush/build.gradle.kts @@ -42,8 +42,7 @@ dependencies { implementation(libs.serialization.json) // UnifiedPush library - api(libs.unifiedpush) - + implementation(libs.unifiedpush) testImplementation(libs.coroutines.test) testImplementation(libs.test.junit) testImplementation(libs.test.robolectric) diff --git a/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/RegisterUnifiedPushUseCase.kt b/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/RegisterUnifiedPushUseCase.kt index dc32dbff76..5df7c1e5c3 100644 --- a/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/RegisterUnifiedPushUseCase.kt +++ b/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/RegisterUnifiedPushUseCase.kt @@ -33,7 +33,7 @@ class DefaultRegisterUnifiedPushUseCase @Inject constructor( UnifiedPush.saveDistributor(context, distributor.value) // This will trigger the callback // VectorUnifiedPushMessagingReceiver.onNewEndpoint - UnifiedPush.registerApp(context = context, instance = clientSecret) + UnifiedPush.register(context = context, instance = clientSecret) // Wait for VectorUnifiedPushMessagingReceiver.onNewEndpoint to proceed return runCatching { withTimeout(30.seconds) { diff --git a/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnregisterUnifiedPushUseCase.kt b/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnregisterUnifiedPushUseCase.kt index e41aa6a51f..24b9676c11 100644 --- a/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnregisterUnifiedPushUseCase.kt +++ b/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnregisterUnifiedPushUseCase.kt @@ -53,6 +53,6 @@ class DefaultUnregisterUnifiedPushUseCase @Inject constructor( override fun cleanup(clientSecret: String) { unifiedPushStore.storeUpEndpoint(clientSecret, null) unifiedPushStore.storePushGateway(clientSecret, null) - UnifiedPush.unregisterApp(context, clientSecret) + UnifiedPush.unregister(context, clientSecret) } } diff --git a/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/VectorUnifiedPushMessagingReceiver.kt b/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/VectorUnifiedPushMessagingReceiver.kt index 684e08be5b..9cb7e8e60f 100644 --- a/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/VectorUnifiedPushMessagingReceiver.kt +++ b/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/VectorUnifiedPushMessagingReceiver.kt @@ -16,7 +16,10 @@ import io.element.android.libraries.pushproviders.unifiedpush.registration.Endpo import io.element.android.libraries.pushproviders.unifiedpush.registration.RegistrationResult import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.launch +import org.unifiedpush.android.connector.FailedReason import org.unifiedpush.android.connector.MessagingReceiver +import org.unifiedpush.android.connector.data.PushEndpoint +import org.unifiedpush.android.connector.data.PushMessage import timber.log.Timber import javax.inject.Inject @@ -45,15 +48,15 @@ class VectorUnifiedPushMessagingReceiver : MessagingReceiver() { * @param message the message * @param instance connection, for multi-account */ - override fun onMessage(context: Context, message: ByteArray, instance: String) { - Timber.tag(loggerTag.value).w("New message") + override fun onMessage(context: Context, message: PushMessage, instance: String) { + Timber.tag(loggerTag.value).d("New message, decrypted: ${message.decrypted}") coroutineScope.launch { - val pushData = pushParser.parse(message, instance) + val pushData = pushParser.parse(message.content, instance) if (pushData == null) { Timber.tag(loggerTag.value).w("Invalid data received from UnifiedPush") pushHandler.handleInvalid( providerInfo = "${UnifiedPushConfig.NAME} - $instance", - data = String(message), + data = String(message.content), ) } else { pushHandler.handle( @@ -68,20 +71,20 @@ class VectorUnifiedPushMessagingReceiver : MessagingReceiver() { * Called when a new endpoint is to be used for sending push messages. * You should send the endpoint to your application server and sync for missing notifications. */ - override fun onNewEndpoint(context: Context, endpoint: String, instance: String) { + override fun onNewEndpoint(context: Context, endpoint: PushEndpoint, instance: String) { Timber.tag(loggerTag.value).w("onNewEndpoint: $endpoint") coroutineScope.launch { - val gateway = unifiedPushGatewayResolver.getGateway(endpoint) + val gateway = unifiedPushGatewayResolver.getGateway(endpoint.url) .let { gatewayResult -> unifiedPushGatewayUrlResolver.resolve(gatewayResult, instance) } unifiedPushStore.storePushGateway(instance, gateway) - val result = newGatewayHandler.handle(endpoint, gateway, instance) + val result = newGatewayHandler.handle(endpoint.url, gateway, instance) .onFailure { Timber.tag(loggerTag.value).e(it, "Failed to handle new gateway") } .onSuccess { - unifiedPushStore.storeUpEndpoint(instance, endpoint) + unifiedPushStore.storeUpEndpoint(instance, endpoint.url) } endpointRegistrationHandler.registrationDone( RegistrationResult( @@ -96,8 +99,8 @@ class VectorUnifiedPushMessagingReceiver : MessagingReceiver() { /** * Called when the registration is not possible, eg. no network. */ - override fun onRegistrationFailed(context: Context, instance: String) { - Timber.tag(loggerTag.value).e("onRegistrationFailed for $instance") + override fun onRegistrationFailed(context: Context, reason: FailedReason, instance: String) { + Timber.tag(loggerTag.value).e("onRegistrationFailed for $instance, reason: $reason") /* Toast.makeText(context, "Push service registration failed", Toast.LENGTH_SHORT).show() val mode = BackgroundSyncMode.FDROID_BACKGROUND_SYNC_MODE_FOR_REALTIME @@ -110,7 +113,7 @@ class VectorUnifiedPushMessagingReceiver : MessagingReceiver() { * Called when this application is unregistered from receiving push messages. */ override fun onUnregistered(context: Context, instance: String) { - Timber.tag(loggerTag.value).w("Unifiedpush: Unregistered") + Timber.tag(loggerTag.value).w("UnifiedPush: Unregistered") /* val mode = BackgroundSyncMode.FDROID_BACKGROUND_SYNC_MODE_FOR_REALTIME pushDataStore.setFdroidSyncBackgroundMode(mode) diff --git a/libraries/pushproviders/unifiedpush/src/test/kotlin/io/element/android/libraries/pushproviders/unifiedpush/VectorUnifiedPushMessagingReceiverTest.kt b/libraries/pushproviders/unifiedpush/src/test/kotlin/io/element/android/libraries/pushproviders/unifiedpush/VectorUnifiedPushMessagingReceiverTest.kt index bcacdc3d7a..5bb0a6731f 100644 --- a/libraries/pushproviders/unifiedpush/src/test/kotlin/io/element/android/libraries/pushproviders/unifiedpush/VectorUnifiedPushMessagingReceiverTest.kt +++ b/libraries/pushproviders/unifiedpush/src/test/kotlin/io/element/android/libraries/pushproviders/unifiedpush/VectorUnifiedPushMessagingReceiverTest.kt @@ -32,6 +32,10 @@ import org.junit.Assert.assertThrows import org.junit.Test import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner +import org.unifiedpush.android.connector.FailedReason +import org.unifiedpush.android.connector.data.PublicKeySet +import org.unifiedpush.android.connector.data.PushEndpoint +import org.unifiedpush.android.connector.data.PushMessage @RunWith(RobolectricTestRunner::class) class VectorUnifiedPushMessagingReceiverTest { @@ -56,7 +60,7 @@ class VectorUnifiedPushMessagingReceiverTest { fun `onRegistrationFailed does nothing`() = runTest { val context = InstrumentationRegistry.getInstrumentation().context val vectorUnifiedPushMessagingReceiver = createVectorUnifiedPushMessagingReceiver() - vectorUnifiedPushMessagingReceiver.onRegistrationFailed(context, A_SECRET) + vectorUnifiedPushMessagingReceiver.onRegistrationFailed(context, FailedReason.NETWORK, A_SECRET) } @Test @@ -68,7 +72,7 @@ class VectorUnifiedPushMessagingReceiverTest { handleResult = pushHandlerResult ), ) - vectorUnifiedPushMessagingReceiver.onMessage(context, UnifiedPushParserTest.UNIFIED_PUSH_DATA.toByteArray(), A_SECRET) + vectorUnifiedPushMessagingReceiver.onMessage(context, aPushMessage(), A_SECRET) advanceUntilIdle() pushHandlerResult.assertions() .isCalledOnce() @@ -96,7 +100,7 @@ class VectorUnifiedPushMessagingReceiverTest { handleInvalidResult = handleInvalidResult, ), ) - vectorUnifiedPushMessagingReceiver.onMessage(context, "".toByteArray(), A_SECRET) + vectorUnifiedPushMessagingReceiver.onMessage(context, aPushMessage(""), A_SECRET) advanceUntilIdle() handleInvalidResult.assertions().isCalledOnce() } @@ -127,7 +131,7 @@ class VectorUnifiedPushMessagingReceiverTest { unifiedPushNewGatewayHandler = unifiedPushNewGatewayHandler, ) endpointRegistrationHandler.state.test { - vectorUnifiedPushMessagingReceiver.onNewEndpoint(context, "anEndpoint", A_SECRET) + vectorUnifiedPushMessagingReceiver.onNewEndpoint(context, aPushEndpoint("anEndpoint"), A_SECRET) advanceUntilIdle() assertThat(awaitItem()).isEqualTo( RegistrationResult( @@ -170,7 +174,7 @@ class VectorUnifiedPushMessagingReceiverTest { unifiedPushNewGatewayHandler = unifiedPushNewGatewayHandler, ) endpointRegistrationHandler.state.test { - vectorUnifiedPushMessagingReceiver.onNewEndpoint(context, "anEndpoint", A_SECRET) + vectorUnifiedPushMessagingReceiver.onNewEndpoint(context, aPushEndpoint(), A_SECRET) advanceUntilIdle() assertThat(awaitItem()).isEqualTo( RegistrationResult( @@ -207,3 +211,19 @@ class VectorUnifiedPushMessagingReceiverTest { } } } + +private fun aPushMessage( + data: String = UnifiedPushParserTest.UNIFIED_PUSH_DATA, + decrypted: Boolean = true, +) = PushMessage( + content = data.toByteArray(), + decrypted = decrypted, +) + +private fun aPushEndpoint( + url: String = "anEndpoint", + pubKeySet: PublicKeySet? = null, +) = PushEndpoint( + url = url, + pubKeySet = pubKeySet, +) diff --git a/settings.gradle.kts b/settings.gradle.kts index d63017992f..e594999bd8 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -39,7 +39,6 @@ dependencyResolutionManagement { maven { url = URI("https://www.jitpack.io") content { - includeModule("com.github.UnifiedPush", "android-connector") includeModule("com.github.matrix-org", "matrix-analytics-events") } } From 5ec485911ef666aa5e42f4b4b243a97fb9d5cd4f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 26 May 2025 14:58:57 +0200 Subject: [PATCH 07/25] fix(deps): update sqldelight to v2.1.0 (#4735) * fix(deps): update sqldelight to v2.1.0 * Ignore new returned value from database query which know have type QueryResult. --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Benoit Marty --- gradle/libs.versions.toml | 2 +- .../impl/DatabaseSessionStore.kt | 34 +++++++++++-------- 2 files changed, 20 insertions(+), 16 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 27e54a3db7..c8b7bcefa7 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -40,7 +40,7 @@ serialization_json = "1.8.1" coil = "3.1.0" showkase = "1.0.3" appyx = "1.7.0" -sqldelight = "2.0.2" +sqldelight = "2.1.0" wysiwyg = "2.38.3" telephoto = "0.15.1" diff --git a/libraries/session-storage/impl/src/main/kotlin/io/element/android/libraries/sessionstorage/impl/DatabaseSessionStore.kt b/libraries/session-storage/impl/src/main/kotlin/io/element/android/libraries/sessionstorage/impl/DatabaseSessionStore.kt index 95d3f501e4..d65fa5da90 100644 --- a/libraries/session-storage/impl/src/main/kotlin/io/element/android/libraries/sessionstorage/impl/DatabaseSessionStore.kt +++ b/libraries/session-storage/impl/src/main/kotlin/io/element/android/libraries/sessionstorage/impl/DatabaseSessionStore.kt @@ -48,25 +48,29 @@ class DatabaseSessionStore @Inject constructor( } } - override suspend fun storeData(sessionData: SessionData) = sessionDataMutex.withLock { - database.sessionDataQueries.insertSessionData(sessionData.toDbModel()) + override suspend fun storeData(sessionData: SessionData) { + sessionDataMutex.withLock { + database.sessionDataQueries.insertSessionData(sessionData.toDbModel()) + } } - override suspend fun updateData(sessionData: SessionData) = sessionDataMutex.withLock { - val result = database.sessionDataQueries.selectByUserId(sessionData.userId) - .executeAsOneOrNull() - ?.toApiModel() + override suspend fun updateData(sessionData: SessionData) { + sessionDataMutex.withLock { + val result = database.sessionDataQueries.selectByUserId(sessionData.userId) + .executeAsOneOrNull() + ?.toApiModel() - if (result == null) { - Timber.e("User ${sessionData.userId} not found in session database") - return - } + if (result == null) { + Timber.e("User ${sessionData.userId} not found in session database") + return + } // Copy new data from SDK, but keep login timestamp - database.sessionDataQueries.updateSession( - sessionData.copy( - loginTimestamp = result.loginTimestamp, - ).toDbModel() - ) + database.sessionDataQueries.updateSession( + sessionData.copy( + loginTimestamp = result.loginTimestamp, + ).toDbModel() + ) + } } override suspend fun getLatestSession(): SessionData? { From f8d7b4dfc98782539274863cde032edb82691a37 Mon Sep 17 00:00:00 2001 From: Jorge Martin Espinosa Date: Mon, 26 May 2025 17:10:20 +0200 Subject: [PATCH 08/25] Notification events resolving and rendering in batches (#4722) - Use `NotiticationService.getNotifications()` function so we resolve the events in bulk. - Added `NotifierResolverQueue` to group the notifications to resolve based on a debounce strategy. - Batch rendering of these events as notifications. --- .../api/notification/NotificationData.kt | 2 + .../api/notification/NotificationService.kt | 2 +- .../libraries/matrix/impl/RustMatrixClient.kt | 2 +- .../impl/notification/NotificationMapper.kt | 3 + .../notification/RustNotificationService.kt | 33 +- .../fakes/FakeRustNotificationClient.kt | 8 +- .../RustNotificationServiceTest.kt | 6 +- .../notification/FakeNotificationService.kt | 13 +- .../test/notification/NotificationData.kt | 2 + .../DefaultNotifiableEventResolver.kt | 49 +- .../DefaultNotificationDrawerManager.kt | 5 + .../DefaultOnMissedCallNotificationHandler.kt | 3 +- .../NotificationBroadcastReceiverHandler.kt | 10 +- .../notifications/NotificationDisplayer.kt | 1 + .../NotificationResolverQueue.kt | 101 ++++ .../notifications/model/ResolvedPushEvent.kt | 18 +- .../push/impl/push/DefaultPushHandler.kt | 144 +++-- .../impl/push/OnNotifiableEventReceived.kt | 10 +- .../push/impl/push/OnRedactedEventReceived.kt | 82 +-- .../push/impl/push/SyncOnNotifiableEvent.kt | 70 +-- .../DefaultNotifiableEventResolverTest.kt | 535 ++++++++++-------- ...aultOnMissedCallNotificationHandlerTest.kt | 4 +- .../FakeNotifiableEventResolver.kt | 12 +- ...otificationBroadcastReceiverHandlerTest.kt | 12 +- .../DefaultOnRedactedEventReceivedTest.kt | 4 +- .../push/impl/push/DefaultPushHandlerTest.kt | 220 +++++-- .../push/FakeOnNotifiableEventReceived.kt | 6 +- .../impl/push/FakeOnRedactedEventReceived.kt | 6 +- .../impl/push/SyncOnNotifiableEventTest.kt | 30 +- .../testutils/lambda/ParameterMatcher.kt | 12 + 30 files changed, 882 insertions(+), 523 deletions(-) create mode 100644 libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationResolverQueue.kt diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/notification/NotificationData.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/notification/NotificationData.kt index 5ac236ad80..338193ed44 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/notification/NotificationData.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/notification/NotificationData.kt @@ -9,12 +9,14 @@ package io.element.android.libraries.matrix.api.notification import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.RoomId +import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.libraries.matrix.api.core.ThreadId import io.element.android.libraries.matrix.api.core.UserId import io.element.android.libraries.matrix.api.room.RoomMembershipState import io.element.android.libraries.matrix.api.timeline.item.event.MessageType data class NotificationData( + val sessionId: SessionId, val eventId: EventId, val threadId: ThreadId?, val roomId: RoomId, diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/notification/NotificationService.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/notification/NotificationService.kt index f229a46677..1e1c8b7fb7 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/notification/NotificationService.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/notification/NotificationService.kt @@ -11,5 +11,5 @@ import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.RoomId interface NotificationService { - suspend fun getNotification(roomId: RoomId, eventId: EventId): Result + suspend fun getNotifications(ids: Map>): Result> } diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt index 5f1176b081..ea8a4f6321 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt @@ -152,7 +152,7 @@ class RustMatrixClient( ) private val notificationProcessSetup = NotificationProcessSetup.SingleProcess(innerSyncService) private val innerNotificationClient = runBlocking { innerClient.notificationClient(notificationProcessSetup) } - private val notificationService = RustNotificationService(innerNotificationClient, dispatchers, clock) + private val notificationService = RustNotificationService(sessionId, innerNotificationClient, dispatchers, clock) private val notificationSettingsService = RustNotificationSettingsService(innerClient, sessionCoroutineScope, dispatchers) private val encryptionService = RustEncryptionService( client = innerClient, diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/notification/NotificationMapper.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/notification/NotificationMapper.kt index 7fdb4a9fdc..9130df5c7a 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/notification/NotificationMapper.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/notification/NotificationMapper.kt @@ -10,6 +10,7 @@ package io.element.android.libraries.matrix.impl.notification import io.element.android.libraries.core.bool.orFalse import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.RoomId +import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.libraries.matrix.api.core.UserId import io.element.android.libraries.matrix.api.notification.NotificationContent import io.element.android.libraries.matrix.api.notification.NotificationData @@ -25,6 +26,7 @@ class NotificationMapper( private val notificationContentMapper = NotificationContentMapper() fun map( + sessionId: SessionId, eventId: EventId, roomId: RoomId, notificationItem: NotificationItem @@ -35,6 +37,7 @@ class NotificationMapper( activeMembersCount = item.roomInfo.joinedMembersCount.toInt(), ) NotificationData( + sessionId = sessionId, eventId = eventId, // FIXME once the `NotificationItem` in the SDK returns the thread id threadId = null, diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/notification/RustNotificationService.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/notification/RustNotificationService.kt index dfc891ace8..7cf432bad4 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/notification/RustNotificationService.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/notification/RustNotificationService.kt @@ -10,28 +10,45 @@ package io.element.android.libraries.matrix.impl.notification import io.element.android.libraries.core.coroutine.CoroutineDispatchers import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.RoomId +import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.libraries.matrix.api.notification.NotificationData import io.element.android.libraries.matrix.api.notification.NotificationService import io.element.android.services.toolbox.api.systemclock.SystemClock import kotlinx.coroutines.withContext import org.matrix.rustcomponents.sdk.NotificationClient -import org.matrix.rustcomponents.sdk.use +import org.matrix.rustcomponents.sdk.NotificationItemsRequest +import timber.log.Timber class RustNotificationService( + private val sessionId: SessionId, private val notificationClient: NotificationClient, private val dispatchers: CoroutineDispatchers, clock: SystemClock, ) : NotificationService { private val notificationMapper: NotificationMapper = NotificationMapper(clock) - override suspend fun getNotification( - roomId: RoomId, - eventId: EventId, - ): Result = withContext(dispatchers.io) { + override suspend fun getNotifications( + ids: Map> + ): Result> = withContext(dispatchers.io) { runCatching { - val item = notificationClient.getNotification(roomId.value, eventId.value) - item?.use { - notificationMapper.map(eventId, roomId, it) + val requests = ids.map { (roomId, eventIds) -> + NotificationItemsRequest( + roomId = roomId.value, + eventIds = eventIds.map { it.value } + ) + } + val items = notificationClient.getNotifications(requests) + buildMap { + val eventIds = requests.flatMap { it.eventIds } + for (eventId in eventIds) { + val item = items[eventId] + if (item != null) { + val roomId = RoomId(requests.find { it.eventIds.contains(eventId) }?.roomId!!) + put(EventId(eventId), notificationMapper.map(sessionId, EventId(eventId), roomId, item)) + } else { + Timber.e("Could not retrieve event for notification with $eventId") + } + } } } } diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeRustNotificationClient.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeRustNotificationClient.kt index 1e607351b9..802f20c509 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeRustNotificationClient.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeRustNotificationClient.kt @@ -7,15 +7,15 @@ package io.element.android.libraries.matrix.impl.fixtures.fakes -import io.element.android.tests.testutils.simulateLongTask import org.matrix.rustcomponents.sdk.NoPointer import org.matrix.rustcomponents.sdk.NotificationClient import org.matrix.rustcomponents.sdk.NotificationItem +import org.matrix.rustcomponents.sdk.NotificationItemsRequest class FakeRustNotificationClient( - var notificationItemResult: NotificationItem? = null + var notificationItemResult: Map = emptyMap(), ) : NotificationClient(NoPointer) { - override suspend fun getNotification(roomId: String, eventId: String): NotificationItem? = simulateLongTask { - notificationItemResult + override suspend fun getNotifications(requests: List): Map { + return notificationItemResult } } diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/notification/RustNotificationServiceTest.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/notification/RustNotificationServiceTest.kt index 71623337cd..c8d40d7332 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/notification/RustNotificationServiceTest.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/notification/RustNotificationServiceTest.kt @@ -15,6 +15,7 @@ import io.element.android.libraries.matrix.impl.fixtures.fakes.FakeRustNotificat import io.element.android.libraries.matrix.test.AN_EVENT_ID import io.element.android.libraries.matrix.test.A_MESSAGE import io.element.android.libraries.matrix.test.A_ROOM_ID +import io.element.android.libraries.matrix.test.A_SESSION_ID import io.element.android.libraries.matrix.test.A_USER_ID_2 import io.element.android.services.toolbox.api.systemclock.SystemClock import io.element.android.services.toolbox.test.systemclock.FakeSystemClock @@ -28,12 +29,12 @@ class RustNotificationServiceTest { @Test fun test() = runTest { val notificationClient = FakeRustNotificationClient( - notificationItemResult = aRustNotificationItem(), + notificationItemResult = mapOf(AN_EVENT_ID.value to aRustNotificationItem()), ) val sut = createRustNotificationService( notificationClient = notificationClient, ) - val result = sut.getNotification(A_ROOM_ID, AN_EVENT_ID).getOrThrow()!! + val result = sut.getNotifications(mapOf(A_ROOM_ID to listOf(AN_EVENT_ID))).getOrThrow()[AN_EVENT_ID]!! assertThat(result.isEncrypted).isTrue() assertThat(result.content).isEqualTo( NotificationContent.MessageLike.RoomMessage( @@ -51,6 +52,7 @@ class RustNotificationServiceTest { clock: SystemClock = FakeSystemClock(), ) = RustNotificationService( + sessionId = A_SESSION_ID, notificationClient = notificationClient, dispatchers = testCoroutineDispatchers(), clock = clock, diff --git a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/notification/FakeNotificationService.kt b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/notification/FakeNotificationService.kt index 38a8c79e17..4a9671f677 100644 --- a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/notification/FakeNotificationService.kt +++ b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/notification/FakeNotificationService.kt @@ -13,16 +13,13 @@ import io.element.android.libraries.matrix.api.notification.NotificationData import io.element.android.libraries.matrix.api.notification.NotificationService class FakeNotificationService : NotificationService { - private var getNotificationResult: Result = Result.success(null) + private var getNotificationsResult: Result> = Result.success(emptyMap()) - fun givenGetNotificationResult(result: Result) { - getNotificationResult = result + fun givenGetNotificationsResult(result: Result>) { + getNotificationsResult = result } - override suspend fun getNotification( - roomId: RoomId, - eventId: EventId, - ): Result { - return getNotificationResult + override suspend fun getNotifications(ids: Map>): Result> { + return getNotificationsResult } } diff --git a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/notification/NotificationData.kt b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/notification/NotificationData.kt index 85473d9367..2bfd54954b 100644 --- a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/notification/NotificationData.kt +++ b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/notification/NotificationData.kt @@ -13,6 +13,7 @@ import io.element.android.libraries.matrix.api.notification.NotificationData import io.element.android.libraries.matrix.test.AN_EVENT_ID import io.element.android.libraries.matrix.test.A_ROOM_ID import io.element.android.libraries.matrix.test.A_ROOM_NAME +import io.element.android.libraries.matrix.test.A_SESSION_ID import io.element.android.libraries.matrix.test.A_TIMESTAMP import io.element.android.libraries.matrix.test.A_USER_NAME_2 @@ -27,6 +28,7 @@ fun aNotificationData( roomDisplayName: String? = A_ROOM_NAME ): NotificationData { return NotificationData( + sessionId = A_SESSION_ID, eventId = AN_EVENT_ID, threadId = threadId, roomId = A_ROOM_ID, diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotifiableEventResolver.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotifiableEventResolver.kt index 982daec73e..6ee03ed418 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotifiableEventResolver.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotifiableEventResolver.kt @@ -11,10 +11,10 @@ import android.content.Context import android.net.Uri import androidx.core.content.FileProvider import com.squareup.anvil.annotations.ContributesBinding -import io.element.android.libraries.core.extensions.flatMap import io.element.android.libraries.core.log.logger.LoggerTag import io.element.android.libraries.di.AppScope import io.element.android.libraries.di.ApplicationContext +import io.element.android.libraries.di.SingleIn import io.element.android.libraries.matrix.api.MatrixClient import io.element.android.libraries.matrix.api.MatrixClientProvider import io.element.android.libraries.matrix.api.core.EventId @@ -61,10 +61,14 @@ private val loggerTag = LoggerTag("DefaultNotifiableEventResolver", LoggerTag.No * this pattern allow decoupling between the object responsible of displaying notifications and the matrix sdk. */ interface NotifiableEventResolver { - suspend fun resolveEvent(sessionId: SessionId, roomId: RoomId, eventId: EventId): Result + suspend fun resolveEvents( + sessionId: SessionId, + notificationEventRequests: List + ): Result>> } @ContributesBinding(AppScope::class) +@SingleIn(AppScope::class) class DefaultNotifiableEventResolver @Inject constructor( private val stringProvider: StringProvider, private val clock: SystemClock, @@ -75,29 +79,34 @@ class DefaultNotifiableEventResolver @Inject constructor( private val callNotificationEventResolver: CallNotificationEventResolver, private val appPreferencesStore: AppPreferencesStore, ) : NotifiableEventResolver { - override suspend fun resolveEvent(sessionId: SessionId, roomId: RoomId, eventId: EventId): Result { - // Restore session - val client = matrixClientProvider.getOrRestore(sessionId).getOrNull() ?: return Result.failure( - ResolvingException("Unable to restore session for $sessionId") - ) - val notificationService = client.notificationService() - val notificationData = notificationService.getNotification( - roomId = roomId, - eventId = eventId, - ).onFailure { - Timber.tag(loggerTag.value).e(it, "Unable to resolve event: $eventId.") + override suspend fun resolveEvents( + sessionId: SessionId, + notificationEventRequests: List + ): Result>> { + Timber.d("Queueing notifications: $notificationEventRequests") + val client = matrixClientProvider.getOrRestore(sessionId).getOrElse { + return Result.failure(IllegalStateException("Couldn't get or restore client for session $sessionId")) } + val ids = notificationEventRequests.groupBy { it.roomId }.mapValues { (_, value) -> value.map { it.eventId } } // TODO this notificationData is not always valid at the moment, sometimes the Rust SDK can't fetch the matching event - return notificationData.flatMap { - if (it == null) { - Timber.tag(loggerTag.value).d("No notification data found for event $eventId") - return@flatMap Result.failure(ResolvingException("Unable to resolve event $eventId")) - } else { - Timber.tag(loggerTag.value).d("Found notification item for $eventId") - it.asNotifiableEvent(client, sessionId) + val notifications = client.notificationService().getNotifications(ids).mapCatching { map -> + map.mapValues { (_, notificationData) -> + notificationData.asNotifiableEvent(client, sessionId) } } + + return Result.success( + notificationEventRequests.associate { + val notificationData = notifications.getOrNull()?.get(it.eventId) + if (notificationData != null) { + it to notificationData + } else { + // TODO once the SDK can actually return what went wrong, we should return it here instead of this generic error + it to Result.failure(ResolvingException("No notification data for ${it.roomId} - ${it.eventId}")) + } + } + ) } private suspend fun NotificationData.asNotifiableEvent( diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotificationDrawerManager.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotificationDrawerManager.kt index 93e4bd85e5..f485ba2954 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotificationDrawerManager.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotificationDrawerManager.kt @@ -113,6 +113,11 @@ class DefaultNotificationDrawerManager @Inject constructor( renderEvents(listOf(notifiableEvent)) } + suspend fun onNotifiableEventsReceived(notifiableEvents: List) { + val eventsToNotify = notifiableEvents.filter { !it.shouldIgnoreEventInRoom(appNavigationStateService.appNavigationState.value) } + renderEvents(eventsToNotify) + } + /** * Clear all known message events for a [sessionId]. */ diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultOnMissedCallNotificationHandler.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultOnMissedCallNotificationHandler.kt index 03a9c717d8..1efe57ce06 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultOnMissedCallNotificationHandler.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultOnMissedCallNotificationHandler.kt @@ -30,8 +30,9 @@ class DefaultOnMissedCallNotificationHandler @Inject constructor( // Resolve the event and add a notification for it, at this point it should no longer be a ringing one val notificationData = matrixClientProvider.getOrRestore(sessionId).getOrNull() ?.notificationService() - ?.getNotification(roomId, eventId) + ?.getNotifications(mapOf(roomId to listOf(eventId))) ?.getOrNull() + ?.get(eventId) ?: return val notifiableEvent = callNotificationEventResolver.resolveEvent( diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationBroadcastReceiverHandler.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationBroadcastReceiverHandler.kt index f597fc7e39..594575bc44 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationBroadcastReceiverHandler.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationBroadcastReceiverHandler.kt @@ -163,7 +163,7 @@ class NotificationBroadcastReceiverHandler @Inject constructor( roomIsDm = room.isDm(), outGoingMessage = true, ) - onNotifiableEventReceived.onNotifiableEventReceived(notifiableMessageEvent) + onNotifiableEventReceived.onNotifiableEventsReceived(listOf(notifiableMessageEvent)) if (threadId != null && replyToEventId != null) { room.liveTimeline.replyMessage( @@ -181,9 +181,11 @@ class NotificationBroadcastReceiverHandler @Inject constructor( ) }.onFailure { Timber.e(it, "Failed to send smart reply message") - onNotifiableEventReceived.onNotifiableEventReceived( - notifiableMessageEvent.copy( - outGoingMessageFailed = true + onNotifiableEventReceived.onNotifiableEventsReceived( + listOf( + notifiableMessageEvent.copy( + outGoingMessageFailed = true + ) ) ) } diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDisplayer.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDisplayer.kt index 09bfbb51ba..88e6021cc4 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDisplayer.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDisplayer.kt @@ -37,6 +37,7 @@ class DefaultNotificationDisplayer @Inject constructor( return false } notificationManager.notify(tag, id, notification) + Timber.d("Notifying with tag: $tag, id: $id") return true } diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationResolverQueue.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationResolverQueue.kt new file mode 100644 index 0000000000..1009cc3d36 --- /dev/null +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationResolverQueue.kt @@ -0,0 +1,101 @@ +/* + * Copyright 2025 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +package io.element.android.libraries.push.impl.notifications + +import io.element.android.libraries.di.AppScope +import io.element.android.libraries.di.SingleIn +import io.element.android.libraries.matrix.api.core.EventId +import io.element.android.libraries.matrix.api.core.RoomId +import io.element.android.libraries.matrix.api.core.SessionId +import io.element.android.libraries.push.impl.notifications.model.ResolvedPushEvent +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.ExperimentalCoroutinesApi +import kotlinx.coroutines.Job +import kotlinx.coroutines.SupervisorJob +import kotlinx.coroutines.channels.Channel +import kotlinx.coroutines.delay +import kotlinx.coroutines.flow.MutableSharedFlow +import kotlinx.coroutines.flow.SharedFlow +import kotlinx.coroutines.launch +import timber.log.Timber +import javax.inject.Inject +import kotlin.time.Duration.Companion.milliseconds + +/** + * This class is responsible for periodically batching notification requests and resolving them in a single call, + * so that we can avoid having to resolve each notification individually in the SDK. + */ +@OptIn(ExperimentalCoroutinesApi::class) +@SingleIn(AppScope::class) +class NotificationResolverQueue @Inject constructor( + private val notifiableEventResolver: NotifiableEventResolver, + private val appCoroutineScope: CoroutineScope, +) { + companion object { + private const val BATCH_WINDOW_MS = 250L + } + private val requestQueue = Channel(capacity = 100) + + private var currentProcessingJob: Job? = null + + /** + * A flow that emits pairs of a list of notification event requests and a map of the resolved events. + * The map contains the original request as the key and the resolved event as the value. + */ + val results: SharedFlow, Map>>> = MutableSharedFlow() + + /** + * Enqueues a notification event request to be resolved. + * The request will be processed in batches, so it may not be resolved immediately. + * + * @param request The notification event request to enqueue. + */ + suspend fun enqueue(request: NotificationEventRequest) { + // Cancel previous processing job if it exists, acting as a debounce operation + Timber.d("Cancelling job: $currentProcessingJob") + currentProcessingJob?.cancel() + + // Enqueue the request and start a delayed processing job + requestQueue.send(request) + currentProcessingJob = processQueue() + Timber.d("Starting processing job for request: $request") + } + + private fun processQueue() = appCoroutineScope.launch(SupervisorJob()) { + delay(BATCH_WINDOW_MS.milliseconds) + + // If this job is still active (so this is the latest job), we launch a separate one that won't be cancelled when enqueueing new items + // to process the existing queued items. + appCoroutineScope.launch { + val groupedRequestsById = buildList { + while (!requestQueue.isEmpty) { + requestQueue.receiveCatching().getOrNull()?.let(this::add) + } + }.groupBy { it.sessionId } + + val sessionIds = groupedRequestsById.keys + for (sessionId in sessionIds) { + val requests = groupedRequestsById[sessionId].orEmpty() + Timber.d("Fetching notifications for $sessionId: $requests. Pending requests: ${!requestQueue.isEmpty}") + // Resolving the events in parallel should improve performance since each session id will query a different Client + launch { + // No need for a Mutex since the SDK already has one internally + val notifications = notifiableEventResolver.resolveEvents(sessionId, requests).getOrNull().orEmpty() + (results as MutableSharedFlow).emit(requests to notifications) + } + } + } + } +} + +data class NotificationEventRequest( + val sessionId: SessionId, + val roomId: RoomId, + val eventId: EventId, + val providerInfo: String, +) diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/model/ResolvedPushEvent.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/model/ResolvedPushEvent.kt index 48e2af6e98..2363e38e1d 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/model/ResolvedPushEvent.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/model/ResolvedPushEvent.kt @@ -12,12 +12,22 @@ import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.SessionId sealed interface ResolvedPushEvent { - data class Event(val notifiableEvent: NotifiableEvent) : ResolvedPushEvent + val sessionId: SessionId + val roomId: RoomId + val eventId: EventId + + data class Event(val notifiableEvent: NotifiableEvent) : ResolvedPushEvent { + override val sessionId: SessionId = notifiableEvent.sessionId + override val roomId: RoomId = notifiableEvent.roomId + override val eventId: EventId = notifiableEvent.eventId + } data class Redaction( - val sessionId: SessionId, - val roomId: RoomId, + override val sessionId: SessionId, + override val roomId: RoomId, val redactedEventId: EventId, val reason: String?, - ) : ResolvedPushEvent + ) : ResolvedPushEvent { + override val eventId: EventId = redactedEventId + } } diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/push/DefaultPushHandler.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/push/DefaultPushHandler.kt index f6b6ace866..19b060d36b 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/push/DefaultPushHandler.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/push/DefaultPushHandler.kt @@ -13,6 +13,7 @@ import io.element.android.features.call.api.ElementCallEntryPoint import io.element.android.libraries.core.log.logger.LoggerTag import io.element.android.libraries.core.meta.BuildMeta import io.element.android.libraries.di.AppScope +import io.element.android.libraries.di.SingleIn import io.element.android.libraries.matrix.api.auth.MatrixAuthenticationService import io.element.android.libraries.push.impl.history.PushHistoryService import io.element.android.libraries.push.impl.history.onDiagnosticPush @@ -20,8 +21,10 @@ import io.element.android.libraries.push.impl.history.onInvalidPushReceived import io.element.android.libraries.push.impl.history.onSuccess import io.element.android.libraries.push.impl.history.onUnableToResolveEvent import io.element.android.libraries.push.impl.history.onUnableToRetrieveSession -import io.element.android.libraries.push.impl.notifications.NotifiableEventResolver +import io.element.android.libraries.push.impl.notifications.NotificationEventRequest +import io.element.android.libraries.push.impl.notifications.NotificationResolverQueue import io.element.android.libraries.push.impl.notifications.channels.NotificationChannels +import io.element.android.libraries.push.impl.notifications.model.NotifiableEvent import io.element.android.libraries.push.impl.notifications.model.NotifiableRingingCallEvent import io.element.android.libraries.push.impl.notifications.model.ResolvedPushEvent import io.element.android.libraries.push.impl.test.DefaultTestPush @@ -30,17 +33,21 @@ import io.element.android.libraries.pushproviders.api.PushData import io.element.android.libraries.pushproviders.api.PushHandler import io.element.android.libraries.pushstore.api.UserPushStoreFactory import io.element.android.libraries.pushstore.api.clientsecret.PushClientSecret +import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.first +import kotlinx.coroutines.flow.launchIn +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.launch import timber.log.Timber import javax.inject.Inject private val loggerTag = LoggerTag("PushHandler", LoggerTag.PushLoggerTag) +@SingleIn(AppScope::class) @ContributesBinding(AppScope::class) class DefaultPushHandler @Inject constructor( private val onNotifiableEventReceived: OnNotifiableEventReceived, private val onRedactedEventReceived: OnRedactedEventReceived, - private val notifiableEventResolver: NotifiableEventResolver, private val incrementPushDataStore: IncrementPushDataStore, private val userPushStoreFactory: UserPushStoreFactory, private val pushClientSecret: PushClientSecret, @@ -50,7 +57,85 @@ class DefaultPushHandler @Inject constructor( private val elementCallEntryPoint: ElementCallEntryPoint, private val notificationChannels: NotificationChannels, private val pushHistoryService: PushHistoryService, + private val resolverQueue: NotificationResolverQueue, + private val appCoroutineScope: CoroutineScope, ) : PushHandler { + init { + processPushEventResults() + } + + /** + * Process the push notification event results emitted by the [resolverQueue]. + */ + private fun processPushEventResults() { + resolverQueue.results + .map { (requests, resolvedEvents) -> + for (request in requests) { + // Log the result of the push notification event + val result = resolvedEvents[request] + if (result?.isSuccess == true) { + pushHistoryService.onSuccess( + providerInfo = request.providerInfo, + eventId = request.eventId, + roomId = request.roomId, + sessionId = request.sessionId, + comment = "Push handled successfully", + ) + } else { + pushHistoryService.onUnableToResolveEvent( + providerInfo = request.providerInfo, + eventId = request.eventId, + roomId = request.roomId, + sessionId = request.sessionId, + reason = "Push not handled", + ) + } + } + + val events = mutableListOf() + val redactions = mutableListOf() + + @Suppress("LoopWithTooManyJumpStatements") + for (result in resolvedEvents.values) { + val event = result.getOrNull() ?: continue + val userPushStore = userPushStoreFactory.getOrCreate(event.sessionId) + val areNotificationsEnabled = userPushStore.getNotificationEnabledForDevice().first() + // If notifications are disabled for this session and device, we don't want to show the notification + // But if it's a ringing call, we want to show it anyway + val isRingingCall = (event as? ResolvedPushEvent.Event)?.notifiableEvent is NotifiableRingingCallEvent + if (!areNotificationsEnabled && !isRingingCall) continue + + // We categorise each result into either a NotifiableEvent or a Redaction + when (event) { + is ResolvedPushEvent.Event -> { + events.add(event.notifiableEvent) + } + is ResolvedPushEvent.Redaction -> { + redactions.add(event) + } + } + } + + // Process redactions of messages + if (redactions.isNotEmpty()) { + onRedactedEventReceived.onRedactedEventsReceived(redactions) + } + + // Find and process ringing call notifications separately + val (ringingCallEvents, nonRingingCallEvents) = events.partition { it is NotifiableRingingCallEvent } + for (ringingCallEvent in ringingCallEvents) { + Timber.tag(loggerTag.value).d("Ringing call event: $ringingCallEvent") + handleRingingCallEvent(ringingCallEvent as NotifiableRingingCallEvent) + } + + // Finally, process other notifications (messages, invites, generic notifications, etc.) + if (nonRingingCallEvents.isNotEmpty()) { + onNotifiableEventReceived.onNotifiableEventsReceived(nonRingingCallEvents) + } + } + .launchIn(appCoroutineScope) + } + /** * Called when message is received. * @@ -119,52 +204,17 @@ class DefaultPushHandler @Inject constructor( ) return } - notifiableEventResolver.resolveEvent(userId, pushData.roomId, pushData.eventId).fold( - onSuccess = { resolvedPushEvent -> - pushHistoryService.onSuccess( - providerInfo = providerInfo, - eventId = pushData.eventId, - roomId = pushData.roomId, - sessionId = userId, - comment = resolvedPushEvent.javaClass.simpleName, - ) - when (resolvedPushEvent) { - is ResolvedPushEvent.Event -> { - when (val notifiableEvent = resolvedPushEvent.notifiableEvent) { - is NotifiableRingingCallEvent -> { - Timber.tag(loggerTag.value).d("Notifiable event ${pushData.eventId} is ringing call: $notifiableEvent") - onNotifiableEventReceived.onNotifiableEventReceived(notifiableEvent) - handleRingingCallEvent(notifiableEvent) - } - else -> { - Timber.tag(loggerTag.value).d("Notifiable event ${pushData.eventId} is normal event: $notifiableEvent") - val userPushStore = userPushStoreFactory.getOrCreate(userId) - val areNotificationsEnabled = userPushStore.getNotificationEnabledForDevice().first() - if (areNotificationsEnabled) { - onNotifiableEventReceived.onNotifiableEventReceived(notifiableEvent) - } else { - Timber.tag(loggerTag.value).i("Notification are disabled for this device, ignore push.") - } - } - } - } - is ResolvedPushEvent.Redaction -> { - onRedactedEventReceived.onRedactedEventReceived(resolvedPushEvent) - } - } - }, - onFailure = { failure -> - Timber.tag(loggerTag.value).w(failure, "Unable to get a notification data") - pushHistoryService.onUnableToResolveEvent( - providerInfo = providerInfo, - eventId = pushData.eventId, - roomId = pushData.roomId, - sessionId = userId, - reason = failure.message ?: failure.javaClass.simpleName, - ) - } - ) + appCoroutineScope.launch { + val notificationEventRequest = NotificationEventRequest( + sessionId = userId, + roomId = pushData.roomId, + eventId = pushData.eventId, + providerInfo = providerInfo, + ) + Timber.d("Queueing notification: $notificationEventRequest") + resolverQueue.enqueue(notificationEventRequest) + } } catch (e: Exception) { Timber.tag(loggerTag.value).e(e, "## handleInternal() failed") } diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/push/OnNotifiableEventReceived.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/push/OnNotifiableEventReceived.kt index 7269dbcff7..14cb3d8ac6 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/push/OnNotifiableEventReceived.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/push/OnNotifiableEventReceived.kt @@ -17,7 +17,7 @@ import kotlinx.coroutines.launch import javax.inject.Inject interface OnNotifiableEventReceived { - fun onNotifiableEventReceived(notifiableEvent: NotifiableEvent) + fun onNotifiableEventsReceived(notifiableEvents: List) } @ContributesBinding(AppScope::class) @@ -26,12 +26,10 @@ class DefaultOnNotifiableEventReceived @Inject constructor( private val coroutineScope: CoroutineScope, private val syncOnNotifiableEvent: SyncOnNotifiableEvent, ) : OnNotifiableEventReceived { - override fun onNotifiableEventReceived(notifiableEvent: NotifiableEvent) { + override fun onNotifiableEventsReceived(notifiableEvents: List) { coroutineScope.launch { - launch { syncOnNotifiableEvent(notifiableEvent) } - if (notifiableEvent !is NotifiableRingingCallEvent) { - defaultNotificationDrawerManager.onNotifiableEventReceived(notifiableEvent) - } + launch { syncOnNotifiableEvent(notifiableEvents) } + defaultNotificationDrawerManager.onNotifiableEventsReceived(notifiableEvents.filter { it !is NotifiableRingingCallEvent }) } } } diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/push/OnRedactedEventReceived.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/push/OnRedactedEventReceived.kt index bf452bd3b7..8cf77b1898 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/push/OnRedactedEventReceived.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/push/OnRedactedEventReceived.kt @@ -29,7 +29,7 @@ import timber.log.Timber import javax.inject.Inject interface OnRedactedEventReceived { - fun onRedactedEventReceived(redaction: ResolvedPushEvent.Redaction) + fun onRedactedEventsReceived(redactions: List) } @ContributesBinding(AppScope::class) @@ -40,48 +40,54 @@ class DefaultOnRedactedEventReceived @Inject constructor( @ApplicationContext private val context: Context, private val stringProvider: StringProvider, ) : OnRedactedEventReceived { - override fun onRedactedEventReceived(redaction: ResolvedPushEvent.Redaction) { + override fun onRedactedEventsReceived(redactions: List) { coroutineScope.launch { - val notifications = activeNotificationsProvider.getMessageNotificationsForRoom( - redaction.sessionId, - redaction.roomId, - ) - if (notifications.isEmpty()) { - Timber.d("No notifications found for redacted event") + val redactionsBySessionIdAndRoom = redactions.groupBy { redaction -> + redaction.sessionId to redaction.roomId } - notifications.forEach { statusBarNotification -> - val notification = statusBarNotification.notification - val messagingStyle = MessagingStyle.extractMessagingStyleFromNotification(notification) - if (messagingStyle == null) { - Timber.w("Unable to retrieve messaging style from notification") - return@forEach + for ((keys, roomRedactions) in redactionsBySessionIdAndRoom) { + val (sessionId, roomId) = keys + val notifications = activeNotificationsProvider.getMessageNotificationsForRoom( + sessionId, + roomId, + ) + if (notifications.isEmpty()) { + Timber.d("No notifications found for redacted event") } - val messageToRedactIndex = messagingStyle.messages.indexOfFirst { message -> - message.extras.getString(DefaultNotificationCreator.MESSAGE_EVENT_ID) == redaction.redactedEventId.value - } - if (messageToRedactIndex == -1) { - Timber.d("Unable to find the message to remove from notification") - return@forEach - } - val oldMessage = messagingStyle.messages[messageToRedactIndex] - val content = buildSpannedString { - inSpans(StyleSpan(Typeface.ITALIC)) { - append(stringProvider.getString(CommonStrings.common_message_removed)) + notifications.forEach { statusBarNotification -> + val notification = statusBarNotification.notification + val messagingStyle = MessagingStyle.extractMessagingStyleFromNotification(notification) + if (messagingStyle == null) { + Timber.w("Unable to retrieve messaging style from notification") + return@forEach } + val messageToRedactIndex = messagingStyle.messages.indexOfFirst { message -> + roomRedactions.any { it.redactedEventId.value == message.extras.getString(DefaultNotificationCreator.MESSAGE_EVENT_ID) } + } + if (messageToRedactIndex == -1) { + Timber.d("Unable to find the message to remove from notification") + return@forEach + } + val oldMessage = messagingStyle.messages[messageToRedactIndex] + val content = buildSpannedString { + inSpans(StyleSpan(Typeface.ITALIC)) { + append(stringProvider.getString(CommonStrings.common_message_removed)) + } + } + val newMessage = MessagingStyle.Message( + content, + oldMessage.timestamp, + oldMessage.person + ) + messagingStyle.messages[messageToRedactIndex] = newMessage + notificationDisplayer.showNotificationMessage( + statusBarNotification.tag, + statusBarNotification.id, + NotificationCompat.Builder(context, notification) + .setStyle(messagingStyle) + .build() + ) } - val newMessage = MessagingStyle.Message( - content, - oldMessage.timestamp, - oldMessage.person - ) - messagingStyle.messages[messageToRedactIndex] = newMessage - notificationDisplayer.showNotificationMessage( - statusBarNotification.tag, - statusBarNotification.id, - NotificationCompat.Builder(context, notification) - .setStyle(messagingStyle) - .build() - ) } } } diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/push/SyncOnNotifiableEvent.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/push/SyncOnNotifiableEvent.kt index 23cad2aba9..961b5ebf9d 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/push/SyncOnNotifiableEvent.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/push/SyncOnNotifiableEvent.kt @@ -8,15 +8,14 @@ package io.element.android.libraries.push.impl.push import io.element.android.libraries.core.coroutine.CoroutineDispatchers +import io.element.android.libraries.core.coroutine.parallelMap import io.element.android.libraries.featureflag.api.FeatureFlagService import io.element.android.libraries.featureflag.api.FeatureFlags import io.element.android.libraries.matrix.api.MatrixClientProvider import io.element.android.libraries.matrix.api.core.EventId -import io.element.android.libraries.matrix.api.room.BaseRoom import io.element.android.libraries.matrix.api.room.JoinedRoom import io.element.android.libraries.matrix.api.timeline.MatrixTimelineItem import io.element.android.libraries.push.impl.notifications.model.NotifiableEvent -import io.element.android.libraries.push.impl.notifications.model.NotifiableRingingCallEvent import io.element.android.services.appnavstate.api.ActiveRoomsHolder import io.element.android.services.appnavstate.api.AppForegroundStateService import kotlinx.coroutines.flow.first @@ -33,55 +32,42 @@ class SyncOnNotifiableEvent @Inject constructor( private val dispatchers: CoroutineDispatchers, private val activeRoomsHolder: ActiveRoomsHolder, ) { - suspend operator fun invoke(notifiableEvent: NotifiableEvent) = withContext(dispatchers.io) { - val isRingingCallEvent = notifiableEvent is NotifiableRingingCallEvent - if (!featureFlagService.isFeatureEnabled(FeatureFlags.SyncOnPush) && !isRingingCallEvent) { + suspend operator fun invoke(notifiableEvents: List) = withContext(dispatchers.io) { + if (!featureFlagService.isFeatureEnabled(FeatureFlags.SyncOnPush)) { return@withContext } - val activeRoom = activeRoomsHolder.getActiveRoomMatching(notifiableEvent.sessionId, notifiableEvent.roomId) + try { + val eventsBySession = notifiableEvents.groupBy { it.sessionId } - if (activeRoom != null) { - // If the room is already active, we can use it directly - activeRoom.subscribeToSyncAndWait(notifiableEvent, isRingingCallEvent) - } else { - // Otherwise, we need to get the room from the matrix client - val room = matrixClientProvider - .getOrRestore(notifiableEvent.sessionId) - .mapCatching { it.getJoinedRoom(notifiableEvent.roomId) } - .getOrNull() + appForegroundStateService.updateIsSyncingNotificationEvent(true) - room?.use { it.subscribeToSyncAndWait(notifiableEvent, isRingingCallEvent) } - } - } + for ((sessionId, events) in eventsBySession) { + val client = matrixClientProvider.getOrRestore(sessionId).getOrNull() ?: continue + val eventsByRoomId = events.groupBy { it.roomId } - private suspend fun JoinedRoom.subscribeToSyncAndWait(notifiableEvent: NotifiableEvent, isRingingCallEvent: Boolean) { - subscribeToSync() + client.roomListService.subscribeToVisibleRooms(eventsByRoomId.keys.toList()) - // If the app is in foreground, sync is already running, so we just add the subscription above. - if (!appForegroundStateService.isInForeground.value) { - if (isRingingCallEvent) { - waitsUntilUserIsInTheCall(timeout = 60.seconds) - } else { - try { - appForegroundStateService.updateIsSyncingNotificationEvent(true) - waitsUntilEventIsKnown(eventId = notifiableEvent.eventId, timeout = 10.seconds) - } finally { - appForegroundStateService.updateIsSyncingNotificationEvent(false) + if (!appForegroundStateService.isInForeground.value) { + for ((roomId, eventsInRoom) in eventsByRoomId) { + val activeRoom = activeRoomsHolder.getActiveRoomMatching(sessionId, roomId) + val room = activeRoom ?: client.getJoinedRoom(roomId) + + if (room != null) { + eventsInRoom.parallelMap { event -> + room.waitsUntilEventIsKnown(event.eventId, timeout = 10.seconds) + } + } + + if (room != null && activeRoom == null) { + // Destroy the room we just instantiated to reset its live timeline + room.destroy() + } + } } } - } - } - - /** - * User can be in the call if they answer using another session. - * If the user does not join the call, the timeout will be reached. - */ - private suspend fun BaseRoom.waitsUntilUserIsInTheCall(timeout: Duration) { - withTimeoutOrNull(timeout) { - roomInfoFlow.first { - sessionId in it.activeRoomCallParticipants - } + } finally { + appForegroundStateService.updateIsSyncingNotificationEvent(false) } } diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotifiableEventResolverTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotifiableEventResolverTest.kt index cf9244166d..2ba00156c7 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotifiableEventResolverTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotifiableEventResolverTest.kt @@ -9,6 +9,7 @@ package io.element.android.libraries.push.impl.notifications import android.content.Context import com.google.common.truth.Truth.assertThat +import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.media.MediaSource import io.element.android.libraries.matrix.api.notification.CallNotifyType import io.element.android.libraries.matrix.api.notification.NotificationContent @@ -67,7 +68,7 @@ class DefaultNotifiableEventResolverTest { @Test fun `resolve event no session`() = runTest { val sut = createDefaultNotifiableEventResolver(notificationService = null) - val result = sut.resolveEvent(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID) + val result = sut.resolveEvents(A_SESSION_ID, listOf(NotificationEventRequest(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID, "firebase"))) assertThat(result.isFailure).isTrue() } @@ -76,36 +77,31 @@ class DefaultNotifiableEventResolverTest { val sut = createDefaultNotifiableEventResolver( notificationResult = Result.failure(AN_EXCEPTION) ) - val result = sut.resolveEvent(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID) - assertThat(result.isFailure).isTrue() - } - - @Test - fun `resolve event null`() = runTest { - val sut = createDefaultNotifiableEventResolver( - notificationResult = Result.success(null) - ) - val result = sut.resolveEvent(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID) - assertThat(result.isFailure).isTrue() + val request = NotificationEventRequest(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID, "firebase") + val result = sut.resolveEvents(A_SESSION_ID, listOf(request)) + assertThat(result.getEvent(request)?.isFailure).isTrue() } @Test fun `resolve event message text`() = runTest { val sut = createDefaultNotifiableEventResolver( notificationResult = Result.success( - aNotificationData( - content = NotificationContent.MessageLike.RoomMessage( - senderId = A_USER_ID_2, - messageType = TextMessageType(body = "Hello world", formatted = null) - ), + mapOf( + AN_EVENT_ID to aNotificationData( + content = NotificationContent.MessageLike.RoomMessage( + senderId = A_USER_ID_2, + messageType = TextMessageType(body = "Hello world", formatted = null) + ), + ) ) ) ) - val result = sut.resolveEvent(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID) + val request = NotificationEventRequest(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID, "firebase") + val result = sut.resolveEvents(A_SESSION_ID, listOf(request)) val expectedResult = ResolvedPushEvent.Event( aNotifiableMessageEvent(body = "Hello world") ) - assertThat(result.getOrNull()).isEqualTo(expectedResult) + assertThat(result.getEvent(request)).isEqualTo(Result.success(expectedResult)) } @Test @@ -113,292 +109,337 @@ class DefaultNotifiableEventResolverTest { fun `resolve event message with mention`() = runTest { val sut = createDefaultNotifiableEventResolver( notificationResult = Result.success( - aNotificationData( - content = NotificationContent.MessageLike.RoomMessage( - senderId = A_USER_ID_2, - messageType = TextMessageType(body = "Hello world", formatted = null) - ), - hasMention = true, + mapOf( + AN_EVENT_ID to aNotificationData( + content = NotificationContent.MessageLike.RoomMessage( + senderId = A_USER_ID_2, + messageType = TextMessageType(body = "Hello world", formatted = null) + ), + hasMention = true, + ) ) ) ) - val result = sut.resolveEvent(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID) + val request = NotificationEventRequest(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID, "firebase") + val result = sut.resolveEvents(A_SESSION_ID, listOf(request)) val expectedResult = ResolvedPushEvent.Event( aNotifiableMessageEvent(body = "Hello world", hasMentionOrReply = true) ) - assertThat(result.getOrNull()).isEqualTo(expectedResult) + assertThat(result.getEvent(request)).isEqualTo(Result.success(expectedResult)) } @Test fun `resolve HTML formatted event message text takes plain text version`() = runTest { val sut = createDefaultNotifiableEventResolver( notificationResult = Result.success( - aNotificationData( - content = NotificationContent.MessageLike.RoomMessage( - senderId = A_USER_ID_2, - messageType = TextMessageType( - body = "Hello world!", - formatted = FormattedBody( - body = "Hello world", - format = MessageFormat.HTML, + mapOf( + AN_EVENT_ID to aNotificationData( + content = NotificationContent.MessageLike.RoomMessage( + senderId = A_USER_ID_2, + messageType = TextMessageType( + body = "Hello world!", + formatted = FormattedBody( + body = "Hello world", + format = MessageFormat.HTML, + ) ) - ) - ), + ), + ) ) ) ) - val result = sut.resolveEvent(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID) + val request = NotificationEventRequest(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID, "firebase") + val result = sut.resolveEvents(A_SESSION_ID, listOf(request)) val expectedResult = ResolvedPushEvent.Event( aNotifiableMessageEvent(body = "Hello world") ) - assertThat(result.getOrNull()).isEqualTo(expectedResult) + assertThat(result.getEvent(request)).isEqualTo(Result.success(expectedResult)) } @Test fun `resolve incorrectly formatted event message text uses fallback`() = runTest { val sut = createDefaultNotifiableEventResolver( notificationResult = Result.success( - aNotificationData( - content = NotificationContent.MessageLike.RoomMessage( - senderId = A_USER_ID_2, - messageType = TextMessageType( - body = "Hello world", - formatted = FormattedBody( - body = "???Hello world!???", - format = MessageFormat.UNKNOWN, + mapOf( + AN_EVENT_ID to aNotificationData( + content = NotificationContent.MessageLike.RoomMessage( + senderId = A_USER_ID_2, + messageType = TextMessageType( + body = "Hello world", + formatted = FormattedBody( + body = "???Hello world!???", + format = MessageFormat.UNKNOWN, + ) ) - ) - ), + ), + ) ) ) ) - val result = sut.resolveEvent(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID) + val request = NotificationEventRequest(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID, "firebase") + val result = sut.resolveEvents(A_SESSION_ID, listOf(request)) val expectedResult = ResolvedPushEvent.Event( aNotifiableMessageEvent(body = "Hello world") ) - assertThat(result.getOrNull()).isEqualTo(expectedResult) + assertThat(result.getEvent(request)).isEqualTo(Result.success(expectedResult)) } @Test fun `resolve event message audio`() = runTest { val sut = createDefaultNotifiableEventResolver( notificationResult = Result.success( - aNotificationData( - content = NotificationContent.MessageLike.RoomMessage( - senderId = A_USER_ID_2, - messageType = AudioMessageType("Audio", null, null, MediaSource("url"), null) - ), + mapOf( + AN_EVENT_ID to aNotificationData( + content = NotificationContent.MessageLike.RoomMessage( + senderId = A_USER_ID_2, + messageType = AudioMessageType("Audio", null, null, MediaSource("url"), null) + ), + ) ) ) ) - val result = sut.resolveEvent(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID) + val request = NotificationEventRequest(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID, "firebase") + val result = sut.resolveEvents(A_SESSION_ID, listOf(request)) val expectedResult = ResolvedPushEvent.Event( aNotifiableMessageEvent(body = "Audio") ) - assertThat(result.getOrNull()).isEqualTo(expectedResult) + assertThat(result.getEvent(request)).isEqualTo(Result.success(expectedResult)) } @Test fun `resolve event message video`() = runTest { val sut = createDefaultNotifiableEventResolver( notificationResult = Result.success( - aNotificationData( - content = NotificationContent.MessageLike.RoomMessage( - senderId = A_USER_ID_2, - messageType = VideoMessageType("Video", null, null, MediaSource("url"), null) - ), + mapOf( + AN_EVENT_ID to aNotificationData( + content = NotificationContent.MessageLike.RoomMessage( + senderId = A_USER_ID_2, + messageType = VideoMessageType("Video", null, null, MediaSource("url"), null) + ), + ) ) ) ) - val result = sut.resolveEvent(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID) + val request = NotificationEventRequest(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID, "firebase") + val result = sut.resolveEvents(A_SESSION_ID, listOf(request)) val expectedResult = ResolvedPushEvent.Event( aNotifiableMessageEvent(body = "Video") ) - assertThat(result.getOrNull()).isEqualTo(expectedResult) + assertThat(result.getEvent(request)).isEqualTo(Result.success(expectedResult)) } @Test fun `resolve event message voice`() = runTest { val sut = createDefaultNotifiableEventResolver( notificationResult = Result.success( - aNotificationData( - content = NotificationContent.MessageLike.RoomMessage( - senderId = A_USER_ID_2, - messageType = VoiceMessageType("Voice", null, null, MediaSource("url"), null, null) - ), + mapOf( + AN_EVENT_ID to aNotificationData( + content = NotificationContent.MessageLike.RoomMessage( + senderId = A_USER_ID_2, + messageType = VoiceMessageType("Voice", null, null, MediaSource("url"), null, null) + ), + ) ) ) ) - val result = sut.resolveEvent(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID) + val request = NotificationEventRequest(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID, "firebase") + val result = sut.resolveEvents(A_SESSION_ID, listOf(request)) val expectedResult = ResolvedPushEvent.Event( aNotifiableMessageEvent(body = "Voice message") ) - assertThat(result.getOrNull()).isEqualTo(expectedResult) + assertThat(result.getEvent(request)).isEqualTo(Result.success(expectedResult)) } @Test fun `resolve event message image`() = runTest { val sut = createDefaultNotifiableEventResolver( notificationResult = Result.success( - aNotificationData( - content = NotificationContent.MessageLike.RoomMessage( - senderId = A_USER_ID_2, - messageType = ImageMessageType("Image", null, null, MediaSource("url"), null), - ), + mapOf( + AN_EVENT_ID to aNotificationData( + content = NotificationContent.MessageLike.RoomMessage( + senderId = A_USER_ID_2, + messageType = ImageMessageType("Image", null, null, MediaSource("url"), null), + ), + ) ) ) ) - val result = sut.resolveEvent(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID) + val request = NotificationEventRequest(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID, "firebase") + val result = sut.resolveEvents(A_SESSION_ID, listOf(request)) val expectedResult = ResolvedPushEvent.Event( aNotifiableMessageEvent(body = "Image") ) - assertThat(result.getOrNull()).isEqualTo(expectedResult) + assertThat(result.getEvent(request)).isEqualTo(Result.success(expectedResult)) } @Test fun `resolve event message sticker`() = runTest { val sut = createDefaultNotifiableEventResolver( notificationResult = Result.success( - aNotificationData( - content = NotificationContent.MessageLike.RoomMessage( - senderId = A_USER_ID_2, - messageType = StickerMessageType("Sticker", null, null, MediaSource("url"), null), - ), + mapOf( + AN_EVENT_ID to aNotificationData( + content = NotificationContent.MessageLike.RoomMessage( + senderId = A_USER_ID_2, + messageType = StickerMessageType("Sticker", null, null, MediaSource("url"), null), + ), + ) ) ) ) - val result = sut.resolveEvent(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID) + val request = NotificationEventRequest(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID, "firebase") + val result = sut.resolveEvents(A_SESSION_ID, listOf(request)) val expectedResult = ResolvedPushEvent.Event( aNotifiableMessageEvent(body = "Sticker") ) - assertThat(result.getOrNull()).isEqualTo(expectedResult) + assertThat(result.getEvent(request)).isEqualTo(Result.success(expectedResult)) } @Test fun `resolve event message file`() = runTest { val sut = createDefaultNotifiableEventResolver( notificationResult = Result.success( - aNotificationData( - content = NotificationContent.MessageLike.RoomMessage( - senderId = A_USER_ID_2, - messageType = FileMessageType("File", null, null, MediaSource("url"), null), - ), + mapOf( + AN_EVENT_ID to aNotificationData( + content = NotificationContent.MessageLike.RoomMessage( + senderId = A_USER_ID_2, + messageType = FileMessageType("File", null, null, MediaSource("url"), null), + ), + ) ) ) ) - val result = sut.resolveEvent(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID) + val request = NotificationEventRequest(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID, "firebase") + val result = sut.resolveEvents(A_SESSION_ID, listOf(request)) val expectedResult = ResolvedPushEvent.Event( aNotifiableMessageEvent(body = "File") ) - assertThat(result.getOrNull()).isEqualTo(expectedResult) + assertThat(result.getEvent(request)).isEqualTo(Result.success(expectedResult)) } @Test fun `resolve event message location`() = runTest { val sut = createDefaultNotifiableEventResolver( notificationResult = Result.success( - aNotificationData( - content = NotificationContent.MessageLike.RoomMessage( - senderId = A_USER_ID_2, - messageType = LocationMessageType("Location", "geo:1,2", null), - ), + mapOf( + AN_EVENT_ID to aNotificationData( + content = NotificationContent.MessageLike.RoomMessage( + senderId = A_USER_ID_2, + messageType = LocationMessageType("Location", "geo:1,2", null), + ), + ) ) ) ) - val result = sut.resolveEvent(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID) + val request = NotificationEventRequest(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID, "firebase") + val result = sut.resolveEvents(A_SESSION_ID, listOf(request)) val expectedResult = ResolvedPushEvent.Event( aNotifiableMessageEvent(body = "Location") ) - assertThat(result.getOrNull()).isEqualTo(expectedResult) + assertThat(result.getEvent(request)).isEqualTo(Result.success(expectedResult)) } @Test fun `resolve event message notice`() = runTest { val sut = createDefaultNotifiableEventResolver( notificationResult = Result.success( - aNotificationData( - content = NotificationContent.MessageLike.RoomMessage( - senderId = A_USER_ID_2, - messageType = NoticeMessageType("Notice", null), - ), + mapOf( + AN_EVENT_ID to aNotificationData( + content = NotificationContent.MessageLike.RoomMessage( + senderId = A_USER_ID_2, + messageType = NoticeMessageType("Notice", null), + ), + ) ) ) ) - val result = sut.resolveEvent(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID) + val request = NotificationEventRequest(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID, "firebase") + val result = sut.resolveEvents(A_SESSION_ID, listOf(request)) val expectedResult = ResolvedPushEvent.Event( aNotifiableMessageEvent(body = "Notice") ) - assertThat(result.getOrNull()).isEqualTo(expectedResult) + assertThat(result.getEvent(request)).isEqualTo(Result.success(expectedResult)) } @Test fun `resolve event message emote`() = runTest { val sut = createDefaultNotifiableEventResolver( notificationResult = Result.success( - aNotificationData( - content = NotificationContent.MessageLike.RoomMessage( - senderId = A_USER_ID_2, - messageType = EmoteMessageType("is happy", null), - ), + mapOf( + AN_EVENT_ID to aNotificationData( + content = NotificationContent.MessageLike.RoomMessage( + senderId = A_USER_ID_2, + messageType = EmoteMessageType("is happy", null), + ), + ) ) ) ) - val result = sut.resolveEvent(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID) + val request = NotificationEventRequest(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID, "firebase") + val result = sut.resolveEvents(A_SESSION_ID, listOf(request)) val expectedResult = ResolvedPushEvent.Event( aNotifiableMessageEvent(body = "* Bob is happy") ) - assertThat(result.getOrNull()).isEqualTo(expectedResult) + assertThat(result.getEvent(request)).isEqualTo(Result.success(expectedResult)) } @Test fun `resolve poll`() = runTest { val sut = createDefaultNotifiableEventResolver( notificationResult = Result.success( - aNotificationData( - content = NotificationContent.MessageLike.Poll( - senderId = A_USER_ID_2, - question = "A question" - ), + mapOf( + AN_EVENT_ID to aNotificationData( + content = NotificationContent.MessageLike.Poll( + senderId = A_USER_ID_2, + question = "A question" + ), + ) ) ) ) - val result = sut.resolveEvent(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID) + val request = NotificationEventRequest(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID, "firebase") + val result = sut.resolveEvents(A_SESSION_ID, listOf(request)) val expectedResult = ResolvedPushEvent.Event( aNotifiableMessageEvent(body = "Poll: A question") ) - assertThat(result.getOrNull()).isEqualTo(expectedResult) + assertThat(result.getEvent(request)).isEqualTo(Result.success(expectedResult)) } @Test fun `resolve RoomMemberContent invite room`() = runTest { val sut = createDefaultNotifiableEventResolver( notificationResult = Result.success( - aNotificationData( - content = NotificationContent.StateEvent.RoomMemberContent( - userId = A_USER_ID_2, - membershipState = RoomMembershipState.INVITE - ), - isDirect = false, + mapOf( + AN_EVENT_ID to aNotificationData( + content = NotificationContent.StateEvent.RoomMemberContent( + userId = A_USER_ID_2, + membershipState = RoomMembershipState.INVITE + ), + isDirect = false, + ) ) ) ) - val result = sut.resolveEvent(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID) - assertThat(result.getOrNull()).isNull() + val request = NotificationEventRequest(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID, "firebase") + val result = sut.resolveEvents(A_SESSION_ID, listOf(request)) + assertThat(result.getEvent(request)?.getOrNull()).isNull() } @Test fun `resolve invite room`() = runTest { val sut = createDefaultNotifiableEventResolver( notificationResult = Result.success( - aNotificationData( - content = NotificationContent.Invite( - senderId = A_USER_ID_2, - ), - isDirect = false, + mapOf( + AN_EVENT_ID to aNotificationData( + content = NotificationContent.Invite( + senderId = A_USER_ID_2, + ), + isDirect = false, + ) ) ) ) - val result = sut.resolveEvent(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID) + val request = NotificationEventRequest(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID, "firebase") + val result = sut.resolveEvents(A_SESSION_ID, listOf(request)) val expectedResult = ResolvedPushEvent.Event( InviteNotifiableEvent( sessionId = A_SESSION_ID, @@ -417,22 +458,25 @@ class DefaultNotifiableEventResolverTest { isUpdated = false, ) ) - assertThat(result.getOrNull()).isEqualTo(expectedResult) + assertThat(result.getEvent(request)).isEqualTo(Result.success(expectedResult)) } @Test fun `resolve invite direct`() = runTest { val sut = createDefaultNotifiableEventResolver( notificationResult = Result.success( - aNotificationData( - content = NotificationContent.Invite( - senderId = A_USER_ID_2, - ), - isDirect = true, + mapOf( + AN_EVENT_ID to aNotificationData( + content = NotificationContent.Invite( + senderId = A_USER_ID_2, + ), + isDirect = true, + ) ) ) ) - val result = sut.resolveEvent(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID) + val request = NotificationEventRequest(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID, "firebase") + val result = sut.resolveEvents(A_SESSION_ID, listOf(request)) val expectedResult = ResolvedPushEvent.Event( InviteNotifiableEvent( sessionId = A_SESSION_ID, @@ -451,23 +495,26 @@ class DefaultNotifiableEventResolverTest { isUpdated = false, ) ) - assertThat(result.getOrNull()).isEqualTo(expectedResult) + assertThat(result.getEvent(request)).isEqualTo(Result.success(expectedResult)) } @Test fun `resolve invite direct, no display name`() = runTest { val sut = createDefaultNotifiableEventResolver( notificationResult = Result.success( - aNotificationData( - content = NotificationContent.Invite( - senderId = A_USER_ID_2, - ), - isDirect = true, - senderDisplayName = null, + mapOf( + AN_EVENT_ID to aNotificationData( + content = NotificationContent.Invite( + senderId = A_USER_ID_2, + ), + isDirect = true, + senderDisplayName = null, + ) ) ) ) - val result = sut.resolveEvent(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID) + val request = NotificationEventRequest(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID, "firebase") + val result = sut.resolveEvents(A_SESSION_ID, listOf(request)) val expectedResult = ResolvedPushEvent.Event( InviteNotifiableEvent( sessionId = A_SESSION_ID, @@ -486,23 +533,26 @@ class DefaultNotifiableEventResolverTest { isUpdated = false, ) ) - assertThat(result.getOrNull()).isEqualTo(expectedResult) + assertThat(result.getEvent(request)).isEqualTo(Result.success(expectedResult)) } @Test fun `resolve invite direct, ambiguous display name`() = runTest { val sut = createDefaultNotifiableEventResolver( notificationResult = Result.success( - aNotificationData( - content = NotificationContent.Invite( - senderId = A_USER_ID_2, - ), - isDirect = false, - senderIsNameAmbiguous = true, + mapOf( + AN_EVENT_ID to aNotificationData( + content = NotificationContent.Invite( + senderId = A_USER_ID_2, + ), + isDirect = false, + senderIsNameAmbiguous = true, + ) ) ) ) - val result = sut.resolveEvent(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID) + val request = NotificationEventRequest(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID, "firebase") + val result = sut.resolveEvents(A_SESSION_ID, listOf(request)) val expectedResult = ResolvedPushEvent.Event( InviteNotifiableEvent( sessionId = A_SESSION_ID, @@ -521,35 +571,37 @@ class DefaultNotifiableEventResolverTest { isUpdated = false, ) ) - assertThat(result.getOrNull()).isEqualTo(expectedResult) + assertThat(result.getEvent(request)).isEqualTo(Result.success(expectedResult)) } @Test fun `resolve RoomMemberContent other`() = runTest { val sut = createDefaultNotifiableEventResolver( notificationResult = Result.success( - aNotificationData( - content = NotificationContent.StateEvent.RoomMemberContent( - userId = A_USER_ID_2, - membershipState = RoomMembershipState.JOIN + mapOf( + AN_EVENT_ID to aNotificationData( + content = NotificationContent.StateEvent.RoomMemberContent( + userId = A_USER_ID_2, + membershipState = RoomMembershipState.JOIN + ) ) ) ) ) - val result = sut.resolveEvent(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID) - assertThat(result.getOrNull()).isNull() + val request = NotificationEventRequest(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID, "firebase") + val result = sut.resolveEvents(A_SESSION_ID, listOf(request)) + assertThat(result.getEvent(request)?.getOrNull()).isNull() } @Test fun `resolve RoomEncrypted`() = runTest { val sut = createDefaultNotifiableEventResolver( notificationResult = Result.success( - aNotificationData( - content = NotificationContent.MessageLike.RoomEncrypted - ) + mapOf(AN_EVENT_ID to aNotificationData(content = NotificationContent.MessageLike.RoomEncrypted)) ) ) - val result = sut.resolveEvent(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID) + val request = NotificationEventRequest(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID, "firebase") + val result = sut.resolveEvents(A_SESSION_ID, listOf(request)) val expectedResult = ResolvedPushEvent.Event( FallbackNotifiableEvent( sessionId = A_SESSION_ID, @@ -563,19 +615,22 @@ class DefaultNotifiableEventResolverTest { timestamp = A_FAKE_TIMESTAMP, ) ) - assertThat(result.getOrNull()).isEqualTo(expectedResult) + assertThat(result.getEvent(request)).isEqualTo(Result.success(expectedResult)) } @Test fun `resolve CallInvite`() = runTest { val sut = createDefaultNotifiableEventResolver( notificationResult = Result.success( - aNotificationData( - content = NotificationContent.MessageLike.CallInvite(A_USER_ID_2), + mapOf( + AN_EVENT_ID to aNotificationData( + content = NotificationContent.MessageLike.CallInvite(A_USER_ID_2), + ) ) ) ) - val result = sut.resolveEvent(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID) + val request = NotificationEventRequest(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID, "firebase") + val result = sut.resolveEvents(A_SESSION_ID, listOf(request)) val expectedResult = ResolvedPushEvent.Event( NotifiableMessageEvent( sessionId = A_SESSION_ID, @@ -601,7 +656,7 @@ class DefaultNotifiableEventResolverTest { isUpdated = false ) ) - assertThat(result.getOrNull()).isEqualTo(expectedResult) + assertThat(result.getEvent(request)).isEqualTo(Result.success(expectedResult)) } @Test @@ -609,11 +664,13 @@ class DefaultNotifiableEventResolverTest { val callNotificationEventResolver = FakeCallNotificationEventResolver() val sut = createDefaultNotifiableEventResolver( notificationResult = Result.success( - aNotificationData( - content = NotificationContent.MessageLike.CallNotify( - A_USER_ID_2, - CallNotifyType.NOTIFY - ), + mapOf( + AN_EVENT_ID to aNotificationData( + content = NotificationContent.MessageLike.CallNotify( + A_USER_ID_2, + CallNotifyType.NOTIFY + ), + ) ) ), callNotificationEventResolver = callNotificationEventResolver, @@ -639,18 +696,21 @@ class DefaultNotifiableEventResolverTest { ) ) callNotificationEventResolver.resolveEventLambda = { _, _, _ -> Result.success(expectedResult.notifiableEvent) } - val result = sut.resolveEvent(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID) - assertThat(result.getOrNull()).isEqualTo(expectedResult) + val request = NotificationEventRequest(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID, "firebase") + val result = sut.resolveEvents(A_SESSION_ID, listOf(request)) + assertThat(result.getEvent(request)).isEqualTo(Result.success(expectedResult)) } @Test fun `resolve RoomRedaction`() = runTest { val sut = createDefaultNotifiableEventResolver( notificationResult = Result.success( - aNotificationData( - content = NotificationContent.MessageLike.RoomRedaction( - AN_EVENT_ID_2, - A_REDACTION_REASON, + mapOf( + AN_EVENT_ID to aNotificationData( + content = NotificationContent.MessageLike.RoomRedaction( + AN_EVENT_ID_2, + A_REDACTION_REASON, + ) ) ) ) @@ -661,82 +721,91 @@ class DefaultNotifiableEventResolverTest { redactedEventId = AN_EVENT_ID_2, reason = A_REDACTION_REASON, ) - val result = sut.resolveEvent(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID) - assertThat(result.getOrNull()).isEqualTo(expectedResult) + val request = NotificationEventRequest(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID, "firebase") + val result = sut.resolveEvents(A_SESSION_ID, listOf(request)) + assertThat(result.getEvent(request)).isEqualTo(Result.success(expectedResult)) } @Test fun `resolve RoomRedaction with null redactedEventId should return null`() = runTest { val sut = createDefaultNotifiableEventResolver( notificationResult = Result.success( - aNotificationData( - content = NotificationContent.MessageLike.RoomRedaction( - null, - A_REDACTION_REASON, + mapOf( + AN_EVENT_ID to aNotificationData( + content = NotificationContent.MessageLike.RoomRedaction( + null, + A_REDACTION_REASON, + ) ) ) ) ) - val result = sut.resolveEvent(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID) - assertThat(result.isFailure).isTrue() + val request = NotificationEventRequest(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID, "firebase") + val result = sut.resolveEvents(A_SESSION_ID, listOf(request)) + assertThat(result.getEvent(request)?.getOrNull()).isNull() } @Test fun `resolve null cases`() { - testFailure(NotificationContent.MessageLike.CallAnswer) - testFailure(NotificationContent.MessageLike.CallHangup) - testFailure(NotificationContent.MessageLike.CallCandidates) - testFailure(NotificationContent.MessageLike.KeyVerificationReady) - testFailure(NotificationContent.MessageLike.KeyVerificationStart) - testFailure(NotificationContent.MessageLike.KeyVerificationCancel) - testFailure(NotificationContent.MessageLike.KeyVerificationAccept) - testFailure(NotificationContent.MessageLike.KeyVerificationKey) - testFailure(NotificationContent.MessageLike.KeyVerificationMac) - testFailure(NotificationContent.MessageLike.KeyVerificationDone) - testFailure(NotificationContent.MessageLike.ReactionContent(relatedEventId = AN_EVENT_ID_2.value)) - testFailure(NotificationContent.MessageLike.Sticker) - testFailure(NotificationContent.StateEvent.PolicyRuleRoom) - testFailure(NotificationContent.StateEvent.PolicyRuleServer) - testFailure(NotificationContent.StateEvent.PolicyRuleUser) - testFailure(NotificationContent.StateEvent.RoomAliases) - testFailure(NotificationContent.StateEvent.RoomAvatar) - testFailure(NotificationContent.StateEvent.RoomCanonicalAlias) - testFailure(NotificationContent.StateEvent.RoomCreate) - testFailure(NotificationContent.StateEvent.RoomEncryption) - testFailure(NotificationContent.StateEvent.RoomGuestAccess) - testFailure(NotificationContent.StateEvent.RoomHistoryVisibility) - testFailure(NotificationContent.StateEvent.RoomJoinRules) - testFailure(NotificationContent.StateEvent.RoomName) - testFailure(NotificationContent.StateEvent.RoomPinnedEvents) - testFailure(NotificationContent.StateEvent.RoomPowerLevels) - testFailure(NotificationContent.StateEvent.RoomServerAcl) - testFailure(NotificationContent.StateEvent.RoomThirdPartyInvite) - testFailure(NotificationContent.StateEvent.RoomTombstone) - testFailure(NotificationContent.StateEvent.RoomTopic("")) - testFailure(NotificationContent.StateEvent.SpaceChild) - testFailure(NotificationContent.StateEvent.SpaceParent) + testNoResults(NotificationContent.MessageLike.CallAnswer) + testNoResults(NotificationContent.MessageLike.CallHangup) + testNoResults(NotificationContent.MessageLike.CallCandidates) + testNoResults(NotificationContent.MessageLike.KeyVerificationReady) + testNoResults(NotificationContent.MessageLike.KeyVerificationStart) + testNoResults(NotificationContent.MessageLike.KeyVerificationCancel) + testNoResults(NotificationContent.MessageLike.KeyVerificationAccept) + testNoResults(NotificationContent.MessageLike.KeyVerificationKey) + testNoResults(NotificationContent.MessageLike.KeyVerificationMac) + testNoResults(NotificationContent.MessageLike.KeyVerificationDone) + testNoResults(NotificationContent.MessageLike.ReactionContent(relatedEventId = AN_EVENT_ID_2.value)) + testNoResults(NotificationContent.MessageLike.Sticker) + testNoResults(NotificationContent.StateEvent.PolicyRuleRoom) + testNoResults(NotificationContent.StateEvent.PolicyRuleServer) + testNoResults(NotificationContent.StateEvent.PolicyRuleUser) + testNoResults(NotificationContent.StateEvent.RoomAliases) + testNoResults(NotificationContent.StateEvent.RoomAvatar) + testNoResults(NotificationContent.StateEvent.RoomCanonicalAlias) + testNoResults(NotificationContent.StateEvent.RoomCreate) + testNoResults(NotificationContent.StateEvent.RoomEncryption) + testNoResults(NotificationContent.StateEvent.RoomGuestAccess) + testNoResults(NotificationContent.StateEvent.RoomHistoryVisibility) + testNoResults(NotificationContent.StateEvent.RoomJoinRules) + testNoResults(NotificationContent.StateEvent.RoomName) + testNoResults(NotificationContent.StateEvent.RoomPinnedEvents) + testNoResults(NotificationContent.StateEvent.RoomPowerLevels) + testNoResults(NotificationContent.StateEvent.RoomServerAcl) + testNoResults(NotificationContent.StateEvent.RoomThirdPartyInvite) + testNoResults(NotificationContent.StateEvent.RoomTombstone) + testNoResults(NotificationContent.StateEvent.RoomTopic("")) + testNoResults(NotificationContent.StateEvent.SpaceChild) + testNoResults(NotificationContent.StateEvent.SpaceParent) } - private fun testFailure(content: NotificationContent) = runTest { + private fun testNoResults(content: NotificationContent) = runTest { val sut = createDefaultNotifiableEventResolver( notificationResult = Result.success( - aNotificationData( - content = content - ) + mapOf(AN_EVENT_ID to aNotificationData(content = content)) ) ) - val result = sut.resolveEvent(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID) - assertThat(result.isFailure).isTrue() + val request = NotificationEventRequest(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID, "firebase") + val result = sut.resolveEvents(A_SESSION_ID, listOf(request)) + assertThat(result.getEvent(request)?.getOrNull()).isNull() + } + + private fun Result>>.getEvent( + request: NotificationEventRequest + ): Result? { + return getOrNull()?.get(request) } private fun createDefaultNotifiableEventResolver( notificationService: FakeNotificationService? = FakeNotificationService(), - notificationResult: Result = Result.success(null), + notificationResult: Result> = Result.success(emptyMap()), appPreferencesStore: AppPreferencesStore = InMemoryAppPreferencesStore(), callNotificationEventResolver: FakeCallNotificationEventResolver = FakeCallNotificationEventResolver(), ): DefaultNotifiableEventResolver { val context = RuntimeEnvironment.getApplication() as Context - notificationService?.givenGetNotificationResult(notificationResult) + notificationService?.givenGetNotificationsResult(notificationResult) val matrixClientProvider = FakeMatrixClientProvider(getClient = { if (notificationService == null) { Result.failure(IllegalStateException("Client not found")) diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultOnMissedCallNotificationHandlerTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultOnMissedCallNotificationHandlerTest.kt index 6a4cd52430..1dc21a7ebe 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultOnMissedCallNotificationHandlerTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultOnMissedCallNotificationHandlerTest.kt @@ -42,7 +42,9 @@ class DefaultOnMissedCallNotificationHandlerTest { // Create a fake matrix client provider that returns a fake matrix client with a fake notification service that returns a valid notification data val matrixClientProvider = FakeMatrixClientProvider(getClient = { val notificationService = FakeNotificationService().apply { - givenGetNotificationResult(Result.success(aNotificationData(senderDisplayName = A_USER_NAME, senderIsNameAmbiguous = false))) + givenGetNotificationsResult( + Result.success(mapOf(AN_EVENT_ID to aNotificationData(senderDisplayName = A_USER_NAME, senderIsNameAmbiguous = false))) + ) } Result.success(FakeMatrixClient(notificationService = notificationService)) }) diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/FakeNotifiableEventResolver.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/FakeNotifiableEventResolver.kt index 3e98f8f9e8..d38bc098a0 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/FakeNotifiableEventResolver.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/FakeNotifiableEventResolver.kt @@ -7,16 +7,18 @@ package io.element.android.libraries.push.impl.notifications -import io.element.android.libraries.matrix.api.core.EventId -import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.libraries.push.impl.notifications.model.ResolvedPushEvent import io.element.android.tests.testutils.lambda.lambdaError class FakeNotifiableEventResolver( - private val notifiableEventResult: (SessionId, RoomId, EventId) -> Result = { _, _, _ -> lambdaError() } + private val resolveEventsResult: (SessionId, List) -> Result>> = + { _, _ -> lambdaError() } ) : NotifiableEventResolver { - override suspend fun resolveEvent(sessionId: SessionId, roomId: RoomId, eventId: EventId): Result { - return notifiableEventResult(sessionId, roomId, eventId) + override suspend fun resolveEvents( + sessionId: SessionId, + notificationEventRequests: List + ): Result>> { + return resolveEventsResult(sessionId, notificationEventRequests) } } diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationBroadcastReceiverHandlerTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationBroadcastReceiverHandlerTest.kt index f86bd5fa70..ac53bace79 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationBroadcastReceiverHandlerTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationBroadcastReceiverHandlerTest.kt @@ -354,8 +354,8 @@ class NotificationBroadcastReceiverHandlerTest { ) ) } - val onNotifiableEventReceivedResult = lambdaRecorder { _ -> } - val onNotifiableEventReceived = FakeOnNotifiableEventReceived(onNotifiableEventReceivedResult = onNotifiableEventReceivedResult) + val onNotifiableEventsReceivedResult = lambdaRecorder, Unit> { _ -> } + val onNotifiableEventReceived = FakeOnNotifiableEventReceived(onNotifiableEventsReceivedResult = onNotifiableEventsReceivedResult) val sut = createNotificationBroadcastReceiverHandler( joinedRoom = joinedRoom, onNotifiableEventReceived = onNotifiableEventReceived, @@ -371,7 +371,7 @@ class NotificationBroadcastReceiverHandlerTest { sendMessage.assertions() .isCalledOnce() .with(value(A_MESSAGE), value(null), value(emptyList())) - onNotifiableEventReceivedResult.assertions() + onNotifiableEventsReceivedResult.assertions() .isCalledOnce() replyMessage.assertions() .isNeverCalled() @@ -421,8 +421,8 @@ class NotificationBroadcastReceiverHandlerTest { ) ) } - val onNotifiableEventReceivedResult = lambdaRecorder { _ -> } - val onNotifiableEventReceived = FakeOnNotifiableEventReceived(onNotifiableEventReceivedResult = onNotifiableEventReceivedResult) + val onNotifiableEventsReceivedResult = lambdaRecorder, Unit> { _ -> } + val onNotifiableEventReceived = FakeOnNotifiableEventReceived(onNotifiableEventsReceivedResult = onNotifiableEventsReceivedResult) val sut = createNotificationBroadcastReceiverHandler( joinedRoom = joinedRoom, onNotifiableEventReceived = onNotifiableEventReceived, @@ -439,7 +439,7 @@ class NotificationBroadcastReceiverHandlerTest { runCurrent() sendMessage.assertions() .isNeverCalled() - onNotifiableEventReceivedResult.assertions() + onNotifiableEventsReceivedResult.assertions() .isCalledOnce() replyMessage.assertions() .isCalledOnce() diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/push/DefaultOnRedactedEventReceivedTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/push/DefaultOnRedactedEventReceivedTest.kt index 2c8583bb61..1b08f7b14c 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/push/DefaultOnRedactedEventReceivedTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/push/DefaultOnRedactedEventReceivedTest.kt @@ -34,7 +34,7 @@ class DefaultOnRedactedEventReceivedTest { val sut = createDefaultOnRedactedEventReceived( getMessageNotificationsForRoomResult = { _, _ -> emptyList() } ) - sut.onRedactedEventReceived(ResolvedPushEvent.Redaction(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID, null)) + sut.onRedactedEventsReceived(listOf(ResolvedPushEvent.Redaction(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID, null))) } @Test @@ -48,7 +48,7 @@ class DefaultOnRedactedEventReceivedTest { ) } ) - sut.onRedactedEventReceived(ResolvedPushEvent.Redaction(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID, null)) + sut.onRedactedEventsReceived(listOf(ResolvedPushEvent.Redaction(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID, null))) } private fun TestScope.createDefaultOnRedactedEventReceived( diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/push/DefaultPushHandlerTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/push/DefaultPushHandlerTest.kt index 77b71c0c69..933c830525 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/push/DefaultPushHandlerTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/push/DefaultPushHandlerTest.kt @@ -31,6 +31,8 @@ import io.element.android.libraries.matrix.test.core.aBuildMeta import io.element.android.libraries.push.impl.history.FakePushHistoryService import io.element.android.libraries.push.impl.history.PushHistoryService import io.element.android.libraries.push.impl.notifications.FakeNotifiableEventResolver +import io.element.android.libraries.push.impl.notifications.NotificationEventRequest +import io.element.android.libraries.push.impl.notifications.NotificationResolverQueue import io.element.android.libraries.push.impl.notifications.ResolvingException import io.element.android.libraries.push.impl.notifications.channels.FakeNotificationChannels import io.element.android.libraries.push.impl.notifications.fixtures.aNotifiableCallEvent @@ -48,11 +50,15 @@ import io.element.android.libraries.pushstore.test.userpushstore.clientsecret.Fa import io.element.android.tests.testutils.lambda.any import io.element.android.tests.testutils.lambda.lambdaError import io.element.android.tests.testutils.lambda.lambdaRecorder +import io.element.android.tests.testutils.lambda.matching import io.element.android.tests.testutils.lambda.value import kotlinx.coroutines.ExperimentalCoroutinesApi +import kotlinx.coroutines.test.TestScope +import kotlinx.coroutines.test.advanceTimeBy import kotlinx.coroutines.test.runTest import org.junit.Test import java.time.Instant +import kotlin.time.Duration.Companion.milliseconds private const val A_PUSHER_INFO = "info" @@ -80,10 +86,11 @@ class DefaultPushHandlerTest { fun `when classical PushData is received, the notification drawer is informed`() = runTest { val aNotifiableMessageEvent = aNotifiableMessageEvent() val notifiableEventResult = - lambdaRecorder> { _, _, _ -> - Result.success(ResolvedPushEvent.Event(aNotifiableMessageEvent)) + lambdaRecorder, Result>>> { _, _, -> + val request = NotificationEventRequest(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID, A_PUSHER_INFO) + Result.success(mapOf(request to Result.success(ResolvedPushEvent.Event(aNotifiableMessageEvent)))) } - val onNotifiableEventReceived = lambdaRecorder {} + val onNotifiableEventsReceived = lambdaRecorder, Unit> {} val incrementPushCounterResult = lambdaRecorder {} val onPushReceivedResult = lambdaRecorder { _, _, _, _, _, _, _ -> } val pushHistoryService = FakePushHistoryService( @@ -96,8 +103,8 @@ class DefaultPushHandlerTest { clientSecret = A_SECRET, ) val defaultPushHandler = createDefaultPushHandler( - onNotifiableEventReceived = onNotifiableEventReceived, - notifiableEventResult = notifiableEventResult, + onNotifiableEventsReceived = onNotifiableEventsReceived, + notifiableEventsResult = notifiableEventResult, pushClientSecret = FakePushClientSecret( getUserIdFromSecretResult = { A_USER_ID } ), @@ -105,14 +112,17 @@ class DefaultPushHandlerTest { pushHistoryService = pushHistoryService, ) defaultPushHandler.handle(aPushData, A_PUSHER_INFO) + + advanceTimeBy(300.milliseconds) + incrementPushCounterResult.assertions() .isCalledOnce() notifiableEventResult.assertions() .isCalledOnce() - .with(value(A_USER_ID), value(A_ROOM_ID), value(AN_EVENT_ID)) - onNotifiableEventReceived.assertions() + .with(value(A_USER_ID), any()) + onNotifiableEventsReceived.assertions() .isCalledOnce() - .with(value(aNotifiableMessageEvent)) + .with(value(listOf(aNotifiableMessageEvent))) onPushReceivedResult.assertions() .isCalledOnce() } @@ -122,10 +132,11 @@ class DefaultPushHandlerTest { runTest { val aNotifiableMessageEvent = aNotifiableMessageEvent() val notifiableEventResult = - lambdaRecorder> { _, _, _ -> - Result.success(ResolvedPushEvent.Event(aNotifiableMessageEvent)) + lambdaRecorder, Result>>> { _, _ -> + val request = NotificationEventRequest(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID, A_PUSHER_INFO) + Result.success(mapOf(request to Result.success(ResolvedPushEvent.Event(aNotifiableMessageEvent)))) } - val onNotifiableEventReceived = lambdaRecorder {} + val onNotifiableEventsReceived = lambdaRecorder, Unit> {} val incrementPushCounterResult = lambdaRecorder {} val aPushData = PushData( eventId = AN_EVENT_ID, @@ -138,8 +149,8 @@ class DefaultPushHandlerTest { onPushReceivedResult = onPushReceivedResult, ) val defaultPushHandler = createDefaultPushHandler( - onNotifiableEventReceived = onNotifiableEventReceived, - notifiableEventResult = notifiableEventResult, + onNotifiableEventsReceived = onNotifiableEventsReceived, + notifiableEventsResult = notifiableEventResult, pushClientSecret = FakePushClientSecret( getUserIdFromSecretResult = { A_USER_ID } ), @@ -150,11 +161,14 @@ class DefaultPushHandlerTest { pushHistoryService = pushHistoryService, ) defaultPushHandler.handle(aPushData, A_PUSHER_INFO) + + advanceTimeBy(300.milliseconds) + incrementPushCounterResult.assertions() .isCalledOnce() notifiableEventResult.assertions() .isCalledOnce() - onNotifiableEventReceived.assertions() + onNotifiableEventsReceived.assertions() .isNeverCalled() onPushReceivedResult.assertions() .isCalledOnce() @@ -165,10 +179,11 @@ class DefaultPushHandlerTest { runTest { val aNotifiableMessageEvent = aNotifiableMessageEvent() val notifiableEventResult = - lambdaRecorder> { _, _, _ -> - Result.success(ResolvedPushEvent.Event(aNotifiableMessageEvent)) + lambdaRecorder, Result>>> { _, _ -> + val request = NotificationEventRequest(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID, A_PUSHER_INFO) + Result.success(mapOf(request to Result.success(ResolvedPushEvent.Event(aNotifiableMessageEvent)))) } - val onNotifiableEventReceived = lambdaRecorder {} + val onNotifiableEventsReceived = lambdaRecorder, Unit> {} val incrementPushCounterResult = lambdaRecorder {} val aPushData = PushData( eventId = AN_EVENT_ID, @@ -181,8 +196,8 @@ class DefaultPushHandlerTest { onPushReceivedResult = onPushReceivedResult, ) val defaultPushHandler = createDefaultPushHandler( - onNotifiableEventReceived = onNotifiableEventReceived, - notifiableEventResult = notifiableEventResult, + onNotifiableEventsReceived = onNotifiableEventsReceived, + notifiableEventsResult = notifiableEventResult, pushClientSecret = FakePushClientSecret( getUserIdFromSecretResult = { null } ), @@ -193,14 +208,17 @@ class DefaultPushHandlerTest { pushHistoryService = pushHistoryService, ) defaultPushHandler.handle(aPushData, A_PUSHER_INFO) + + advanceTimeBy(300.milliseconds) + incrementPushCounterResult.assertions() .isCalledOnce() notifiableEventResult.assertions() .isCalledOnce() - .with(value(A_USER_ID), value(A_ROOM_ID), value(AN_EVENT_ID)) - onNotifiableEventReceived.assertions() + .with(value(A_USER_ID), any()) + onNotifiableEventsReceived.assertions() .isCalledOnce() - .with(value(aNotifiableMessageEvent)) + .with(value(listOf(aNotifiableMessageEvent))) onPushReceivedResult.assertions() .isCalledOnce() } @@ -210,10 +228,11 @@ class DefaultPushHandlerTest { runTest { val aNotifiableMessageEvent = aNotifiableMessageEvent() val notifiableEventResult = - lambdaRecorder> { _, _, _ -> - Result.success(ResolvedPushEvent.Event(aNotifiableMessageEvent)) + lambdaRecorder, Result>>> { _, _ -> + val request = NotificationEventRequest(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID, A_PUSHER_INFO) + Result.success(mapOf(request to Result.success(ResolvedPushEvent.Event(aNotifiableMessageEvent)))) } - val onNotifiableEventReceived = lambdaRecorder {} + val onNotifiableEventsReceived = lambdaRecorder, Unit> {} val incrementPushCounterResult = lambdaRecorder {} val aPushData = PushData( eventId = AN_EVENT_ID, @@ -226,8 +245,8 @@ class DefaultPushHandlerTest { onPushReceivedResult = onPushReceivedResult, ) val defaultPushHandler = createDefaultPushHandler( - onNotifiableEventReceived = onNotifiableEventReceived, - notifiableEventResult = notifiableEventResult, + onNotifiableEventsReceived = onNotifiableEventsReceived, + notifiableEventsResult = notifiableEventResult, pushClientSecret = FakePushClientSecret( getUserIdFromSecretResult = { null } ), @@ -242,7 +261,7 @@ class DefaultPushHandlerTest { .isCalledOnce() notifiableEventResult.assertions() .isNeverCalled() - onNotifiableEventReceived.assertions() + onNotifiableEventsReceived.assertions() .isNeverCalled() onPushReceivedResult.assertions() .isCalledOnce() @@ -252,10 +271,10 @@ class DefaultPushHandlerTest { fun `when classical PushData is received, but not able to resolve the event, nothing happen`() = runTest { val notifiableEventResult = - lambdaRecorder> { _, _, _ -> + lambdaRecorder, Result>>> { _, _ -> Result.failure(ResolvingException("Unable to resolve")) } - val onNotifiableEventReceived = lambdaRecorder {} + val onNotifiableEventsReceived = lambdaRecorder, Unit> {} val incrementPushCounterResult = lambdaRecorder {} val aPushData = PushData( eventId = AN_EVENT_ID, @@ -268,8 +287,8 @@ class DefaultPushHandlerTest { onPushReceivedResult = onPushReceivedResult, ) val defaultPushHandler = createDefaultPushHandler( - onNotifiableEventReceived = onNotifiableEventReceived, - notifiableEventResult = notifiableEventResult, + onNotifiableEventsReceived = onNotifiableEventsReceived, + notifiableEventsResult = notifiableEventResult, buildMeta = aBuildMeta( // Also test `lowPrivacyLoggingEnabled = false` here lowPrivacyLoggingEnabled = false @@ -281,12 +300,15 @@ class DefaultPushHandlerTest { pushHistoryService = pushHistoryService, ) defaultPushHandler.handle(aPushData, A_PUSHER_INFO) + + advanceTimeBy(300.milliseconds) + incrementPushCounterResult.assertions() .isCalledOnce() notifiableEventResult.assertions() .isCalledOnce() - .with(value(A_USER_ID), value(A_ROOM_ID), value(AN_EVENT_ID)) - onNotifiableEventReceived.assertions() + .with(value(A_USER_ID), any()) + onNotifiableEventsReceived.assertions() .isNeverCalled() onPushReceivedResult.assertions() .isCalledOnce() @@ -313,28 +335,38 @@ class DefaultPushHandlerTest { Unit, > { _, _, _, _, _, _, _, _ -> } val elementCallEntryPoint = FakeElementCallEntryPoint(handleIncomingCallResult = handleIncomingCallLambda) - val onNotifiableEventReceived = lambdaRecorder {} + val onNotifiableEventsReceived = lambdaRecorder, Unit> {} val onPushReceivedResult = lambdaRecorder { _, _, _, _, _, _, _ -> } val pushHistoryService = FakePushHistoryService( onPushReceivedResult = onPushReceivedResult, ) val defaultPushHandler = createDefaultPushHandler( elementCallEntryPoint = elementCallEntryPoint, - notifiableEventResult = { _, _, _ -> + notifiableEventsResult = { _, _ -> + val request = NotificationEventRequest(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID, A_PUSHER_INFO) Result.success( - ResolvedPushEvent.Event(aNotifiableCallEvent(callNotifyType = CallNotifyType.RING, timestamp = Instant.now().toEpochMilli())) + mapOf( + request to Result.success( + ResolvedPushEvent.Event( + aNotifiableCallEvent(callNotifyType = CallNotifyType.RING, timestamp = Instant.now().toEpochMilli()) + ) + ) + ) ) }, incrementPushCounterResult = {}, pushClientSecret = FakePushClientSecret( getUserIdFromSecretResult = { A_USER_ID } ), - onNotifiableEventReceived = onNotifiableEventReceived, + onNotifiableEventsReceived = onNotifiableEventsReceived, pushHistoryService = pushHistoryService, ) defaultPushHandler.handle(aPushData, A_PUSHER_INFO) + + advanceTimeBy(300.milliseconds) + handleIncomingCallLambda.assertions().isCalledOnce() - onNotifiableEventReceived.assertions().isCalledOnce() + onNotifiableEventsReceived.assertions().isNeverCalled() onPushReceivedResult.assertions().isCalledOnce() } @@ -346,7 +378,7 @@ class DefaultPushHandlerTest { unread = 0, clientSecret = A_SECRET, ) - val onNotifiableEventReceived = lambdaRecorder {} + val onNotifiableEventsReceived = lambdaRecorder, Unit> {} val handleIncomingCallLambda = lambdaRecorder< CallType.RoomCall, EventId, @@ -365,9 +397,10 @@ class DefaultPushHandlerTest { ) val defaultPushHandler = createDefaultPushHandler( elementCallEntryPoint = elementCallEntryPoint, - onNotifiableEventReceived = onNotifiableEventReceived, - notifiableEventResult = { _, _, _ -> - Result.success(ResolvedPushEvent.Event(aNotifiableMessageEvent(type = EventType.CALL_NOTIFY))) + onNotifiableEventsReceived = onNotifiableEventsReceived, + notifiableEventsResult = { _, _ -> + val request = NotificationEventRequest(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID, A_PUSHER_INFO) + Result.success(mapOf(request to Result.success(ResolvedPushEvent.Event(aNotifiableMessageEvent(type = EventType.CALL_NOTIFY))))) }, incrementPushCounterResult = {}, pushClientSecret = FakePushClientSecret( @@ -377,8 +410,10 @@ class DefaultPushHandlerTest { ) defaultPushHandler.handle(aPushData, A_PUSHER_INFO) + advanceTimeBy(300.milliseconds) + handleIncomingCallLambda.assertions().isNeverCalled() - onNotifiableEventReceived.assertions().isCalledOnce() + onNotifiableEventsReceived.assertions().isCalledOnce() onPushReceivedResult.assertions().isCalledOnce() } @@ -390,7 +425,7 @@ class DefaultPushHandlerTest { unread = 0, clientSecret = A_SECRET, ) - val onNotifiableEventReceived = lambdaRecorder {} + val onNotifiableEventsReceived = lambdaRecorder, Unit> {} val handleIncomingCallLambda = lambdaRecorder< CallType.RoomCall, EventId, @@ -409,9 +444,10 @@ class DefaultPushHandlerTest { ) val defaultPushHandler = createDefaultPushHandler( elementCallEntryPoint = elementCallEntryPoint, - onNotifiableEventReceived = onNotifiableEventReceived, - notifiableEventResult = { _, _, _ -> - Result.success(ResolvedPushEvent.Event(aNotifiableCallEvent())) + onNotifiableEventsReceived = onNotifiableEventsReceived, + notifiableEventsResult = { _, _ -> + val request = NotificationEventRequest(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID, A_PUSHER_INFO) + Result.success(mapOf(request to Result.success(ResolvedPushEvent.Event(aNotifiableCallEvent())))) }, incrementPushCounterResult = {}, userPushStore = FakeUserPushStore().apply { @@ -423,8 +459,11 @@ class DefaultPushHandlerTest { pushHistoryService = pushHistoryService, ) defaultPushHandler.handle(aPushData, A_PUSHER_INFO) + + advanceTimeBy(300.milliseconds) + handleIncomingCallLambda.assertions().isCalledOnce() - onNotifiableEventReceived.assertions().isCalledOnce() + onNotifiableEventsReceived.assertions().isNeverCalled() onPushReceivedResult.assertions().isCalledOnce() } @@ -442,26 +481,32 @@ class DefaultPushHandlerTest { redactedEventId = AN_EVENT_ID_2, reason = null ) - val onRedactedEventReceived = lambdaRecorder { } + val onRedactedEventReceived = lambdaRecorder, Unit> { } val incrementPushCounterResult = lambdaRecorder {} val onPushReceivedResult = lambdaRecorder { _, _, _, _, _, _, _ -> } val pushHistoryService = FakePushHistoryService( onPushReceivedResult = onPushReceivedResult, ) val defaultPushHandler = createDefaultPushHandler( - onRedactedEventReceived = onRedactedEventReceived, + onRedactedEventsReceived = onRedactedEventReceived, incrementPushCounterResult = incrementPushCounterResult, - notifiableEventResult = { _, _, _ -> Result.success(aRedaction) }, + notifiableEventsResult = { _, _ -> + val request = NotificationEventRequest(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID, A_PUSHER_INFO) + Result.success(mapOf(request to Result.success(aRedaction))) + }, pushClientSecret = FakePushClientSecret( getUserIdFromSecretResult = { A_USER_ID } ), pushHistoryService = pushHistoryService, ) defaultPushHandler.handle(aPushData, A_PUSHER_INFO) + + advanceTimeBy(300.milliseconds) + incrementPushCounterResult.assertions() .isCalledOnce() onRedactedEventReceived.assertions().isCalledOnce() - .with(value(aRedaction)) + .with(value(listOf(aRedaction))) onPushReceivedResult.assertions() .isCalledOnce() } @@ -493,10 +538,64 @@ class DefaultPushHandlerTest { .isCalledOnce() } - private fun createDefaultPushHandler( - onNotifiableEventReceived: (NotifiableEvent) -> Unit = { lambdaError() }, - onRedactedEventReceived: (ResolvedPushEvent.Redaction) -> Unit = { lambdaError() }, - notifiableEventResult: (SessionId, RoomId, EventId) -> Result = { _, _, _ -> lambdaError() }, + @Test + fun `when receiving several push notifications at the same time, those are batched before being processed`() = runTest { + val aNotifiableMessageEvent = aNotifiableMessageEvent() + val notifiableEventResult = + lambdaRecorder, Result>>> { _, _, -> + val request = NotificationEventRequest(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID, A_PUSHER_INFO) + Result.success(mapOf(request to Result.success(ResolvedPushEvent.Event(aNotifiableMessageEvent)))) + } + val onNotifiableEventsReceived = lambdaRecorder, Unit> {} + val incrementPushCounterResult = lambdaRecorder {} + val onPushReceivedResult = lambdaRecorder { _, _, _, _, _, _, _ -> } + val pushHistoryService = FakePushHistoryService( + onPushReceivedResult = onPushReceivedResult, + ) + val aPushData = PushData( + eventId = AN_EVENT_ID, + roomId = A_ROOM_ID, + unread = 0, + clientSecret = A_SECRET, + ) + val anotherPushData = PushData( + eventId = AN_EVENT_ID_2, + roomId = A_ROOM_ID, + unread = 0, + clientSecret = A_SECRET, + ) + val defaultPushHandler = createDefaultPushHandler( + onNotifiableEventsReceived = onNotifiableEventsReceived, + notifiableEventsResult = notifiableEventResult, + pushClientSecret = FakePushClientSecret( + getUserIdFromSecretResult = { A_USER_ID } + ), + incrementPushCounterResult = incrementPushCounterResult, + pushHistoryService = pushHistoryService, + ) + defaultPushHandler.handle(aPushData, A_PUSHER_INFO) + defaultPushHandler.handle(anotherPushData, A_PUSHER_INFO) + + advanceTimeBy(300.milliseconds) + + incrementPushCounterResult.assertions() + .isCalledExactly(2) + notifiableEventResult.assertions() + .isCalledOnce() + .with(value(A_USER_ID), matching> { requests -> + requests.size == 2 && requests.first().eventId == AN_EVENT_ID && requests.last().eventId == AN_EVENT_ID_2 + }) + onNotifiableEventsReceived.assertions() + .isCalledOnce() + onPushReceivedResult.assertions() + .isCalledExactly(2) + } + + private fun TestScope.createDefaultPushHandler( + onNotifiableEventsReceived: (List) -> Unit = { lambdaError() }, + onRedactedEventsReceived: (List) -> Unit = { lambdaError() }, + notifiableEventsResult: (SessionId, List) -> Result>> = + { _, _, -> lambdaError() }, incrementPushCounterResult: () -> Unit = { lambdaError() }, userPushStore: UserPushStore = FakeUserPushStore(), pushClientSecret: PushClientSecret = FakePushClientSecret(), @@ -508,9 +607,8 @@ class DefaultPushHandlerTest { pushHistoryService: PushHistoryService = FakePushHistoryService(), ): DefaultPushHandler { return DefaultPushHandler( - onNotifiableEventReceived = FakeOnNotifiableEventReceived(onNotifiableEventReceived), - onRedactedEventReceived = FakeOnRedactedEventReceived(onRedactedEventReceived), - notifiableEventResolver = FakeNotifiableEventResolver(notifiableEventResult), + onNotifiableEventReceived = FakeOnNotifiableEventReceived(onNotifiableEventsReceived), + onRedactedEventReceived = FakeOnRedactedEventReceived(onRedactedEventsReceived), incrementPushDataStore = object : IncrementPushDataStore { override suspend fun incrementPushCounter() { incrementPushCounterResult() @@ -524,6 +622,8 @@ class DefaultPushHandlerTest { elementCallEntryPoint = elementCallEntryPoint, notificationChannels = notificationChannels, pushHistoryService = pushHistoryService, + resolverQueue = NotificationResolverQueue(notifiableEventResolver = FakeNotifiableEventResolver(notifiableEventsResult), backgroundScope), + appCoroutineScope = backgroundScope, ) } } diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/push/FakeOnNotifiableEventReceived.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/push/FakeOnNotifiableEventReceived.kt index 0de4094809..055b1f322e 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/push/FakeOnNotifiableEventReceived.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/push/FakeOnNotifiableEventReceived.kt @@ -11,9 +11,9 @@ import io.element.android.libraries.push.impl.notifications.model.NotifiableEven import io.element.android.tests.testutils.lambda.lambdaError class FakeOnNotifiableEventReceived( - private val onNotifiableEventReceivedResult: (NotifiableEvent) -> Unit = { lambdaError() }, + private val onNotifiableEventsReceivedResult: (List) -> Unit = { lambdaError() }, ) : OnNotifiableEventReceived { - override fun onNotifiableEventReceived(notifiableEvent: NotifiableEvent) { - onNotifiableEventReceivedResult(notifiableEvent) + override fun onNotifiableEventsReceived(notifiableEvents: List) { + onNotifiableEventsReceivedResult(notifiableEvents) } } diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/push/FakeOnRedactedEventReceived.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/push/FakeOnRedactedEventReceived.kt index 96e76f6da0..b5a3731830 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/push/FakeOnRedactedEventReceived.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/push/FakeOnRedactedEventReceived.kt @@ -11,9 +11,9 @@ import io.element.android.libraries.push.impl.notifications.model.ResolvedPushEv import io.element.android.tests.testutils.lambda.lambdaError class FakeOnRedactedEventReceived( - private val onRedactedEventReceivedResult: (ResolvedPushEvent.Redaction) -> Unit = { lambdaError() }, + private val onRedactedEventsReceivedResult: (List) -> Unit = { lambdaError() }, ) : OnRedactedEventReceived { - override fun onRedactedEventReceived(redaction: ResolvedPushEvent.Redaction) { - onRedactedEventReceivedResult(redaction) + override fun onRedactedEventsReceived(redactions: List) { + onRedactedEventsReceivedResult(redactions) } } diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/push/SyncOnNotifiableEventTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/push/SyncOnNotifiableEventTest.kt index 9209eb4aeb..8ad5e28e6e 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/push/SyncOnNotifiableEventTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/push/SyncOnNotifiableEventTest.kt @@ -76,7 +76,7 @@ class SyncOnNotifiableEventTest { fun `when feature flag is disabled, nothing happens`() = runTest { val sut = createSyncOnNotifiableEvent(client = client, isSyncOnPushEnabled = false) - sut(notifiableEvent) + sut(listOf(notifiableEvent)) assert(startSyncLambda).isNeverCalled() assert(stopSyncLambda).isNeverCalled() @@ -97,7 +97,7 @@ class SyncOnNotifiableEventTest { unlocked.set(true) room.givenRoomInfo(aRoomInfo(hasRoomCall = true)) } - sut(incomingCallNotifiableEvent) + sut(listOf(incomingCallNotifiableEvent)) // The process was completed before the timeout assertThat(unlocked.get()).isTrue() @@ -117,30 +117,12 @@ class SyncOnNotifiableEventTest { unlocked.set(true) room.givenRoomInfo(aRoomInfo(hasRoomCall = true)) } - sut(incomingCallNotifiableEvent) + sut(listOf(incomingCallNotifiableEvent)) // Didn't unlock before the timeout assertThat(unlocked.get()).isFalse() } - @Test - fun `when feature flag is enabled and app is in foreground, sync is not started`() = runTest { - val appForegroundStateService = FakeAppForegroundStateService( - initialForegroundValue = true, - ) - val sut = createSyncOnNotifiableEvent(client = client, appForegroundStateService = appForegroundStateService, isSyncOnPushEnabled = true) - - appForegroundStateService.isSyncingNotificationEvent.test { - sut(notifiableEvent) - sut(incomingCallNotifiableEvent) - - // It's initially false - assertThat(awaitItem()).isFalse() - // It never becomes true - ensureAllEventsConsumed() - } - } - @Test fun `when feature flag is enabled and app is in background, sync is started and stopped`() = runTest { val appForegroundStateService = FakeAppForegroundStateService( @@ -154,7 +136,7 @@ class SyncOnNotifiableEventTest { appForegroundStateService.isSyncingNotificationEvent.test { syncService.emitSyncState(SyncState.Running) - sut(notifiableEvent) + sut(listOf(notifiableEvent)) // It's initially false assertThat(awaitItem()).isFalse() @@ -175,8 +157,8 @@ class SyncOnNotifiableEventTest { val sut = createSyncOnNotifiableEvent(client = client, appForegroundStateService = appForegroundStateService, isSyncOnPushEnabled = true) appForegroundStateService.isSyncingNotificationEvent.test { - launch { sut(notifiableEvent) } - launch { sut(notifiableEvent) } + launch { sut(listOf(notifiableEvent)) } + launch { sut(listOf(notifiableEvent)) } launch { delay(1) timelineItems.emit( diff --git a/tests/testutils/src/main/kotlin/io/element/android/tests/testutils/lambda/ParameterMatcher.kt b/tests/testutils/src/main/kotlin/io/element/android/tests/testutils/lambda/ParameterMatcher.kt index 8a692f67db..2b16b099bf 100644 --- a/tests/testutils/src/main/kotlin/io/element/android/tests/testutils/lambda/ParameterMatcher.kt +++ b/tests/testutils/src/main/kotlin/io/element/android/tests/testutils/lambda/ParameterMatcher.kt @@ -24,6 +24,18 @@ fun value(expectedValue: T) = object : ParameterMatcher { override fun toString(): String = "value($expectedValue)" } +/** + * A matcher that matches a value based on a condition. + * Can be used to assert that a lambda has been called with a value that satisfies a specific condition. + */ +fun matching(check: (T) -> Boolean) = object : ParameterMatcher { + override fun match(param: Any?): Boolean { + @Suppress("UNCHECKED_CAST") + return (param as? T)?.let { check(it) } ?: false + } + override fun toString(): String = "matching(condition)" +} + /** * A matcher that matches any value. * Can be used when we don't care about the value of a parameter. From dd9555778281a97e2c715b6db243f6bf1bcb02df Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 27 May 2025 11:29:40 +0200 Subject: [PATCH 09/25] fix(deps): update dependency org.matrix.rustcomponents:sdk-android to v25.5.26 (#4781) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adapt SDK changes: - `RoomListItem` is gone, we should use `Room` now. - `SyncService.withUtdHook` has been replaced with `Client.setUtdDelegate`. - `ClientDelegate.didRefreshTokens` has been removed. It wasn't in use since a long time ago. - `TracingConfiguration` for the SDK now contains a `sentryDsn` parameter. Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Jorge Martín --- gradle/libs.versions.toml | 2 +- .../matrix/impl/RustClientSessionDelegate.kt | 4 -- .../libraries/matrix/impl/RustMatrixClient.kt | 1 - .../matrix/impl/RustMatrixClientFactory.kt | 3 +- .../matrix/impl/room/JoinedRustRoom.kt | 1 + .../matrix/impl/room/RoomContentForwarder.kt | 6 +-- .../matrix/impl/room/RustRoomFactory.kt | 54 ++++++++++--------- .../impl/roomlist/RoomListExtensions.kt | 4 +- .../impl/roomlist/RoomListItemExtensions.kt | 20 ------- .../impl/roomlist/RoomSummaryFactory.kt | 8 +-- .../impl/roomlist/RoomSummaryListProcessor.kt | 14 ++--- .../matrix/impl/tracing/RustTracingService.kt | 1 + .../impl/fixtures/fakes/FakeRustClient.kt | 3 ++ .../fixtures/fakes/FakeRustClientBuilder.kt | 2 +- .../impl/fixtures/fakes/FakeRustRoom.kt | 13 +++++ .../fixtures/fakes/FakeRustRoomListItem.kt | 33 ------------ .../fakes/FakeRustSyncServiceBuilder.kt | 2 - .../roomlist/RoomSummaryListProcessorTest.kt | 20 ++++--- 18 files changed, 76 insertions(+), 115 deletions(-) delete mode 100644 libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/roomlist/RoomListItemExtensions.kt delete mode 100644 libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeRustRoomListItem.kt diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index c8b7bcefa7..be471ed8a9 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -169,7 +169,7 @@ jsoup = "org.jsoup:jsoup:1.20.1" appyx_core = { module = "com.bumble.appyx:core", version.ref = "appyx" } molecule-runtime = "app.cash.molecule:molecule-runtime:2.1.0" timber = "com.jakewharton.timber:timber:5.0.1" -matrix_sdk = "org.matrix.rustcomponents:sdk-android:25.5.21" +matrix_sdk = "org.matrix.rustcomponents:sdk-android:25.5.26" matrix_richtexteditor = { module = "io.element.android:wysiwyg", version.ref = "wysiwyg" } matrix_richtexteditor_compose = { module = "io.element.android:wysiwyg-compose", version.ref = "wysiwyg" } sqldelight-driver-android = { module = "app.cash.sqldelight:android-driver", version.ref = "sqldelight" } diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustClientSessionDelegate.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustClientSessionDelegate.kt index 401798b4b1..cb1a443ccb 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustClientSessionDelegate.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustClientSessionDelegate.kt @@ -120,10 +120,6 @@ class RustClientSessionDelegate( } } - override fun didRefreshTokens() { - // This is done in `saveSessionInKeychain(Session)` instead. - } - override fun retrieveSessionFromKeychain(userId: String): Session { // This should never be called, as it's only used for multi-process setups error("retrieveSessionFromKeychain should never be called for Android") diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt index ea8a4f6321..816e4f26bd 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt @@ -189,7 +189,6 @@ class RustMatrixClient( private val roomMembershipObserver = RoomMembershipObserver() private val roomFactory = RustRoomFactory( - innerClient = innerClient, roomListService = roomListService, innerRoomListService = innerRoomListService, sessionId = sessionId, diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClientFactory.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClientFactory.kt index dae048a235..a88c9bab14 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClientFactory.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClientFactory.kt @@ -72,8 +72,9 @@ class RustMatrixClientFactory @Inject constructor( suspend fun create(client: Client): RustMatrixClient { val (anonymizedAccessToken, anonymizedRefreshToken) = client.session().anonymizedTokens() + client.setUtdDelegate(UtdTracker(analyticsService)) + val syncService = client.syncService() - .withUtdHook(UtdTracker(analyticsService)) .withOfflineMode() .finish() diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/JoinedRustRoom.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/JoinedRustRoom.kt index 79e3a1e0d2..cca8af2785 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/JoinedRustRoom.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/JoinedRustRoom.kt @@ -212,6 +212,7 @@ class JoinedRustRoom( internalIdPrefix = internalIdPrefix, dateDividerMode = dateDividerMode, trackReadReceipts = trackReadReceipts, + reportUtds = true, ) ).let { innerTimeline -> val mode = when (createTimelineParams) { diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RoomContentForwarder.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RoomContentForwarder.kt index 3a131e6a19..63f22dbf7d 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RoomContentForwarder.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RoomContentForwarder.kt @@ -11,7 +11,6 @@ import io.element.android.libraries.core.coroutine.parallelMap import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.room.ForwardEventException -import io.element.android.libraries.matrix.impl.roomlist.fullRoomWithTimeline import io.element.android.libraries.matrix.impl.roomlist.roomOrNull import io.element.android.libraries.matrix.impl.timeline.runWithTimelineListenerRegistered import kotlinx.coroutines.CancellationException @@ -49,10 +48,7 @@ class RoomContentForwarder( val content = (messageLikeContent.kind as? MsgLikeKind.Message)?.content ?: throw ForwardEventException(toRoomIds) - val targetSlidingSyncRooms = toRoomIds.mapNotNull { roomId -> roomListService.roomOrNull(roomId.value) } - val targetRooms = targetSlidingSyncRooms.map { slidingSyncRoom -> - slidingSyncRoom.use { it.fullRoomWithTimeline(null) } - } + val targetRooms = toRoomIds.mapNotNull { roomId -> roomListService.roomOrNull(roomId.value) } val failedForwardingTo = mutableSetOf() targetRooms.parallelMap { room -> room.use { targetRoom -> diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RustRoomFactory.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RustRoomFactory.kt index d76de248d0..e5a8ff4eb0 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RustRoomFactory.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RustRoomFactory.kt @@ -20,7 +20,6 @@ import io.element.android.libraries.matrix.api.room.RoomMembershipObserver import io.element.android.libraries.matrix.api.roomlist.RoomListService import io.element.android.libraries.matrix.api.roomlist.awaitLoaded import io.element.android.libraries.matrix.impl.room.preview.RoomPreviewInfoMapper -import io.element.android.libraries.matrix.impl.roomlist.fullRoomWithTimeline import io.element.android.libraries.matrix.impl.roomlist.roomOrNull import io.element.android.services.toolbox.api.systemclock.SystemClock import kotlinx.coroutines.CoroutineScope @@ -28,10 +27,12 @@ import kotlinx.coroutines.NonCancellable import kotlinx.coroutines.sync.Mutex import kotlinx.coroutines.sync.withLock import kotlinx.coroutines.withContext -import org.matrix.rustcomponents.sdk.Client +import org.matrix.rustcomponents.sdk.DateDividerMode import org.matrix.rustcomponents.sdk.Membership import org.matrix.rustcomponents.sdk.Room -import org.matrix.rustcomponents.sdk.RoomListItem +import org.matrix.rustcomponents.sdk.TimelineConfiguration +import org.matrix.rustcomponents.sdk.TimelineFilter +import org.matrix.rustcomponents.sdk.TimelineFocus import timber.log.Timber import java.util.concurrent.atomic.AtomicBoolean import org.matrix.rustcomponents.sdk.RoomListService as InnerRoomListService @@ -39,7 +40,6 @@ import org.matrix.rustcomponents.sdk.RoomListService as InnerRoomListService class RustRoomFactory( private val sessionId: SessionId, private val deviceId: DeviceId, - private val innerClient: Client, private val notificationSettingsService: NotificationSettingsService, private val sessionCoroutineScope: CoroutineScope, private val dispatchers: CoroutineDispatchers, @@ -79,16 +79,11 @@ class RustRoomFactory( Timber.d("Room factory is destroyed, returning null for $roomId") return@withContext null } - val roomListItem = awaitRoomListItem(roomId) ?: return@withContext null - getBaseRoom(roomListItem) + val room = awaitRoomInRoomList(roomId) ?: return@withContext null + getBaseRoom(room) } } - private suspend fun getBaseRoom(roomListItem: RoomListItem): RustBaseRoom? { - val sdkRoom = innerClient.getRoom(roomListItem.id()) ?: return null - return getBaseRoom(sdkRoom) - } - private suspend fun getBaseRoom(sdkRoom: Room): RustBaseRoom { val initialRoomInfo = sdkRoom.roomInfo() return RustBaseRoom( @@ -110,18 +105,27 @@ class RustRoomFactory( Timber.d("Room factory is destroyed, returning null for $roomId") return@withContext null } - val roomListItem = awaitRoomListItem(roomId) ?: return@withContext null + val sdkRoom = awaitRoomInRoomList(roomId) ?: return@withContext null - if (roomListItem.membership() == Membership.JOINED) { - // Init the live timeline in the SDK from the RoomListItem - val sdkRoom = roomListItem.fullRoomWithTimeline(eventFilters) + if (sdkRoom.membership() == Membership.JOINED) { + // Init the live timeline in the SDK from the Room + val timeline = sdkRoom.timelineWithConfiguration( + TimelineConfiguration( + focus = TimelineFocus.Live, + filter = eventFilters?.let(TimelineFilter::EventTypeFilter) ?: TimelineFilter.All, + internalIdPrefix = "live", + dateDividerMode = DateDividerMode.DAILY, + trackReadReceipts = true, + reportUtds = true, + ) + ) GetRoomResult.Joined( JoinedRustRoom( baseRoom = getBaseRoom(sdkRoom), notificationSettingsService = notificationSettingsService, roomContentForwarder = roomContentForwarder, - liveInnerTimeline = sdkRoom.timeline(), + liveInnerTimeline = timeline, coroutineDispatchers = dispatchers, systemClock = systemClock, featureFlagService = featureFlagService, @@ -129,7 +133,7 @@ class RustRoomFactory( ) } else { val preview = try { - roomListItem.previewRoom(via = emptyList()) + sdkRoom.previewRoom(via = emptyList()) } catch (e: Exception) { Timber.e(e, "Failed to get room preview for $roomId") return@withContext null @@ -138,7 +142,7 @@ class RustRoomFactory( GetRoomResult.NotJoined( NotJoinedRustRoom( sessionId = sessionId, - localRoom = getBaseRoom(roomListItem), + localRoom = getBaseRoom(sdkRoom), previewInfo = RoomPreviewInfoMapper.map(preview.info()), ) ) @@ -147,22 +151,22 @@ class RustRoomFactory( } /** - * Get the Rust room list item for a room, retrying after the room list is loaded if necessary. + * Get the Rust room for a room, retrying after the room list is loaded if necessary. */ - private suspend fun awaitRoomListItem(roomId: RoomId): RoomListItem? { - var roomListItem = innerRoomListService.roomOrNull(roomId.value) - if (roomListItem == null) { + private suspend fun awaitRoomInRoomList(roomId: RoomId): Room? { + var sdkRoom = innerRoomListService.roomOrNull(roomId.value) + if (sdkRoom == null) { // ... otherwise, lets wait for the SS to load all rooms and check again. roomListService.allRooms.awaitLoaded() - roomListItem = innerRoomListService.roomOrNull(roomId.value) + sdkRoom = innerRoomListService.roomOrNull(roomId.value) } - if (roomListItem == null) { + if (sdkRoom == null) { Timber.d("Room not found for $roomId") return null } - return roomListItem + return sdkRoom } } diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/roomlist/RoomListExtensions.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/roomlist/RoomListExtensions.kt index 9fddea7c4f..adcdfee9e1 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/roomlist/RoomListExtensions.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/roomlist/RoomListExtensions.kt @@ -19,11 +19,11 @@ import kotlinx.coroutines.flow.callbackFlow import kotlinx.coroutines.flow.catch import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach +import org.matrix.rustcomponents.sdk.Room import org.matrix.rustcomponents.sdk.RoomListEntriesDynamicFilterKind import org.matrix.rustcomponents.sdk.RoomListEntriesListener import org.matrix.rustcomponents.sdk.RoomListEntriesUpdate import org.matrix.rustcomponents.sdk.RoomListInterface -import org.matrix.rustcomponents.sdk.RoomListItem import org.matrix.rustcomponents.sdk.RoomListLoadingState import org.matrix.rustcomponents.sdk.RoomListLoadingStateListener import org.matrix.rustcomponents.sdk.RoomListServiceInterface @@ -114,7 +114,7 @@ internal fun RoomListServiceInterface.syncIndicator(): Flow + suspend fun create(room: Room): RoomSummary { + val roomInfo = room.roomInfo().let(roomInfoMapper::map) + val latestRoomMessage = room.latestEvent().use { event -> roomMessageFactory.create(event) } return RoomSummary( diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/roomlist/RoomSummaryListProcessor.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/roomlist/RoomSummaryListProcessor.kt index ac8992e23f..66931a1f13 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/roomlist/RoomSummaryListProcessor.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/roomlist/RoomSummaryListProcessor.kt @@ -12,8 +12,8 @@ import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.sync.Mutex import kotlinx.coroutines.sync.withLock import kotlinx.coroutines.withContext +import org.matrix.rustcomponents.sdk.Room import org.matrix.rustcomponents.sdk.RoomListEntriesUpdate -import org.matrix.rustcomponents.sdk.RoomListItem import org.matrix.rustcomponents.sdk.RoomListServiceInterface import org.matrix.rustcomponents.sdk.use import timber.log.Timber @@ -95,20 +95,16 @@ class RoomSummaryListProcessor( } } - private suspend fun buildSummaryForRoomListEntry(entry: RoomListItem): RoomSummary { - return buildRoomSummaryForRoomListItem(entry) + private suspend fun buildSummaryForRoomListEntry(entry: Room): RoomSummary { + return entry.use { roomSummaryDetailsFactory.create(room = it) } } private suspend fun buildRoomSummaryForIdentifier(identifier: String): RoomSummary? { - return roomListService.roomOrNull(identifier)?.use { roomListItem -> - buildRoomSummaryForRoomListItem(roomListItem) + return roomListService.roomOrNull(identifier)?.let { room -> + buildSummaryForRoomListEntry(room) } } - private suspend fun buildRoomSummaryForRoomListItem(roomListItem: RoomListItem): RoomSummary { - return roomSummaryDetailsFactory.create(roomListItem = roomListItem) - } - private suspend fun updateRoomSummaries(block: suspend MutableList.() -> Unit) = withContext(coroutineContext) { mutex.withLock { val current = roomSummaries.replayCache.lastOrNull() diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/tracing/RustTracingService.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/tracing/RustTracingService.kt index 07ee1dc1b9..912561d843 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/tracing/RustTracingService.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/tracing/RustTracingService.kt @@ -53,4 +53,5 @@ fun TracingConfiguration.map(): org.matrix.rustcomponents.sdk.TracingConfigurati extraTargets = extraTargets, traceLogPacks = traceLogPacks.map(), writeToFiles = writesToFilesConfiguration.toTracingFileConfiguration(), + sentryDsn = null, ) diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeRustClient.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeRustClient.kt index 6489396260..583e397daa 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeRustClient.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeRustClient.kt @@ -25,6 +25,7 @@ import org.matrix.rustcomponents.sdk.RoomDirectorySearch import org.matrix.rustcomponents.sdk.Session import org.matrix.rustcomponents.sdk.SyncServiceBuilder import org.matrix.rustcomponents.sdk.TaskHandle +import org.matrix.rustcomponents.sdk.UnableToDecryptDelegate class FakeRustClient( private val userId: String = A_USER_ID.value, @@ -34,6 +35,7 @@ class FakeRustClient( private val encryption: Encryption = FakeRustEncryption(), private val session: Session = aRustSession(), private val clearCachesResult: () -> Unit = { lambdaError() }, + private val withUtdHook: (UnableToDecryptDelegate) -> Unit = { lambdaError() }, private val closeResult: () -> Unit = {}, ) : Client(NoPointer) { override fun userId(): String = userId @@ -58,5 +60,6 @@ class FakeRustClient( override suspend fun deletePusher(identifiers: PusherIdentifiers) = Unit override suspend fun clearCaches() = simulateLongTask { clearCachesResult() } + override suspend fun setUtdDelegate(utdDelegate: UnableToDecryptDelegate) = withUtdHook(utdDelegate) override fun close() = closeResult() } diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeRustClientBuilder.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeRustClientBuilder.kt index 2d72b8a4f5..eed26ba2dc 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeRustClientBuilder.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeRustClientBuilder.kt @@ -47,6 +47,6 @@ class FakeRustClientBuilder : ClientBuilder(NoPointer) { } override suspend fun build(): Client { - return FakeRustClient() + return FakeRustClient(withUtdHook = {}) } } diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeRustRoom.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeRustRoom.kt index 8704f5ee1b..3e2a81daba 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeRustRoom.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeRustRoom.kt @@ -8,16 +8,21 @@ package io.element.android.libraries.matrix.impl.fixtures.fakes import io.element.android.libraries.matrix.api.core.RoomId +import io.element.android.libraries.matrix.impl.fixtures.factories.aRustRoomInfo import io.element.android.libraries.matrix.test.A_ROOM_ID import io.element.android.tests.testutils.lambda.lambdaError +import org.matrix.rustcomponents.sdk.EventTimelineItem import org.matrix.rustcomponents.sdk.NoPointer import org.matrix.rustcomponents.sdk.Room +import org.matrix.rustcomponents.sdk.RoomInfo import org.matrix.rustcomponents.sdk.RoomMembersIterator class FakeRustRoom( private val roomId: RoomId = A_ROOM_ID, private val getMembers: () -> RoomMembersIterator = { lambdaError() }, private val getMembersNoSync: () -> RoomMembersIterator = { lambdaError() }, + private val latestEventLambda: () -> EventTimelineItem? = { lambdaError() }, + private val roomInfo: RoomInfo = aRustRoomInfo(id = roomId.value), ) : Room(NoPointer) { override fun id(): String { return roomId.value @@ -31,6 +36,14 @@ class FakeRustRoom( return getMembersNoSync() } + override suspend fun roomInfo(): RoomInfo { + return roomInfo + } + + override suspend fun latestEvent(): EventTimelineItem? { + return latestEventLambda() + } + override fun close() { // No-op } diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeRustRoomListItem.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeRustRoomListItem.kt deleted file mode 100644 index acc43a6b24..0000000000 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeRustRoomListItem.kt +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2024 New Vector Ltd. - * - * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial - * Please see LICENSE files in the repository root for full details. - */ - -package io.element.android.libraries.matrix.impl.fixtures.fakes - -import io.element.android.libraries.matrix.api.core.RoomId -import io.element.android.libraries.matrix.impl.fixtures.factories.aRustRoomInfo -import org.matrix.rustcomponents.sdk.EventTimelineItem -import org.matrix.rustcomponents.sdk.NoPointer -import org.matrix.rustcomponents.sdk.RoomInfo -import org.matrix.rustcomponents.sdk.RoomListItem - -class FakeRustRoomListItem( - private val roomId: RoomId, - private val roomInfo: RoomInfo = aRustRoomInfo(id = roomId.value), - private val latestEvent: EventTimelineItem? = null, -) : RoomListItem(NoPointer) { - override fun id(): String { - return roomId.value - } - - override suspend fun roomInfo(): RoomInfo { - return roomInfo - } - - override suspend fun latestEvent(): EventTimelineItem? { - return latestEvent - } -} diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeRustSyncServiceBuilder.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeRustSyncServiceBuilder.kt index 0ddfe16eea..e36f6f0b1f 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeRustSyncServiceBuilder.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeRustSyncServiceBuilder.kt @@ -10,10 +10,8 @@ package io.element.android.libraries.matrix.impl.fixtures.fakes import org.matrix.rustcomponents.sdk.NoPointer import org.matrix.rustcomponents.sdk.SyncService import org.matrix.rustcomponents.sdk.SyncServiceBuilder -import org.matrix.rustcomponents.sdk.UnableToDecryptDelegate class FakeRustSyncServiceBuilder : SyncServiceBuilder(NoPointer) { - override suspend fun withUtdHook(delegate: UnableToDecryptDelegate): SyncServiceBuilder = this override fun withOfflineMode(): SyncServiceBuilder = this override suspend fun finish(): SyncService = FakeRustSyncService() } diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/roomlist/RoomSummaryListProcessorTest.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/roomlist/RoomSummaryListProcessorTest.kt index 08c61a8709..79bae7e37e 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/roomlist/RoomSummaryListProcessorTest.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/roomlist/RoomSummaryListProcessorTest.kt @@ -8,8 +8,9 @@ package io.element.android.libraries.matrix.impl.roomlist import com.google.common.truth.Truth.assertThat +import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.roomlist.RoomSummary -import io.element.android.libraries.matrix.impl.fixtures.fakes.FakeRustRoomListItem +import io.element.android.libraries.matrix.impl.fixtures.fakes.FakeRustRoom import io.element.android.libraries.matrix.impl.fixtures.fakes.FakeRustRoomListService import io.element.android.libraries.matrix.test.A_ROOM_ID import io.element.android.libraries.matrix.test.A_ROOM_ID_2 @@ -30,7 +31,7 @@ class RoomSummaryListProcessorTest { summaries.value = listOf(aRoomSummary()) val processor = createProcessor() - val newEntry = FakeRustRoomListItem(A_ROOM_ID_2) + val newEntry = aRustRoom(A_ROOM_ID_2) processor.postUpdate(listOf(RoomListEntriesUpdate.Append(listOf(newEntry, newEntry, newEntry)))) assertThat(summaries.value.count()).isEqualTo(4) @@ -41,7 +42,7 @@ class RoomSummaryListProcessorTest { fun `PushBack adds a new entry at the end of the list`() = runTest { summaries.value = listOf(aRoomSummary()) val processor = createProcessor() - processor.postUpdate(listOf(RoomListEntriesUpdate.PushBack(FakeRustRoomListItem(A_ROOM_ID_2)))) + processor.postUpdate(listOf(RoomListEntriesUpdate.PushBack(aRustRoom(A_ROOM_ID_2)))) assertThat(summaries.value.count()).isEqualTo(2) assertThat(summaries.value.last().roomId).isEqualTo(A_ROOM_ID_2) @@ -51,7 +52,7 @@ class RoomSummaryListProcessorTest { fun `PushFront inserts a new entry at the start of the list`() = runTest { summaries.value = listOf(aRoomSummary()) val processor = createProcessor() - processor.postUpdate(listOf(RoomListEntriesUpdate.PushFront(FakeRustRoomListItem(A_ROOM_ID_2)))) + processor.postUpdate(listOf(RoomListEntriesUpdate.PushFront(aRustRoom(A_ROOM_ID_2)))) assertThat(summaries.value.count()).isEqualTo(2) assertThat(summaries.value.first().roomId).isEqualTo(A_ROOM_ID_2) @@ -63,7 +64,7 @@ class RoomSummaryListProcessorTest { val processor = createProcessor() val index = 0 - processor.postUpdate(listOf(RoomListEntriesUpdate.Set(index.toUInt(), FakeRustRoomListItem(A_ROOM_ID_2)))) + processor.postUpdate(listOf(RoomListEntriesUpdate.Set(index.toUInt(), aRustRoom(A_ROOM_ID_2)))) assertThat(summaries.value.count()).isEqualTo(1) assertThat(summaries.value[index].roomId).isEqualTo(A_ROOM_ID_2) @@ -75,7 +76,7 @@ class RoomSummaryListProcessorTest { val processor = createProcessor() val index = 0 - processor.postUpdate(listOf(RoomListEntriesUpdate.Insert(index.toUInt(), FakeRustRoomListItem(A_ROOM_ID_2)))) + processor.postUpdate(listOf(RoomListEntriesUpdate.Insert(index.toUInt(), aRustRoom(A_ROOM_ID_2)))) assertThat(summaries.value.count()).isEqualTo(2) assertThat(summaries.value[index].roomId).isEqualTo(A_ROOM_ID_2) @@ -163,12 +164,17 @@ class RoomSummaryListProcessorTest { val processor = createProcessor() val index = 0 - processor.postUpdate(listOf(RoomListEntriesUpdate.Reset(listOf(FakeRustRoomListItem(A_ROOM_ID_3))))) + processor.postUpdate(listOf(RoomListEntriesUpdate.Reset(listOf(aRustRoom(A_ROOM_ID_3))))) assertThat(summaries.value.count()).isEqualTo(1) assertThat(summaries.value[index].roomId).isEqualTo(A_ROOM_ID_3) } + private fun aRustRoom(roomId: RoomId = A_ROOM_ID) = FakeRustRoom( + roomId = roomId, + latestEventLambda = { null }, + ) + private fun TestScope.createProcessor() = RoomSummaryListProcessor( summaries, FakeRustRoomListService(), From 37120c5ee563a955c23d5fc74ced47da60fc287b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 27 May 2025 13:33:23 +0200 Subject: [PATCH 10/25] fix(deps): update dependency com.posthog:posthog-android to v3.15.1 (#4787) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index be471ed8a9..92a483368e 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -190,7 +190,7 @@ opusencoder = "io.element.android:opusencoder:1.1.0" zxing_cpp = "io.github.zxing-cpp:android:2.3.0" # Analytics -posthog = "com.posthog:posthog-android:3.15.0" +posthog = "com.posthog:posthog-android:3.15.1" sentry = "io.sentry:sentry-android:8.12.0" # main branch can be tested replacing the version with main-SNAPSHOT matrix_analytics_events = "com.github.matrix-org:matrix-analytics-events:0.28.0" From c86154d120b0a7e84cf48bdd217a2e7565d04fb6 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Tue, 27 May 2025 16:31:05 +0200 Subject: [PATCH 11/25] Hide Element Call entry point if Element Call service is not available. (#4783) * Hide Element Call entry point if Element Call service is not available. * No need to preview the case RoomCallState.Unavailable * Hide start call action from user profile if Element Call is not available. * Add mising `use` and cover the problem by a test. * Update screenshots * Update enterprise submodule ref. * Ensure `enterpriseService.isElementCallAvailable()` is not called several times. And fix unit tests on CI --------- Co-authored-by: ElementBot --- enterprise | 2 +- .../enterprise/api/EnterpriseService.kt | 2 + .../impl/DefaultEnterpriseService.kt | 2 + .../enterprise/test/FakeEnterpriseService.kt | 5 ++ .../impl/timeline/components/CallMenuItem.kt | 3 + .../components/TimelineItemCallNotifyView.kt | 11 +-- .../features/roomcall/api/RoomCallState.kt | 3 + .../roomcall/api/RoomCallStateProvider.kt | 1 + features/roomcall/impl/build.gradle.kts | 2 + .../roomcall/impl/RoomCallStatePresenter.kt | 7 ++ .../impl/RoomCallStatePresenterTest.kt | 78 ++++++++++++------- features/userprofile/impl/build.gradle.kts | 2 + .../impl/root/UserProfilePresenter.kt | 22 ++++-- .../impl/UserProfilePresenterTest.kt | 35 +++++++-- .../matrix/test/room/FakeBaseRoom.kt | 10 ++- ...eline.components_CallMenuItem_Day_5_en.png | 3 + ...ine.components_CallMenuItem_Night_5_en.png | 3 + 17 files changed, 146 insertions(+), 45 deletions(-) create mode 100644 tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_CallMenuItem_Day_5_en.png create mode 100644 tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_CallMenuItem_Night_5_en.png diff --git a/enterprise b/enterprise index d3dffc97bf..4a07c862a2 160000 --- a/enterprise +++ b/enterprise @@ -1 +1 @@ -Subproject commit d3dffc97bf8b39386ace2db7d857bbff05c73c18 +Subproject commit 4a07c862a23a9fd1418eabf132cf9d6b25ea4927 diff --git a/features/enterprise/api/src/main/kotlin/io/element/android/features/enterprise/api/EnterpriseService.kt b/features/enterprise/api/src/main/kotlin/io/element/android/features/enterprise/api/EnterpriseService.kt index 4e2a3cc1f2..d15586038b 100644 --- a/features/enterprise/api/src/main/kotlin/io/element/android/features/enterprise/api/EnterpriseService.kt +++ b/features/enterprise/api/src/main/kotlin/io/element/android/features/enterprise/api/EnterpriseService.kt @@ -16,6 +16,8 @@ interface EnterpriseService { fun defaultHomeserverList(): List suspend fun isAllowedToConnectToHomeserver(homeserverUrl: String): Boolean + suspend fun isElementCallAvailable(): Boolean + fun semanticColorsLight(): SemanticColors fun semanticColorsDark(): SemanticColors diff --git a/features/enterprise/impl/src/main/kotlin/io/element/android/features/enterprise/impl/DefaultEnterpriseService.kt b/features/enterprise/impl/src/main/kotlin/io/element/android/features/enterprise/impl/DefaultEnterpriseService.kt index 7f4f4b387b..3b0995c81e 100644 --- a/features/enterprise/impl/src/main/kotlin/io/element/android/features/enterprise/impl/DefaultEnterpriseService.kt +++ b/features/enterprise/impl/src/main/kotlin/io/element/android/features/enterprise/impl/DefaultEnterpriseService.kt @@ -25,6 +25,8 @@ class DefaultEnterpriseService @Inject constructor() : EnterpriseService { override fun defaultHomeserverList(): List = emptyList() override suspend fun isAllowedToConnectToHomeserver(homeserverUrl: String) = true + override suspend fun isElementCallAvailable(): Boolean = true + override fun semanticColorsLight(): SemanticColors = compoundColorsLight override fun semanticColorsDark(): SemanticColors = compoundColorsDark diff --git a/features/enterprise/test/src/main/kotlin/io/element/android/features/enterprise/test/FakeEnterpriseService.kt b/features/enterprise/test/src/main/kotlin/io/element/android/features/enterprise/test/FakeEnterpriseService.kt index 14195e1243..bc90c77ada 100644 --- a/features/enterprise/test/src/main/kotlin/io/element/android/features/enterprise/test/FakeEnterpriseService.kt +++ b/features/enterprise/test/src/main/kotlin/io/element/android/features/enterprise/test/FakeEnterpriseService.kt @@ -18,6 +18,7 @@ class FakeEnterpriseService( private val isEnterpriseUserResult: (SessionId) -> Boolean = { lambdaError() }, private val defaultHomeserverListResult: () -> List = { emptyList() }, private val isAllowedToConnectToHomeserverResult: (String) -> Boolean = { lambdaError() }, + private val isElementCallAvailableResult: () -> Boolean = { lambdaError() }, private val semanticColorsLightResult: () -> SemanticColors = { lambdaError() }, private val semanticColorsDarkResult: () -> SemanticColors = { lambdaError() }, private val firebasePushGatewayResult: () -> String? = { lambdaError() }, @@ -35,6 +36,10 @@ class FakeEnterpriseService( isAllowedToConnectToHomeserverResult(homeserverUrl) } + override suspend fun isElementCallAvailable(): Boolean = simulateLongTask { + isElementCallAvailableResult() + } + override fun semanticColorsLight(): SemanticColors { return semanticColorsLightResult() } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/CallMenuItem.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/CallMenuItem.kt index 098421f177..4bbccabc53 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/CallMenuItem.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/CallMenuItem.kt @@ -38,6 +38,9 @@ internal fun CallMenuItem( modifier: Modifier = Modifier, ) { when (roomCallState) { + RoomCallState.Unavailable -> { + Box(modifier) + } is RoomCallState.StandBy -> { StandByCallMenuItem( roomCallState = roomCallState, diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemCallNotifyView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemCallNotifyView.kt index 41d9fa111b..1386a5a666 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemCallNotifyView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemCallNotifyView.kt @@ -103,10 +103,12 @@ internal fun TimelineItemCallNotifyView( @PreviewsDayNight @Composable -internal fun TimelineItemCallNotifyViewPreview() { - ElementPreview { - Column(modifier = Modifier.padding(16.dp), verticalArrangement = Arrangement.spacedBy(16.dp)) { - RoomCallStateProvider().values.forEach { roomCallState -> +internal fun TimelineItemCallNotifyViewPreview() = ElementPreview { + Column(modifier = Modifier.padding(16.dp), verticalArrangement = Arrangement.spacedBy(16.dp)) { + RoomCallStateProvider() + .values + .filter { it !is RoomCallState.Unavailable } + .forEach { roomCallState -> TimelineItemCallNotifyView( event = aTimelineItemEvent(content = TimelineItemCallNotifyContent()), roomCallState = roomCallState, @@ -114,6 +116,5 @@ internal fun TimelineItemCallNotifyViewPreview() { onJoinCallClick = {}, ) } - } } } diff --git a/features/roomcall/api/src/main/kotlin/io/element/android/features/roomcall/api/RoomCallState.kt b/features/roomcall/api/src/main/kotlin/io/element/android/features/roomcall/api/RoomCallState.kt index 13db67f447..725915b91a 100644 --- a/features/roomcall/api/src/main/kotlin/io/element/android/features/roomcall/api/RoomCallState.kt +++ b/features/roomcall/api/src/main/kotlin/io/element/android/features/roomcall/api/RoomCallState.kt @@ -13,6 +13,8 @@ import io.element.android.features.roomcall.api.RoomCallState.StandBy @Immutable sealed interface RoomCallState { + data object Unavailable : RoomCallState + data class StandBy( val canStartCall: Boolean, ) : RoomCallState @@ -25,6 +27,7 @@ sealed interface RoomCallState { } fun RoomCallState.hasPermissionToJoin() = when (this) { + RoomCallState.Unavailable -> false is StandBy -> canStartCall is OnGoing -> canJoinCall } diff --git a/features/roomcall/api/src/main/kotlin/io/element/android/features/roomcall/api/RoomCallStateProvider.kt b/features/roomcall/api/src/main/kotlin/io/element/android/features/roomcall/api/RoomCallStateProvider.kt index cd83a06616..de3bc4ade8 100644 --- a/features/roomcall/api/src/main/kotlin/io/element/android/features/roomcall/api/RoomCallStateProvider.kt +++ b/features/roomcall/api/src/main/kotlin/io/element/android/features/roomcall/api/RoomCallStateProvider.kt @@ -16,6 +16,7 @@ open class RoomCallStateProvider : PreviewParameterProvider { anOngoingCallState(), anOngoingCallState(canJoinCall = false), anOngoingCallState(canJoinCall = true, isUserInTheCall = true), + RoomCallState.Unavailable, ) } diff --git a/features/roomcall/impl/build.gradle.kts b/features/roomcall/impl/build.gradle.kts index d4ed1e1fd4..0ec555bfb5 100644 --- a/features/roomcall/impl/build.gradle.kts +++ b/features/roomcall/impl/build.gradle.kts @@ -21,6 +21,7 @@ dependencies { api(projects.features.roomcall.api) implementation(libs.kotlinx.collections.immutable) implementation(projects.features.call.api) + implementation(projects.features.enterprise.api) implementation(projects.libraries.architecture) implementation(projects.libraries.matrix.api) implementation(projects.libraries.matrixui) @@ -32,6 +33,7 @@ dependencies { testImplementation(libs.test.turbine) testImplementation(projects.libraries.matrix.test) testImplementation(projects.features.call.test) + testImplementation(projects.features.enterprise.test) testImplementation(projects.tests.testutils) testImplementation(libs.androidx.compose.ui.test.junit) testReleaseImplementation(libs.androidx.compose.ui.test.manifest) diff --git a/features/roomcall/impl/src/main/kotlin/io/element/android/features/roomcall/impl/RoomCallStatePresenter.kt b/features/roomcall/impl/src/main/kotlin/io/element/android/features/roomcall/impl/RoomCallStatePresenter.kt index 6df9f8103b..dbcf39766b 100644 --- a/features/roomcall/impl/src/main/kotlin/io/element/android/features/roomcall/impl/RoomCallStatePresenter.kt +++ b/features/roomcall/impl/src/main/kotlin/io/element/android/features/roomcall/impl/RoomCallStatePresenter.kt @@ -11,9 +11,11 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.collectAsState import androidx.compose.runtime.derivedStateOf import androidx.compose.runtime.getValue +import androidx.compose.runtime.produceState import androidx.compose.runtime.remember import io.element.android.features.call.api.CurrentCall import io.element.android.features.call.api.CurrentCallService +import io.element.android.features.enterprise.api.EnterpriseService import io.element.android.features.roomcall.api.RoomCallState import io.element.android.libraries.architecture.Presenter import io.element.android.libraries.matrix.api.room.JoinedRoom @@ -23,9 +25,13 @@ import javax.inject.Inject class RoomCallStatePresenter @Inject constructor( private val room: JoinedRoom, private val currentCallService: CurrentCallService, + private val enterpriseService: EnterpriseService, ) : Presenter { @Composable override fun present(): RoomCallState { + val isAvailable by produceState(false) { + value = enterpriseService.isElementCallAvailable() + } val roomInfo by room.roomInfoFlow.collectAsState() val syncUpdateFlow = room.syncUpdateFlow.collectAsState() val canJoinCall by room.canCall(updateKey = syncUpdateFlow.value) @@ -41,6 +47,7 @@ class RoomCallStatePresenter @Inject constructor( } } val callState = when { + isAvailable.not() -> RoomCallState.Unavailable roomInfo.hasRoomCall -> RoomCallState.OnGoing( canJoinCall = canJoinCall, isUserInTheCall = isUserInTheCall, diff --git a/features/roomcall/impl/src/test/kotlin/io/element/android/features/roomcall/impl/RoomCallStatePresenterTest.kt b/features/roomcall/impl/src/test/kotlin/io/element/android/features/roomcall/impl/RoomCallStatePresenterTest.kt index 9f99b9b1af..437a495934 100644 --- a/features/roomcall/impl/src/test/kotlin/io/element/android/features/roomcall/impl/RoomCallStatePresenterTest.kt +++ b/features/roomcall/impl/src/test/kotlin/io/element/android/features/roomcall/impl/RoomCallStatePresenterTest.kt @@ -11,6 +11,7 @@ import com.google.common.truth.Truth.assertThat import io.element.android.features.call.api.CurrentCall import io.element.android.features.call.api.CurrentCallService import io.element.android.features.call.test.FakeCurrentCallService +import io.element.android.features.enterprise.test.FakeEnterpriseService import io.element.android.features.roomcall.api.RoomCallState import io.element.android.libraries.matrix.api.room.JoinedRoom import io.element.android.libraries.matrix.test.room.FakeBaseRoom @@ -25,12 +26,13 @@ class RoomCallStatePresenterTest { @Test fun `present - initial state`() = runTest { val room = FakeJoinedRoom( - baseRoom = FakeBaseRoom( + baseRoom = FakeBaseRoom( canUserJoinCallResult = { Result.success(false) }, ) ) val presenter = createRoomCallStatePresenter(joinedRoom = room) presenter.test { + skipItems(1) val initialState = awaitItem() assertThat(initialState).isEqualTo( RoomCallState.StandBy( @@ -40,10 +42,29 @@ class RoomCallStatePresenterTest { } } + @Test + fun `present - element call not available`() = runTest { + val room = FakeJoinedRoom( + baseRoom = FakeBaseRoom( + canUserJoinCallResult = { Result.success(false) }, + ) + ) + val presenter = createRoomCallStatePresenter( + joinedRoom = room, + isElementCallAvailable = false, + ) + presenter.test { + val initialState = awaitItem() + assertThat(initialState).isEqualTo( + RoomCallState.Unavailable + ) + } + } + @Test fun `present - initial state - user can join call`() = runTest { val room = FakeJoinedRoom( - baseRoom = FakeBaseRoom( + baseRoom = FakeBaseRoom( canUserJoinCallResult = { Result.success(true) }, ) ) @@ -69,6 +90,7 @@ class RoomCallStatePresenterTest { ) val presenter = createRoomCallStatePresenter(joinedRoom = room) presenter.test { + skipItems(1) assertThat(awaitItem()).isEqualTo( RoomCallState.OnGoing( canJoinCall = false, @@ -83,15 +105,15 @@ class RoomCallStatePresenterTest { fun `present - user has joined the call on another session`() = runTest { val room = FakeJoinedRoom( baseRoom = FakeBaseRoom( - canUserJoinCallResult = { Result.success(true) }, - ).apply { - givenRoomInfo( - aRoomInfo( - hasRoomCall = true, - activeRoomCallParticipants = listOf(sessionId), + canUserJoinCallResult = { Result.success(true) }, + ).apply { + givenRoomInfo( + aRoomInfo( + hasRoomCall = true, + activeRoomCallParticipants = listOf(sessionId), + ) ) - ) - } + } ) val presenter = createRoomCallStatePresenter(joinedRoom = room) presenter.test { @@ -110,15 +132,15 @@ class RoomCallStatePresenterTest { fun `present - user has joined the call locally`() = runTest { val room = FakeJoinedRoom( baseRoom = FakeBaseRoom( - canUserJoinCallResult = { Result.success(true) }, - ).apply { - givenRoomInfo( - aRoomInfo( - hasRoomCall = true, - activeRoomCallParticipants = listOf(sessionId), + canUserJoinCallResult = { Result.success(true) }, + ).apply { + givenRoomInfo( + aRoomInfo( + hasRoomCall = true, + activeRoomCallParticipants = listOf(sessionId), + ) ) - ) - } + } ) val presenter = createRoomCallStatePresenter( joinedRoom = room, @@ -140,15 +162,15 @@ class RoomCallStatePresenterTest { fun `present - user leaves the call`() = runTest { val room = FakeJoinedRoom( baseRoom = FakeBaseRoom( - canUserJoinCallResult = { Result.success(true) }, - ).apply { - givenRoomInfo( - aRoomInfo( - hasRoomCall = true, - activeRoomCallParticipants = listOf(sessionId), + canUserJoinCallResult = { Result.success(true) }, + ).apply { + givenRoomInfo( + aRoomInfo( + hasRoomCall = true, + activeRoomCallParticipants = listOf(sessionId), + ) ) - ) - } + } ) val currentCall = MutableStateFlow(CurrentCall.RoomCall(room.roomId)) val currentCallService = FakeCurrentCallService(currentCall = currentCall) @@ -203,10 +225,14 @@ class RoomCallStatePresenterTest { private fun createRoomCallStatePresenter( joinedRoom: JoinedRoom, currentCallService: CurrentCallService = FakeCurrentCallService(), + isElementCallAvailable: Boolean = true, ): RoomCallStatePresenter { return RoomCallStatePresenter( room = joinedRoom, currentCallService = currentCallService, + enterpriseService = FakeEnterpriseService( + isElementCallAvailableResult = { isElementCallAvailable }, + ), ) } } diff --git a/features/userprofile/impl/build.gradle.kts b/features/userprofile/impl/build.gradle.kts index 70769c986d..4242efcb98 100644 --- a/features/userprofile/impl/build.gradle.kts +++ b/features/userprofile/impl/build.gradle.kts @@ -33,6 +33,7 @@ dependencies { implementation(projects.libraries.androidutils) implementation(projects.libraries.mediaviewer.api) implementation(projects.features.call.api) + implementation(projects.features.enterprise.api) implementation(projects.features.verifysession.api) api(projects.features.userprofile.api) api(projects.features.userprofile.shared) @@ -49,6 +50,7 @@ dependencies { testImplementation(libs.test.robolectric) testImplementation(projects.libraries.matrix.test) testImplementation(projects.features.createroom.test) + testImplementation(projects.features.enterprise.test) testImplementation(projects.tests.testutils) testImplementation(libs.androidx.compose.ui.test.junit) testReleaseImplementation(libs.androidx.compose.ui.test.manifest) diff --git a/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/root/UserProfilePresenter.kt b/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/root/UserProfilePresenter.kt index c098177529..237c57fecf 100644 --- a/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/root/UserProfilePresenter.kt +++ b/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/root/UserProfilePresenter.kt @@ -21,6 +21,7 @@ import dagger.assisted.Assisted import dagger.assisted.AssistedFactory import dagger.assisted.AssistedInject import io.element.android.features.createroom.api.StartDMAction +import io.element.android.features.enterprise.api.EnterpriseService import io.element.android.features.userprofile.api.UserProfileEvents import io.element.android.features.userprofile.api.UserProfileState import io.element.android.features.userprofile.api.UserProfileState.ConfirmationDialog @@ -44,6 +45,7 @@ class UserProfilePresenter @AssistedInject constructor( @Assisted private val userId: UserId, private val client: MatrixClient, private val startDMAction: StartDMAction, + private val enterpriseService: EnterpriseService, ) : Presenter { @AssistedFactory interface Factory { @@ -59,11 +61,21 @@ class UserProfilePresenter @AssistedInject constructor( @Composable private fun getCanCall(roomId: RoomId?): State { - return produceState(initialValue = false, roomId) { - value = if (client.isMe(userId)) { - false - } else { - roomId?.let { client.getRoom(it)?.canUserJoinCall(client.sessionId)?.getOrNull() == true }.orFalse() + val isElementCallAvailable by produceState(initialValue = false, roomId) { + value = enterpriseService.isElementCallAvailable() + } + + return produceState(initialValue = false, isElementCallAvailable, roomId) { + value = when { + isElementCallAvailable.not() -> false + client.isMe(userId) -> false + else -> + roomId + ?.let { client.getRoom(it) } + ?.use { room -> + room.canUserJoinCall(client.sessionId).getOrNull() + } + .orFalse() } } } diff --git a/features/userprofile/impl/src/test/kotlin/io/element/android/features/userprofile/impl/UserProfilePresenterTest.kt b/features/userprofile/impl/src/test/kotlin/io/element/android/features/userprofile/impl/UserProfilePresenterTest.kt index 76464b973c..d0369da660 100644 --- a/features/userprofile/impl/src/test/kotlin/io/element/android/features/userprofile/impl/UserProfilePresenterTest.kt +++ b/features/userprofile/impl/src/test/kotlin/io/element/android/features/userprofile/impl/UserProfilePresenterTest.kt @@ -16,6 +16,7 @@ import com.google.common.truth.Truth.assertThat import io.element.android.features.createroom.api.ConfirmingStartDmWithMatrixUser import io.element.android.features.createroom.api.StartDMAction import io.element.android.features.createroom.test.FakeStartDMAction +import io.element.android.features.enterprise.test.FakeEnterpriseService import io.element.android.features.userprofile.api.UserProfileEvents import io.element.android.features.userprofile.api.UserProfileState import io.element.android.features.userprofile.api.UserProfileVerificationState @@ -37,7 +38,6 @@ import io.element.android.libraries.matrix.test.encryption.FakeEncryptionService import io.element.android.libraries.matrix.test.room.FakeBaseRoom import io.element.android.libraries.matrix.ui.components.aMatrixUser import io.element.android.tests.testutils.WarmUpRule -import io.element.android.tests.testutils.awaitLastSequentialItem import io.element.android.tests.testutils.lambda.any import io.element.android.tests.testutils.lambda.lambdaRecorder import io.element.android.tests.testutils.lambda.value @@ -81,6 +81,8 @@ class UserProfilePresenterTest { fun `present - canCall is true when all the conditions are met`() { testCanCall( expectedResult = true, + skipItems = 3, + checkThatRoomIsDestroyed = true, ) } @@ -116,11 +118,22 @@ class UserProfilePresenterTest { ) } + @Test + fun `present - canCall is false when call is not available`() { + testCanCall( + isElementCallAvailable = false, + expectedResult = false, + ) + } + private fun testCanCall( + isElementCallAvailable: Boolean = true, canUserJoinCallResult: Result = Result.success(true), dmRoom: RoomId? = A_ROOM_ID, canFindRoom: Boolean = true, expectedResult: Boolean, + skipItems: Int = 1, + checkThatRoomIsDestroyed: Boolean = false, ) = runTest { val room = FakeBaseRoom( canUserJoinCallResult = { canUserJoinCallResult }, @@ -134,11 +147,15 @@ class UserProfilePresenterTest { val presenter = createUserProfilePresenter( userId = A_USER_ID_2, client = client, + isElementCallAvailable = isElementCallAvailable, ) presenter.test { - val initialState = awaitLastSequentialItem() + val initialState = awaitFirstItem(skipItems) assertThat(initialState.canCall).isEqualTo(expectedResult) } + if (checkThatRoomIsDestroyed) { + room.assertDestroyed() + } } @Test @@ -202,7 +219,7 @@ class UserProfilePresenterTest { ) val presenter = createUserProfilePresenter(client = matrixClient) presenter.test { - val initialState = awaitFirstItem() + val initialState = awaitFirstItem(count = 2) initialState.eventSink(UserProfileEvents.BlockUser(needsConfirmation = false)) assertThat(awaitItem().isBlocked.isLoading()).isTrue() val errorState = awaitItem() @@ -220,7 +237,7 @@ class UserProfilePresenterTest { ) val presenter = createUserProfilePresenter(client = matrixClient) presenter.test { - val initialState = awaitFirstItem() + val initialState = awaitFirstItem(count = 2) initialState.eventSink(UserProfileEvents.UnblockUser(needsConfirmation = false)) assertThat(awaitItem().isBlocked.isLoading()).isTrue() val errorState = awaitItem() @@ -363,8 +380,8 @@ class UserProfilePresenterTest { } } - private suspend fun ReceiveTurbine.awaitFirstItem(): T { - skipItems(1) + private suspend fun ReceiveTurbine.awaitFirstItem(count: Int = 1): T { + skipItems(count) return awaitItem() } @@ -387,12 +404,16 @@ class UserProfilePresenterTest { private fun createUserProfilePresenter( client: MatrixClient = createFakeMatrixClient(), userId: UserId = UserId("@alice:server.org"), - startDMAction: StartDMAction = FakeStartDMAction() + startDMAction: StartDMAction = FakeStartDMAction(), + isElementCallAvailable: Boolean = true, ): UserProfilePresenter { return UserProfilePresenter( userId = userId, client = client, startDMAction = startDMAction, + enterpriseService = FakeEnterpriseService( + isElementCallAvailableResult = { isElementCallAvailable }, + ), ) } } diff --git a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/FakeBaseRoom.kt b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/FakeBaseRoom.kt index 76e5403133..d755722bd3 100644 --- a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/FakeBaseRoom.kt +++ b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/FakeBaseRoom.kt @@ -93,7 +93,15 @@ class FakeBaseRoom( return powerLevelsResult() } - override fun destroy() = Unit + private var isDestroyed = false + + override fun destroy() { + isDestroyed = true + } + + fun assertDestroyed() { + check(isDestroyed) { "Room should be destroyed" } + } override suspend fun userDisplayName(userId: UserId): Result = simulateLongTask { userDisplayNameResult(userId) diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_CallMenuItem_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_CallMenuItem_Day_5_en.png new file mode 100644 index 0000000000..1b6fb4bab8 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_CallMenuItem_Day_5_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:96a867cb12498cbdc97957bee07855dfaa13602baddaf933aff2b666ef4c7650 +size 3642 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_CallMenuItem_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_CallMenuItem_Night_5_en.png new file mode 100644 index 0000000000..d6fd8eeb70 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_CallMenuItem_Night_5_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5bb36ccd718f3fec5b04f1bc812dc7718b5ea7fa4619c8b031466297a8d016fd +size 3659 From cf17d935807292621d4064cdbb3055a0134eb949 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Tue, 27 May 2025 17:32:09 +0200 Subject: [PATCH 12/25] Stronger lambda error (#4771) * Make sure lambdaError() make the test fail in all circumstances. * Fix existing errors on tests. * Uniformize the way we are creating class under test. * Cleanup * Fix typo * Fix failing test after rebase. --- .../appnav/JoinedRoomLoadedFlowNodeTest.kt | 11 +- .../utils/DefaultActiveCallManagerTest.kt | 256 ++++++++---------- .../utils/DefaultCallWidgetProviderTest.kt | 10 +- .../LockScreenSettingsPresenterTest.kt | 15 +- .../impl/unlock/PinUnlockPresenterTest.kt | 13 +- .../AttachmentsPreviewPresenterTest.kt | 12 +- .../forward/ForwardMessagesPresenterTest.kt | 7 +- .../MessageComposerPresenterTest.kt | 88 +++--- .../impl/history/PollHistoryPresenterTest.kt | 4 +- .../impl/RoomDetailsPresenterTest.kt | 33 +++ .../EditBaseRoomAddressPresenterTest.kt | 18 +- .../reset/ResetIdentityFlowManagerTest.kt | 4 +- .../matrix/impl/room/RustBaseRoomTest.kt | 13 +- .../RustBaseRoomDirectoryListTest.kt | 5 +- .../roomlist/RustBaseRoomListServiceTest.kt | 7 +- .../timeline/TimelineItemsSubscriberTest.kt | 11 +- .../mediaupload/api/MediaSenderTest.kt | 19 +- .../impl/DefaultNavigationStateServiceTest.kt | 29 +- .../android/tests/testutils/lambda/Error.kt | 13 +- 19 files changed, 289 insertions(+), 279 deletions(-) diff --git a/appnav/src/test/kotlin/io/element/android/appnav/JoinedRoomLoadedFlowNodeTest.kt b/appnav/src/test/kotlin/io/element/android/appnav/JoinedRoomLoadedFlowNodeTest.kt index f8d4be1807..15175303dd 100644 --- a/appnav/src/test/kotlin/io/element/android/appnav/JoinedRoomLoadedFlowNodeTest.kt +++ b/appnav/src/test/kotlin/io/element/android/appnav/JoinedRoomLoadedFlowNodeTest.kt @@ -30,7 +30,7 @@ import io.element.android.libraries.matrix.test.room.FakeBaseRoom import io.element.android.libraries.matrix.test.room.FakeJoinedRoom import io.element.android.services.appnavstate.api.ActiveRoomsHolder import io.element.android.services.appnavstate.test.FakeAppNavigationStateService -import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.test.TestScope import kotlinx.coroutines.test.runTest import org.junit.Rule import org.junit.Test @@ -98,19 +98,18 @@ class JoinedRoomLoadedFlowNodeTest { } } - private fun createJoinedRoomLoadedFlowNode( + private fun TestScope.createJoinedRoomLoadedFlowNode( plugins: List, messagesEntryPoint: MessagesEntryPoint = FakeMessagesEntryPoint(), roomDetailsEntryPoint: RoomDetailsEntryPoint = FakeRoomDetailsEntryPoint(), activeRoomsHolder: ActiveRoomsHolder = ActiveRoomsHolder(), - coroutineScope: CoroutineScope, ) = JoinedRoomLoadedFlowNode( buildContext = BuildContext.root(savedStateMap = null), plugins = plugins, messagesEntryPoint = messagesEntryPoint, roomDetailsEntryPoint = roomDetailsEntryPoint, appNavigationStateService = FakeAppNavigationStateService(), - appCoroutineScope = coroutineScope, + appCoroutineScope = this, roomComponentFactory = FakeRoomComponentFactory(), matrixClient = FakeMatrixClient(), activeRoomsHolder = activeRoomsHolder, @@ -125,7 +124,6 @@ class JoinedRoomLoadedFlowNodeTest { val roomFlowNode = createJoinedRoomLoadedFlowNode( plugins = listOf(inputs), messagesEntryPoint = fakeMessagesEntryPoint, - coroutineScope = this ) // WHEN val roomFlowNodeTestHelper = roomFlowNode.parentNodeTestHelper() @@ -148,7 +146,6 @@ class JoinedRoomLoadedFlowNodeTest { plugins = listOf(inputs), messagesEntryPoint = fakeMessagesEntryPoint, roomDetailsEntryPoint = fakeRoomDetailsEntryPoint, - coroutineScope = this ) val roomFlowNodeTestHelper = roomFlowNode.parentNodeTestHelper() // WHEN @@ -171,7 +168,6 @@ class JoinedRoomLoadedFlowNodeTest { plugins = listOf(inputs), messagesEntryPoint = fakeMessagesEntryPoint, roomDetailsEntryPoint = fakeRoomDetailsEntryPoint, - coroutineScope = this, activeRoomsHolder = activeRoomsHolder, ) @@ -197,7 +193,6 @@ class JoinedRoomLoadedFlowNodeTest { plugins = listOf(inputs), messagesEntryPoint = fakeMessagesEntryPoint, roomDetailsEntryPoint = fakeRoomDetailsEntryPoint, - coroutineScope = this, activeRoomsHolder = activeRoomsHolder, ) val roomFlowNodeTestHelper = roomFlowNode.parentNodeTestHelper() diff --git a/features/call/impl/src/test/kotlin/io/element/android/features/call/utils/DefaultActiveCallManagerTest.kt b/features/call/impl/src/test/kotlin/io/element/android/features/call/utils/DefaultActiveCallManagerTest.kt index 2059e9836e..84084c38fe 100644 --- a/features/call/impl/src/test/kotlin/io/element/android/features/call/utils/DefaultActiveCallManagerTest.kt +++ b/features/call/impl/src/test/kotlin/io/element/android/features/call/utils/DefaultActiveCallManagerTest.kt @@ -40,11 +40,7 @@ import io.element.android.tests.testutils.lambda.lambdaRecorder import io.element.android.tests.testutils.lambda.value import io.mockk.mockk import io.mockk.verify -import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.ExperimentalCoroutinesApi -import kotlinx.coroutines.SupervisorJob -import kotlinx.coroutines.cancel -import kotlinx.coroutines.launch import kotlinx.coroutines.test.TestScope import kotlinx.coroutines.test.advanceTimeBy import kotlinx.coroutines.test.runCurrent @@ -63,30 +59,28 @@ class DefaultActiveCallManagerTest { fun `registerIncomingCall - sets the incoming call as active`() = runTest { setupShadowPowerManager() val notificationManagerCompat = mockk(relaxed = true) - inCancellableScope { - val manager = createActiveCallManager(notificationManagerCompat = notificationManagerCompat) + val manager = createActiveCallManager(notificationManagerCompat = notificationManagerCompat) - assertThat(manager.activeWakeLock?.isHeld).isFalse() - assertThat(manager.activeCall.value).isNull() + assertThat(manager.activeWakeLock?.isHeld).isFalse() + assertThat(manager.activeCall.value).isNull() - val callNotificationData = aCallNotificationData() - manager.registerIncomingCall(callNotificationData) + val callNotificationData = aCallNotificationData() + manager.registerIncomingCall(callNotificationData) - assertThat(manager.activeCall.value).isEqualTo( - ActiveCall( - callType = CallType.RoomCall( - sessionId = callNotificationData.sessionId, - roomId = callNotificationData.roomId, - ), - callState = CallState.Ringing(callNotificationData) - ) + assertThat(manager.activeCall.value).isEqualTo( + ActiveCall( + callType = CallType.RoomCall( + sessionId = callNotificationData.sessionId, + roomId = callNotificationData.roomId, + ), + callState = CallState.Ringing(callNotificationData) ) + ) - runCurrent() + runCurrent() - assertThat(manager.activeWakeLock?.isHeld).isTrue() - verify { notificationManagerCompat.notify(notificationId, any()) } - } + assertThat(manager.activeWakeLock?.isHeld).isTrue() + verify { notificationManagerCompat.notify(notificationId, any()) } } @OptIn(ExperimentalCoroutinesApi::class) @@ -94,42 +88,38 @@ class DefaultActiveCallManagerTest { fun `registerIncomingCall - when there is an already active call adds missed call notification`() = runTest { val addMissedCallNotificationLambda = lambdaRecorder { _, _, _ -> } val onMissedCallNotificationHandler = FakeOnMissedCallNotificationHandler(addMissedCallNotificationLambda = addMissedCallNotificationLambda) - inCancellableScope { - val manager = createActiveCallManager( - onMissedCallNotificationHandler = onMissedCallNotificationHandler, - ) + val manager = createActiveCallManager( + onMissedCallNotificationHandler = onMissedCallNotificationHandler, + ) - // Register existing call - val callNotificationData = aCallNotificationData() - manager.registerIncomingCall(callNotificationData) - val activeCall = manager.activeCall.value + // Register existing call + val callNotificationData = aCallNotificationData() + manager.registerIncomingCall(callNotificationData) + val activeCall = manager.activeCall.value - // Now add a new call - manager.registerIncomingCall(aCallNotificationData(roomId = A_ROOM_ID_2)) + // Now add a new call + manager.registerIncomingCall(aCallNotificationData(roomId = A_ROOM_ID_2)) - assertThat(manager.activeCall.value).isEqualTo(activeCall) - assertThat((manager.activeCall.value?.callType as? CallType.RoomCall)?.roomId).isNotEqualTo(A_ROOM_ID_2) + assertThat(manager.activeCall.value).isEqualTo(activeCall) + assertThat((manager.activeCall.value?.callType as? CallType.RoomCall)?.roomId).isNotEqualTo(A_ROOM_ID_2) - advanceTimeBy(1) + advanceTimeBy(1) - addMissedCallNotificationLambda.assertions() - .isCalledOnce() - .with(value(A_SESSION_ID), value(A_ROOM_ID_2), value(AN_EVENT_ID)) - } + addMissedCallNotificationLambda.assertions() + .isCalledOnce() + .with(value(A_SESSION_ID), value(A_ROOM_ID_2), value(AN_EVENT_ID)) } @Test fun `incomingCallTimedOut - when there isn't an active call does nothing`() = runTest { val addMissedCallNotificationLambda = lambdaRecorder { _, _, _ -> } - inCancellableScope { - val manager = createActiveCallManager( - onMissedCallNotificationHandler = FakeOnMissedCallNotificationHandler(addMissedCallNotificationLambda = addMissedCallNotificationLambda) - ) + val manager = createActiveCallManager( + onMissedCallNotificationHandler = FakeOnMissedCallNotificationHandler(addMissedCallNotificationLambda = addMissedCallNotificationLambda) + ) - manager.incomingCallTimedOut(displayMissedCallNotification = true) + manager.incomingCallTimedOut(displayMissedCallNotification = true) - addMissedCallNotificationLambda.assertions().isNeverCalled() - } + addMissedCallNotificationLambda.assertions().isNeverCalled() } @OptIn(ExperimentalCoroutinesApi::class) @@ -138,90 +128,80 @@ class DefaultActiveCallManagerTest { setupShadowPowerManager() val notificationManagerCompat = mockk(relaxed = true) val addMissedCallNotificationLambda = lambdaRecorder { _, _, _ -> } - inCancellableScope { - val manager = createActiveCallManager( - onMissedCallNotificationHandler = FakeOnMissedCallNotificationHandler(addMissedCallNotificationLambda = addMissedCallNotificationLambda), - notificationManagerCompat = notificationManagerCompat, - ) + val manager = createActiveCallManager( + onMissedCallNotificationHandler = FakeOnMissedCallNotificationHandler(addMissedCallNotificationLambda = addMissedCallNotificationLambda), + notificationManagerCompat = notificationManagerCompat, + ) - manager.registerIncomingCall(aCallNotificationData()) - assertThat(manager.activeCall.value).isNotNull() - assertThat(manager.activeWakeLock?.isHeld).isTrue() + manager.registerIncomingCall(aCallNotificationData()) + assertThat(manager.activeCall.value).isNotNull() + assertThat(manager.activeWakeLock?.isHeld).isTrue() - manager.incomingCallTimedOut(displayMissedCallNotification = true) - advanceTimeBy(1) + manager.incomingCallTimedOut(displayMissedCallNotification = true) + advanceTimeBy(1) - assertThat(manager.activeCall.value).isNull() - assertThat(manager.activeWakeLock?.isHeld).isFalse() - addMissedCallNotificationLambda.assertions().isCalledOnce() - verify { notificationManagerCompat.cancel(notificationId) } - } + assertThat(manager.activeCall.value).isNull() + assertThat(manager.activeWakeLock?.isHeld).isFalse() + addMissedCallNotificationLambda.assertions().isCalledOnce() + verify { notificationManagerCompat.cancel(notificationId) } } @Test fun `hungUpCall - removes existing call if the CallType matches`() = runTest { setupShadowPowerManager() val notificationManagerCompat = mockk(relaxed = true) - // Create a cancellable coroutine scope to cancel the test when needed - inCancellableScope { - val manager = createActiveCallManager(notificationManagerCompat = notificationManagerCompat) + val manager = createActiveCallManager(notificationManagerCompat = notificationManagerCompat) - val notificationData = aCallNotificationData() - manager.registerIncomingCall(notificationData) - assertThat(manager.activeCall.value).isNotNull() - assertThat(manager.activeWakeLock?.isHeld).isTrue() + val notificationData = aCallNotificationData() + manager.registerIncomingCall(notificationData) + assertThat(manager.activeCall.value).isNotNull() + assertThat(manager.activeWakeLock?.isHeld).isTrue() - manager.hungUpCall(CallType.RoomCall(notificationData.sessionId, notificationData.roomId)) - assertThat(manager.activeCall.value).isNull() - assertThat(manager.activeWakeLock?.isHeld).isFalse() + manager.hungUpCall(CallType.RoomCall(notificationData.sessionId, notificationData.roomId)) + assertThat(manager.activeCall.value).isNull() + assertThat(manager.activeWakeLock?.isHeld).isFalse() - verify { notificationManagerCompat.cancel(notificationId) } - } + verify { notificationManagerCompat.cancel(notificationId) } } @Test fun `hungUpCall - does nothing if the CallType doesn't match`() = runTest { setupShadowPowerManager() val notificationManagerCompat = mockk(relaxed = true) - // Create a cancellable coroutine scope to cancel the test when needed - inCancellableScope { - val manager = createActiveCallManager(notificationManagerCompat = notificationManagerCompat) + val manager = createActiveCallManager(notificationManagerCompat = notificationManagerCompat) - manager.registerIncomingCall(aCallNotificationData()) - assertThat(manager.activeCall.value).isNotNull() - assertThat(manager.activeWakeLock?.isHeld).isTrue() + manager.registerIncomingCall(aCallNotificationData()) + assertThat(manager.activeCall.value).isNotNull() + assertThat(manager.activeWakeLock?.isHeld).isTrue() - manager.hungUpCall(CallType.ExternalUrl("https://example.com")) - assertThat(manager.activeCall.value).isNotNull() - assertThat(manager.activeWakeLock?.isHeld).isTrue() + manager.hungUpCall(CallType.ExternalUrl("https://example.com")) + assertThat(manager.activeCall.value).isNotNull() + assertThat(manager.activeWakeLock?.isHeld).isTrue() - verify(exactly = 0) { notificationManagerCompat.cancel(notificationId) } - } + verify(exactly = 0) { notificationManagerCompat.cancel(notificationId) } } @OptIn(ExperimentalCoroutinesApi::class) @Test fun `joinedCall - register an ongoing call and tries sending the call notify event`() = runTest { val notificationManagerCompat = mockk(relaxed = true) - inCancellableScope { - val manager = createActiveCallManager(notificationManagerCompat = notificationManagerCompat) - assertThat(manager.activeCall.value).isNull() + val manager = createActiveCallManager(notificationManagerCompat = notificationManagerCompat) + assertThat(manager.activeCall.value).isNull() - manager.joinedCall(CallType.RoomCall(A_SESSION_ID, A_ROOM_ID)) - assertThat(manager.activeCall.value).isEqualTo( - ActiveCall( - callType = CallType.RoomCall( - sessionId = A_SESSION_ID, - roomId = A_ROOM_ID, - ), - callState = CallState.InCall, - ) + manager.joinedCall(CallType.RoomCall(A_SESSION_ID, A_ROOM_ID)) + assertThat(manager.activeCall.value).isEqualTo( + ActiveCall( + callType = CallType.RoomCall( + sessionId = A_SESSION_ID, + roomId = A_ROOM_ID, + ), + callState = CallState.InCall, ) + ) - runCurrent() + runCurrent() - verify { notificationManagerCompat.cancel(notificationId) } - } + verify { notificationManagerCompat.cancel(notificationId) } } @OptIn(ExperimentalCoroutinesApi::class) @@ -233,22 +213,19 @@ class DefaultActiveCallManagerTest { val client = FakeMatrixClient().apply { givenGetRoomResult(A_ROOM_ID, room) } - // Create a cancellable coroutine scope to cancel the test when needed - inCancellableScope { - val matrixClientProvider = FakeMatrixClientProvider(getClient = { Result.success(client) }) - val manager = createActiveCallManager(matrixClientProvider = matrixClientProvider) + val matrixClientProvider = FakeMatrixClientProvider(getClient = { Result.success(client) }) + val manager = createActiveCallManager(matrixClientProvider = matrixClientProvider) - manager.registerIncomingCall(aCallNotificationData()) + manager.registerIncomingCall(aCallNotificationData()) - // Call is active (the other user join the call) - room.givenRoomInfo(aRoomInfo(hasRoomCall = true)) - advanceTimeBy(1) - // Call is cancelled (the other user left the call) - room.givenRoomInfo(aRoomInfo(hasRoomCall = false)) - advanceTimeBy(1) + // Call is active (the other user join the call) + room.givenRoomInfo(aRoomInfo(hasRoomCall = true)) + advanceTimeBy(1) + // Call is cancelled (the other user left the call) + room.givenRoomInfo(aRoomInfo(hasRoomCall = false)) + advanceTimeBy(1) - assertThat(manager.activeCall.value).isNull() - } + assertThat(manager.activeCall.value).isNull() } @OptIn(ExperimentalCoroutinesApi::class) @@ -260,44 +237,34 @@ class DefaultActiveCallManagerTest { val client = FakeMatrixClient().apply { givenGetRoomResult(A_ROOM_ID, room) } - // Create a cancellable coroutine scope to cancel the test when needed - inCancellableScope { - val matrixClientProvider = FakeMatrixClientProvider(getClient = { Result.failure(IllegalStateException("Matrix client not found")) }) - val manager = createActiveCallManager(matrixClientProvider = matrixClientProvider) + val matrixClientProvider = FakeMatrixClientProvider(getClient = { Result.failure(IllegalStateException("Matrix client not found")) }) + val manager = createActiveCallManager(matrixClientProvider = matrixClientProvider) - // No matrix client + // No matrix client - manager.registerIncomingCall(aCallNotificationData()) + manager.registerIncomingCall(aCallNotificationData()) - room.givenRoomInfo(aRoomInfo(hasRoomCall = true)) - advanceTimeBy(1) - room.givenRoomInfo(aRoomInfo(hasRoomCall = false)) - advanceTimeBy(1) + room.givenRoomInfo(aRoomInfo(hasRoomCall = true)) + advanceTimeBy(1) + room.givenRoomInfo(aRoomInfo(hasRoomCall = false)) + advanceTimeBy(1) - // The call should still be active - assertThat(manager.activeCall.value).isNotNull() + // The call should still be active + assertThat(manager.activeCall.value).isNotNull() - // No room - client.givenGetRoomResult(A_ROOM_ID, null) - matrixClientProvider.getClient = { Result.success(client) } + // No room + client.givenGetRoomResult(A_ROOM_ID, null) + matrixClientProvider.getClient = { Result.success(client) } - manager.registerIncomingCall(aCallNotificationData()) + manager.registerIncomingCall(aCallNotificationData()) - room.givenRoomInfo(aRoomInfo(hasRoomCall = true)) - advanceTimeBy(1) - room.givenRoomInfo(aRoomInfo(hasRoomCall = false)) - advanceTimeBy(1) + room.givenRoomInfo(aRoomInfo(hasRoomCall = true)) + advanceTimeBy(1) + room.givenRoomInfo(aRoomInfo(hasRoomCall = false)) + advanceTimeBy(1) - // The call should still be active - assertThat(manager.activeCall.value).isNotNull() - } - } - - private fun TestScope.inCancellableScope(block: suspend CoroutineScope.() -> Unit) { - launch(SupervisorJob()) { - block() - cancel() - } + // The call should still be active + assertThat(manager.activeCall.value).isNotNull() } private fun setupShadowPowerManager() { @@ -306,14 +273,13 @@ class DefaultActiveCallManagerTest { } } - private fun CoroutineScope.createActiveCallManager( + private fun TestScope.createActiveCallManager( matrixClientProvider: FakeMatrixClientProvider = FakeMatrixClientProvider(), onMissedCallNotificationHandler: FakeOnMissedCallNotificationHandler = FakeOnMissedCallNotificationHandler(), notificationManagerCompat: NotificationManagerCompat = mockk(relaxed = true), - coroutineScope: CoroutineScope = this, ) = DefaultActiveCallManager( context = InstrumentationRegistry.getInstrumentation().targetContext, - coroutineScope = coroutineScope, + coroutineScope = backgroundScope, onMissedCallNotificationHandler = onMissedCallNotificationHandler, ringingCallNotificationCreator = RingingCallNotificationCreator( context = InstrumentationRegistry.getInstrumentation().targetContext, diff --git a/features/call/impl/src/test/kotlin/io/element/android/features/call/utils/DefaultCallWidgetProviderTest.kt b/features/call/impl/src/test/kotlin/io/element/android/features/call/utils/DefaultCallWidgetProviderTest.kt index f9267eca7b..a93dd5f91c 100644 --- a/features/call/impl/src/test/kotlin/io/element/android/features/call/utils/DefaultCallWidgetProviderTest.kt +++ b/features/call/impl/src/test/kotlin/io/element/android/features/call/utils/DefaultCallWidgetProviderTest.kt @@ -87,13 +87,19 @@ class DefaultCallWidgetProviderTest { } val activeRoomsHolder = ActiveRoomsHolder().apply { // A current active room with the same room id - addRoom(FakeJoinedRoom(baseRoom = FakeBaseRoom(roomId = A_ROOM_ID))) + addRoom( + FakeJoinedRoom( + baseRoom = FakeBaseRoom(roomId = A_ROOM_ID), + generateWidgetWebViewUrlResult = { _, _, _, _ -> Result.success("url") }, + getWidgetDriverResult = { Result.success(FakeMatrixWidgetDriver()) }, + ) + ) } val provider = createProvider( matrixClientProvider = FakeMatrixClientProvider { Result.success(client) }, activeRoomsHolder = activeRoomsHolder ) - assertThat(provider.getWidget(A_SESSION_ID, A_ROOM_ID, "clientId", "languageTag", "theme").isFailure).isTrue() + assertThat(provider.getWidget(A_SESSION_ID, A_ROOM_ID, "clientId", "languageTag", "theme").isSuccess).isTrue() } @Test diff --git a/features/lockscreen/impl/src/test/kotlin/io/element/android/features/lockscreen/impl/settings/LockScreenSettingsPresenterTest.kt b/features/lockscreen/impl/src/test/kotlin/io/element/android/features/lockscreen/impl/settings/LockScreenSettingsPresenterTest.kt index feabcf35b2..45af2682e1 100644 --- a/features/lockscreen/impl/src/test/kotlin/io/element/android/features/lockscreen/impl/settings/LockScreenSettingsPresenterTest.kt +++ b/features/lockscreen/impl/src/test/kotlin/io/element/android/features/lockscreen/impl/settings/LockScreenSettingsPresenterTest.kt @@ -20,14 +20,14 @@ import io.element.android.features.lockscreen.impl.storage.LockScreenStore import io.element.android.tests.testutils.awaitLastSequentialItem import io.element.android.tests.testutils.consumeItemsUntilPredicate import io.element.android.tests.testutils.test -import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.test.TestScope import kotlinx.coroutines.test.runTest import org.junit.Test class LockScreenSettingsPresenterTest { @Test fun `present - remove pin option is hidden when mandatory`() = runTest { - val presenter = createLockScreenSettingsPresenter(this, lockScreenConfig = aLockScreenConfig(isPinMandatory = true)) + val presenter = createLockScreenSettingsPresenter(lockScreenConfig = aLockScreenConfig(isPinMandatory = true)) presenter.test { awaitItem().also { state -> assertThat(state.showRemovePinOption).isFalse() @@ -37,7 +37,7 @@ class LockScreenSettingsPresenterTest { @Test fun `present - remove pin flow`() = runTest { - val presenter = createLockScreenSettingsPresenter(this) + val presenter = createLockScreenSettingsPresenter() presenter.test { consumeItemsUntilPredicate { state -> state.showRemovePinOption @@ -71,7 +71,6 @@ class LockScreenSettingsPresenterTest { isDeviceSecured = true, ) val presenter = createLockScreenSettingsPresenter( - coroutineScope = this, biometricAuthenticatorManager = fakeBiometricAuthenticatorManager ) presenter.test { @@ -88,7 +87,6 @@ class LockScreenSettingsPresenterTest { } ) val presenter = createLockScreenSettingsPresenter( - coroutineScope = this, biometricAuthenticatorManager = fakeBiometricAuthenticatorManager ) presenter.test { @@ -110,7 +108,6 @@ class LockScreenSettingsPresenterTest { } ) val presenter = createLockScreenSettingsPresenter( - coroutineScope = this, biometricAuthenticatorManager = fakeBiometricAuthenticatorManager ) presenter.test { @@ -130,7 +127,6 @@ class LockScreenSettingsPresenterTest { ) val lockScreenStore = InMemoryLockScreenStore() val presenter = createLockScreenSettingsPresenter( - coroutineScope = this, lockScreenStore = lockScreenStore, biometricAuthenticatorManager = fakeBiometricAuthenticatorManager ) @@ -148,8 +144,7 @@ class LockScreenSettingsPresenterTest { } } - private suspend fun createLockScreenSettingsPresenter( - coroutineScope: CoroutineScope, + private suspend fun TestScope.createLockScreenSettingsPresenter( lockScreenConfig: LockScreenConfig = aLockScreenConfig(), biometricAuthenticatorManager: BiometricAuthenticatorManager = FakeBiometricAuthenticatorManager(), lockScreenStore: LockScreenStore = InMemoryLockScreenStore(), @@ -160,7 +155,7 @@ class LockScreenSettingsPresenterTest { return LockScreenSettingsPresenter( lockScreenStore = lockScreenStore, pinCodeManager = pinCodeManager, - coroutineScope = coroutineScope, + coroutineScope = this, lockScreenConfig = lockScreenConfig, biometricAuthenticatorManager = biometricAuthenticatorManager, ) diff --git a/features/lockscreen/impl/src/test/kotlin/io/element/android/features/lockscreen/impl/unlock/PinUnlockPresenterTest.kt b/features/lockscreen/impl/src/test/kotlin/io/element/android/features/lockscreen/impl/unlock/PinUnlockPresenterTest.kt index cea9fe29f5..5fdf1342ea 100644 --- a/features/lockscreen/impl/src/test/kotlin/io/element/android/features/lockscreen/impl/unlock/PinUnlockPresenterTest.kt +++ b/features/lockscreen/impl/src/test/kotlin/io/element/android/features/lockscreen/impl/unlock/PinUnlockPresenterTest.kt @@ -24,7 +24,7 @@ import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.architecture.AsyncData import io.element.android.tests.testutils.lambda.assert import io.element.android.tests.testutils.lambda.lambdaRecorder -import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.test.TestScope import kotlinx.coroutines.test.runTest import org.junit.Test @@ -34,7 +34,7 @@ class PinUnlockPresenterTest { @Test fun `present - success verify flow`() = runTest { - val presenter = createPinUnlockPresenter(this) + val presenter = createPinUnlockPresenter() moleculeFlow(RecompositionMode.Immediate) { presenter.present() }.test { @@ -71,7 +71,7 @@ class PinUnlockPresenterTest { @Test fun `present - failure verify flow`() = runTest { - val presenter = createPinUnlockPresenter(this) + val presenter = createPinUnlockPresenter() moleculeFlow(RecompositionMode.Immediate) { presenter.present() }.test { @@ -100,7 +100,7 @@ class PinUnlockPresenterTest { fun `present - forgot pin flow`() = runTest { val signOutLambda = lambdaRecorder {} val signOut = FakeLogoutUseCase(signOutLambda) - val presenter = createPinUnlockPresenter(this, logoutUseCase = signOut) + val presenter = createPinUnlockPresenter(logoutUseCase = signOut) moleculeFlow(RecompositionMode.Immediate) { presenter.present() }.test { @@ -135,8 +135,7 @@ class PinUnlockPresenterTest { dataOrNull()?.assertText(text) } - private suspend fun createPinUnlockPresenter( - scope: CoroutineScope, + private suspend fun TestScope.createPinUnlockPresenter( biometricAuthenticatorManager: BiometricAuthenticatorManager = FakeBiometricAuthenticatorManager(), callback: PinCodeManager.Callback = DefaultPinCodeManagerCallback(), logoutUseCase: FakeLogoutUseCase = FakeLogoutUseCase(logoutLambda = { "" }), @@ -149,7 +148,7 @@ class PinUnlockPresenterTest { pinCodeManager = pinCodeManager, biometricAuthenticatorManager = biometricAuthenticatorManager, logoutUseCase = logoutUseCase, - coroutineScope = scope, + coroutineScope = this, pinUnlockHelper = PinUnlockHelper(biometricAuthenticatorManager, pinCodeManager), ) } diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/attachments/AttachmentsPreviewPresenterTest.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/attachments/AttachmentsPreviewPresenterTest.kt index 2dd7bca3c8..31065275b9 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/attachments/AttachmentsPreviewPresenterTest.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/attachments/AttachmentsPreviewPresenterTest.kt @@ -513,7 +513,17 @@ class AttachmentsPreviewPresenterTest { @Test fun `present - dismissing the progress dialog stops media upload with media queue`() = runTest { val onDoneListenerResult = lambdaRecorder {} - val presenter = createAttachmentsPreviewPresenter(mediaUploadOnSendQueueEnabled = true, onDoneListener = onDoneListenerResult) + val presenter = createAttachmentsPreviewPresenter( + room = FakeJoinedRoom( + liveTimeline = FakeTimeline().apply { + sendFileLambda = { _, _, _, _, _, _ -> + Result.success(FakeMediaUploadHandler()) + } + } + ), + mediaUploadOnSendQueueEnabled = true, + onDoneListener = onDoneListenerResult, + ) moleculeFlow(RecompositionMode.Immediate) { presenter.present() }.test { diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/forward/ForwardMessagesPresenterTest.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/forward/ForwardMessagesPresenterTest.kt index 2092d8d815..1b4caa8bdd 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/forward/ForwardMessagesPresenterTest.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/forward/ForwardMessagesPresenterTest.kt @@ -21,7 +21,7 @@ import io.element.android.libraries.matrix.test.timeline.FakeTimeline import io.element.android.libraries.matrix.test.timeline.LiveTimelineProvider import io.element.android.tests.testutils.WarmUpRule import io.element.android.tests.testutils.lambda.lambdaRecorder -import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.test.TestScope import kotlinx.coroutines.test.runTest import org.junit.Rule import org.junit.Test @@ -91,13 +91,12 @@ class ForwardMessagesPresenterTest { } } - private fun CoroutineScope.aForwardMessagesPresenter( + private fun TestScope.aForwardMessagesPresenter( eventId: EventId = AN_EVENT_ID, fakeRoom: FakeJoinedRoom = FakeJoinedRoom(), - coroutineScope: CoroutineScope = this, ) = ForwardMessagesPresenter( eventId = eventId.value, timelineProvider = LiveTimelineProvider(fakeRoom), - appCoroutineScope = coroutineScope, + appCoroutineScope = this, ) } diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/messagecomposer/MessageComposerPresenterTest.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/messagecomposer/MessageComposerPresenterTest.kt index 9146f6515b..5e669ca027 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/messagecomposer/MessageComposerPresenterTest.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/messagecomposer/MessageComposerPresenterTest.kt @@ -63,6 +63,7 @@ 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.A_USER_ID_3 import io.element.android.libraries.matrix.test.A_USER_ID_4 +import io.element.android.libraries.matrix.test.media.FakeMediaUploadHandler import io.element.android.libraries.matrix.test.permalink.FakePermalinkBuilder import io.element.android.libraries.matrix.test.permalink.FakePermalinkParser import io.element.android.libraries.matrix.test.room.FakeBaseRoom @@ -101,8 +102,8 @@ import io.element.android.tests.testutils.waitForPredicate import io.mockk.mockk import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.persistentListOf -import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.ExperimentalCoroutinesApi +import kotlinx.coroutines.test.TestScope import kotlinx.coroutines.test.advanceUntilIdle import kotlinx.coroutines.test.runTest import org.junit.Rule @@ -132,7 +133,7 @@ class MessageComposerPresenterTest { @Test fun `present - initial state`() = runTest { - val presenter = createPresenter(this) + val presenter = createPresenter() moleculeFlow(RecompositionMode.Immediate) { presenter.present() }.test { @@ -147,7 +148,7 @@ class MessageComposerPresenterTest { @Test fun `present - toggle fullscreen`() = runTest { - val presenter = createPresenter(this) + val presenter = createPresenter() moleculeFlow(RecompositionMode.Immediate) { presenter.present() }.test { @@ -163,7 +164,7 @@ class MessageComposerPresenterTest { @Test fun `present - change message`() = runTest { - val presenter = createPresenter(this) + val presenter = createPresenter() moleculeFlow(RecompositionMode.Immediate) { presenter.present() }.test { @@ -186,7 +187,6 @@ class MessageComposerPresenterTest { this.saveDraftLambda = updateDraftLambda } val presenter = createPresenter( - coroutineScope = this, draftService = draftService, ) moleculeFlow(RecompositionMode.Immediate) { @@ -229,7 +229,6 @@ class MessageComposerPresenterTest { this.saveDraftLambda = updateDraftLambda } val presenter = createPresenter( - coroutineScope = this, draftService = draftService, ) moleculeFlow(RecompositionMode.Immediate) { @@ -273,7 +272,6 @@ class MessageComposerPresenterTest { typingNoticeResult = { Result.success(Unit) } ) val presenter = createPresenter( - coroutineScope = this, room = joinedRoom, isRichTextEditorEnabled = false, ) @@ -314,7 +312,6 @@ class MessageComposerPresenterTest { this.saveDraftLambda = updateDraftLambda } val presenter = createPresenter( - coroutineScope = this, draftService = draftService, ) moleculeFlow(RecompositionMode.Immediate) { @@ -346,7 +343,7 @@ class MessageComposerPresenterTest { @Test fun `present - change mode to reply`() = runTest { - val presenter = createPresenter(this) + val presenter = createPresenter() moleculeFlow(RecompositionMode.Immediate) { presenter.present() }.test { @@ -362,7 +359,7 @@ class MessageComposerPresenterTest { @Test fun `present - cancel reply`() = runTest { - val presenter = createPresenter(this) + val presenter = createPresenter() moleculeFlow(RecompositionMode.Immediate) { presenter.present() }.test { @@ -382,7 +379,6 @@ class MessageComposerPresenterTest { @Test fun `present - send message with rich text enabled`() = runTest { val presenter = createPresenter( - coroutineScope = this, room = FakeJoinedRoom( liveTimeline = FakeTimeline().apply { sendMessageLambda = { _, _, _ -> Result.success(Unit) } @@ -417,7 +413,6 @@ class MessageComposerPresenterTest { fun `present - send message with plain text enabled`() = runTest { val permalinkBuilder = FakePermalinkBuilder(permalinkForUserLambda = { Result.success("") }) val presenter = createPresenter( - coroutineScope = this, isRichTextEditorEnabled = false, room = FakeJoinedRoom( liveTimeline = FakeTimeline().apply { @@ -464,7 +459,6 @@ class MessageComposerPresenterTest { typingNoticeResult = { Result.success(Unit) } ) val presenter = createPresenter( - this, joinedRoom, ) moleculeFlow(RecompositionMode.Immediate) { @@ -520,7 +514,6 @@ class MessageComposerPresenterTest { editMessageLambda = roomEditMessageLambda, ) val presenter = createPresenter( - this, joinedRoom, ) moleculeFlow(RecompositionMode.Immediate) { @@ -576,7 +569,6 @@ class MessageComposerPresenterTest { typingNoticeResult = { Result.success(Unit) }, ) val presenter = createPresenter( - this, joinedRoom, ) moleculeFlow(RecompositionMode.Immediate) { @@ -628,7 +620,6 @@ class MessageComposerPresenterTest { typingNoticeResult = { Result.success(Unit) } ) val presenter = createPresenter( - this, joinedRoom, ) moleculeFlow(RecompositionMode.Immediate) { @@ -666,7 +657,7 @@ class MessageComposerPresenterTest { @Test fun `present - Open attachments menu`() = runTest { - val presenter = createPresenter(this) + val presenter = createPresenter() moleculeFlow(RecompositionMode.Immediate) { presenter.present() }.test { @@ -679,7 +670,7 @@ class MessageComposerPresenterTest { @Test fun `present - Dismiss attachments menu`() = runTest { - val presenter = createPresenter(this) + val presenter = createPresenter() moleculeFlow(RecompositionMode.Immediate) { presenter.present() }.test { @@ -702,7 +693,6 @@ class MessageComposerPresenterTest { onPreviewAttachmentLambda = onPreviewAttachmentLambda ) val presenter = createPresenter( - coroutineScope = this, room = room, navigator = navigator, ) @@ -743,7 +733,6 @@ class MessageComposerPresenterTest { onPreviewAttachmentLambda = onPreviewAttachmentLambda ) val presenter = createPresenter( - coroutineScope = this, room = room, navigator = navigator, ) @@ -777,7 +766,7 @@ class MessageComposerPresenterTest { @Test fun `present - Pick media from gallery & cancel does nothing`() = runTest { - val presenter = createPresenter(this) + val presenter = createPresenter() with(pickerProvider) { givenResult(null) // Simulate a user canceling the flow givenMimeType(MimeTypes.Images) @@ -801,7 +790,6 @@ class MessageComposerPresenterTest { onPreviewAttachmentLambda = onPreviewAttachmentLambda ) val presenter = createPresenter( - coroutineScope = this, room = room, navigator = navigator, ) @@ -819,7 +807,7 @@ class MessageComposerPresenterTest { val room = FakeJoinedRoom( typingNoticeResult = { Result.success(Unit) } ) - val presenter = createPresenter(this, room = room) + val presenter = createPresenter(room = room) moleculeFlow(RecompositionMode.Immediate) { presenter.present() }.test { @@ -838,7 +826,7 @@ class MessageComposerPresenterTest { val room = FakeJoinedRoom( typingNoticeResult = { Result.success(Unit) } ) - val presenter = createPresenter(this, room = room) + val presenter = createPresenter(room = room) moleculeFlow(RecompositionMode.Immediate) { presenter.present() }.test { @@ -863,7 +851,6 @@ class MessageComposerPresenterTest { onPreviewAttachmentLambda = onPreviewAttachmentLambda ) val presenter = createPresenter( - coroutineScope = this, room = room, permissionPresenter = permissionPresenter, navigator = navigator, @@ -888,7 +875,6 @@ class MessageComposerPresenterTest { onPreviewAttachmentLambda = onPreviewAttachmentLambda ) val presenter = createPresenter( - coroutineScope = this, room = room, permissionPresenter = permissionPresenter, navigator = navigator, @@ -915,7 +901,6 @@ class MessageComposerPresenterTest { onPreviewAttachmentLambda = onPreviewAttachmentLambda ) val presenter = createPresenter( - coroutineScope = this, room = room, permissionPresenter = permissionPresenter, navigator = navigator, @@ -940,7 +925,6 @@ class MessageComposerPresenterTest { onPreviewAttachmentLambda = onPreviewAttachmentLambda ) val presenter = createPresenter( - coroutineScope = this, room = room, permissionPresenter = permissionPresenter, navigator = navigator, @@ -961,7 +945,7 @@ class MessageComposerPresenterTest { @Test fun `present - errors are tracked`() = runTest { val testException = Exception("Test error") - val presenter = createPresenter(this) + val presenter = createPresenter() moleculeFlow(RecompositionMode.Immediate) { presenter.present() }.test { @@ -973,7 +957,7 @@ class MessageComposerPresenterTest { @Test fun `present - ToggleTextFormatting toggles text formatting`() = runTest { - val presenter = createPresenter(this, isRichTextEditorEnabled = false) + val presenter = createPresenter(isRichTextEditorEnabled = false) moleculeFlow(RecompositionMode.Immediate) { presenter.present() }.test { @@ -1017,7 +1001,7 @@ class MessageComposerPresenterTest { ) givenRoomInfo(aRoomInfo(isDirect = false)) } - val presenter = createPresenter(this, room) + val presenter = createPresenter(room) moleculeFlow(RecompositionMode.Immediate) { presenter.present() }.test { @@ -1078,7 +1062,7 @@ class MessageComposerPresenterTest { ) ) } - val presenter = createPresenter(this, room) + val presenter = createPresenter(room) moleculeFlow(RecompositionMode.Immediate) { presenter.present() }.test { @@ -1094,7 +1078,6 @@ class MessageComposerPresenterTest { fun `present - InsertSuggestion`() = runTest { val presenter = createPresenter( - coroutineScope = this, permalinkBuilder = FakePermalinkBuilder( permalinkForUserLambda = { Result.success("https://matrix.to/#/${A_USER_ID_2.value}") @@ -1134,7 +1117,7 @@ class MessageComposerPresenterTest { liveTimeline = timeline, typingNoticeResult = { Result.success(Unit) } ) - val presenter = createPresenter(room = room, coroutineScope = this) + val presenter = createPresenter(room = room) moleculeFlow(RecompositionMode.Immediate) { presenter.present() }.test { @@ -1197,7 +1180,16 @@ class MessageComposerPresenterTest { @Test fun `present - send uri`() = runTest { - val presenter = createPresenter(this) + val presenter = createPresenter( + room = FakeJoinedRoom( + typingNoticeResult = { Result.success(Unit) }, + liveTimeline = FakeTimeline().apply { + sendFileLambda = { _, _, _, _, _, _ -> + Result.success(FakeMediaUploadHandler()) + } + } + ), + ) moleculeFlow(RecompositionMode.Immediate) { val state = presenter.present() remember(state, state.textEditorState.messageHtml()) { state } @@ -1214,7 +1206,7 @@ class MessageComposerPresenterTest { val room = FakeJoinedRoom( typingNoticeResult = typingNoticeResult, ) - val presenter = createPresenter(room = room, coroutineScope = this) + val presenter = createPresenter(room = room) moleculeFlow(RecompositionMode.Immediate) { presenter.present() }.test { @@ -1240,7 +1232,7 @@ class MessageComposerPresenterTest { val store = InMemorySessionPreferencesStore( isSendTypingNotificationsEnabled = false ) - val presenter = createPresenter(room = room, sessionPreferencesStore = store, coroutineScope = this) + val presenter = createPresenter(room = room, sessionPreferencesStore = store) moleculeFlow(RecompositionMode.Immediate) { presenter.present() }.test { @@ -1258,7 +1250,7 @@ class MessageComposerPresenterTest { val composerDraftService = FakeComposerDraftService().apply { this.loadDraftLambda = loadDraftLambda } - val presenter = createPresenter(draftService = composerDraftService, coroutineScope = this) + val presenter = createPresenter(draftService = composerDraftService) moleculeFlow(RecompositionMode.Immediate) { presenter.present() }.test { @@ -1283,7 +1275,6 @@ class MessageComposerPresenterTest { val presenter = createPresenter( draftService = composerDraftService, permalinkBuilder = permalinkBuilder, - coroutineScope = this ) moleculeFlow(RecompositionMode.Immediate) { presenter.present() @@ -1317,7 +1308,6 @@ class MessageComposerPresenterTest { val presenter = createPresenter( draftService = composerDraftService, permalinkBuilder = permalinkBuilder, - coroutineScope = this ) moleculeFlow(RecompositionMode.Immediate) { presenter.present() @@ -1351,7 +1341,6 @@ class MessageComposerPresenterTest { val presenter = createPresenter( draftService = composerDraftService, permalinkBuilder = permalinkBuilder, - coroutineScope = this ) moleculeFlow(RecompositionMode.Immediate) { presenter.present() @@ -1398,7 +1387,6 @@ class MessageComposerPresenterTest { room = room, draftService = composerDraftService, permalinkBuilder = permalinkBuilder, - coroutineScope = this ) moleculeFlow(RecompositionMode.Immediate) { presenter.present() @@ -1428,7 +1416,7 @@ class MessageComposerPresenterTest { val composerDraftService = FakeComposerDraftService().apply { this.saveDraftLambda = saveDraftLambda } - val presenter = createPresenter(draftService = composerDraftService, coroutineScope = this) + val presenter = createPresenter(draftService = composerDraftService) moleculeFlow(RecompositionMode.Immediate) { presenter.present() }.test { @@ -1452,7 +1440,6 @@ class MessageComposerPresenterTest { isRichTextEditorEnabled = false, draftService = composerDraftService, permalinkBuilder = permalinkBuilder, - coroutineScope = this ) moleculeFlow(RecompositionMode.Immediate) { val state = presenter.present() @@ -1528,18 +1515,17 @@ class MessageComposerPresenterTest { return normalState } - private fun createPresenter( - coroutineScope: CoroutineScope, + private fun TestScope.createPresenter( room: JoinedRoom = FakeJoinedRoom( typingNoticeResult = { Result.success(Unit) } ), navigator: MessagesNavigator = FakeMessagesNavigator(), - pickerProvider: PickerProvider = this.pickerProvider, - featureFlagService: FeatureFlagService = this.featureFlagService, + pickerProvider: PickerProvider = this@MessageComposerPresenterTest.pickerProvider, + featureFlagService: FeatureFlagService = this@MessageComposerPresenterTest.featureFlagService, locationService: LocationService = FakeLocationService(true), sessionPreferencesStore: SessionPreferencesStore = InMemorySessionPreferencesStore(), - mediaPreProcessor: MediaPreProcessor = this.mediaPreProcessor, - snackbarDispatcher: SnackbarDispatcher = this.snackbarDispatcher, + mediaPreProcessor: MediaPreProcessor = this@MessageComposerPresenterTest.mediaPreProcessor, + snackbarDispatcher: SnackbarDispatcher = this@MessageComposerPresenterTest.snackbarDispatcher, permissionPresenter: PermissionsPresenter = FakePermissionsPresenter(), permalinkBuilder: PermalinkBuilder = FakePermalinkBuilder(), permalinkParser: PermalinkParser = FakePermalinkParser(), @@ -1553,7 +1539,7 @@ class MessageComposerPresenterTest { draftService: ComposerDraftService = FakeComposerDraftService(), ) = MessageComposerPresenter( navigator = navigator, - appCoroutineScope = coroutineScope, + appCoroutineScope = this, room = room, mediaPickerProvider = pickerProvider, featureFlagService = featureFlagService, diff --git a/features/poll/impl/src/test/kotlin/io/element/android/features/poll/impl/history/PollHistoryPresenterTest.kt b/features/poll/impl/src/test/kotlin/io/element/android/features/poll/impl/history/PollHistoryPresenterTest.kt index c20d608dff..17d270f5ec 100644 --- a/features/poll/impl/src/test/kotlin/io/element/android/features/poll/impl/history/PollHistoryPresenterTest.kt +++ b/features/poll/impl/src/test/kotlin/io/element/android/features/poll/impl/history/PollHistoryPresenterTest.kt @@ -32,7 +32,6 @@ import io.element.android.tests.testutils.WarmUpRule import io.element.android.tests.testutils.lambda.assert import io.element.android.tests.testutils.lambda.lambdaRecorder import io.element.android.tests.testutils.testCoroutineDispatchers -import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.getAndUpdate @@ -155,7 +154,6 @@ class PollHistoryPresenterTest { private fun TestScope.createPollHistoryPresenter( room: FakeJoinedRoom = FakeJoinedRoom(), - appCoroutineScope: CoroutineScope = this, endPollAction: EndPollAction = FakeEndPollAction(), sendPollResponseAction: SendPollResponseAction = FakeSendPollResponseAction(), pollHistoryItemFactory: PollHistoryItemsFactory = PollHistoryItemsFactory( @@ -165,7 +163,7 @@ class PollHistoryPresenterTest { ), ): PollHistoryPresenter { return PollHistoryPresenter( - appCoroutineScope = appCoroutineScope, + appCoroutineScope = this, sendPollResponseAction = sendPollResponseAction, endPollAction = endPollAction, pollHistoryItemFactory = pollHistoryItemFactory, diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsPresenterTest.kt b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsPresenterTest.kt index c08aa93692..8de8a52b0f 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsPresenterTest.kt +++ b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsPresenterTest.kt @@ -36,6 +36,7 @@ import io.element.android.libraries.matrix.test.A_ROOM_NAME import io.element.android.libraries.matrix.test.A_ROOM_TOPIC import io.element.android.libraries.matrix.test.A_SESSION_ID import io.element.android.libraries.matrix.test.A_USER_ID_2 +import io.element.android.libraries.matrix.test.A_USER_NAME import io.element.android.libraries.matrix.test.FakeMatrixClient import io.element.android.libraries.matrix.test.encryption.FakeEncryptionService import io.element.android.libraries.matrix.test.notificationsettings.FakeNotificationSettingsService @@ -241,6 +242,8 @@ class RoomDetailsPresenterTest { fun `present - initial state when user can not invite others to room`() = runTest { val room = aJoinedRoom( canInviteResult = { Result.success(false) }, + canKickResult = { Result.success(false) }, + canBanResult = { Result.success(false) }, canUserJoinCallResult = { Result.success(true) }, canSendStateResult = { _, _ -> Result.success(true) }, ) @@ -277,6 +280,8 @@ class RoomDetailsPresenterTest { else -> Result.failure(Throwable("Whelp")) } }, + canBanResult = { Result.success(false) }, + canKickResult = { Result.success(false) }, canInviteResult = { Result.success(false) }, canUserJoinCallResult = { Result.success(true) }, ) @@ -304,6 +309,8 @@ class RoomDetailsPresenterTest { else -> Result.failure(Throwable("Whelp")) } }, + canKickResult = { Result.success(false) }, + canBanResult = { Result.success(false) }, canInviteResult = { Result.success(false) }, canUserJoinCallResult = { Result.success(true) }, getUpdatedMemberResult = { userId -> @@ -353,6 +360,8 @@ class RoomDetailsPresenterTest { else -> Result.failure(Throwable("Whelp")) } }, + userDisplayNameResult = { Result.success(A_USER_NAME) }, + userAvatarUrlResult = { Result.success(AN_AVATAR_URL) }, canInviteResult = { Result.success(true) }, canUserJoinCallResult = { Result.success(true) }, getUpdatedMemberResult = { userId -> @@ -397,6 +406,12 @@ class RoomDetailsPresenterTest { else -> Result.failure(Throwable("Whelp")) } }, + canKickResult = { + Result.success(false) + }, + canBanResult = { + Result.success(false) + }, canInviteResult = { Result.success(false) }, @@ -424,6 +439,12 @@ class RoomDetailsPresenterTest { else -> Result.failure(Throwable("Whelp")) } }, + canBanResult = { + Result.success(false) + }, + canKickResult = { + Result.success(false) + }, canInviteResult = { Result.success(false) }, @@ -450,6 +471,12 @@ class RoomDetailsPresenterTest { else -> Result.failure(Throwable("Whelp")) } }, + canKickResult = { + Result.success(false) + }, + canBanResult = { + Result.success(false) + }, canInviteResult = { Result.success(false) }, @@ -476,6 +503,12 @@ class RoomDetailsPresenterTest { else -> Result.failure(Throwable("Whelp")) } }, + canKickResult = { + Result.success(false) + }, + canBanResult = { + Result.success(false) + }, canInviteResult = { Result.success(false) }, diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/editroomaddress/EditBaseRoomAddressPresenterTest.kt b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/editroomaddress/EditBaseRoomAddressPresenterTest.kt index 7dfc3d464e..9b9cb4120c 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/editroomaddress/EditBaseRoomAddressPresenterTest.kt +++ b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/editroomaddress/EditBaseRoomAddressPresenterTest.kt @@ -16,6 +16,7 @@ import io.element.android.libraries.matrix.api.core.RoomAlias import io.element.android.libraries.matrix.api.room.JoinedRoom import io.element.android.libraries.matrix.api.room.alias.ResolvedRoomAlias import io.element.android.libraries.matrix.api.room.alias.RoomAliasHelper +import io.element.android.libraries.matrix.test.AN_EXCEPTION import io.element.android.libraries.matrix.test.A_ROOM_ID import io.element.android.libraries.matrix.test.FakeMatrixClient import io.element.android.libraries.matrix.test.room.FakeJoinedRoom @@ -289,7 +290,14 @@ class EditBaseRoomAddressPresenterTest { val navigator = FakeSecurityAndPrivacyNavigator( closeEditRoomAddressLambda = closeEditAddressLambda ) - val presenter = createEditRoomAddressPresenter(navigator = navigator) + val presenter = createEditRoomAddressPresenter( + navigator = navigator, + room = FakeJoinedRoom( + publishRoomAliasInRoomDirectoryResult = { + Result.failure(AN_EXCEPTION) + }, + ) + ) presenter.test { with(awaitItem()) { eventSink(EditRoomAddressEvents.RoomAddressChanged("valid")) @@ -313,7 +321,13 @@ class EditBaseRoomAddressPresenterTest { @Test fun `present - dismiss error`() = runTest { - val presenter = createEditRoomAddressPresenter() + val presenter = createEditRoomAddressPresenter( + room = FakeJoinedRoom( + publishRoomAliasInRoomDirectoryResult = { + Result.failure(AN_EXCEPTION) + }, + ) + ) presenter.test { with(awaitItem()) { eventSink(EditRoomAddressEvents.Save) diff --git a/features/securebackup/impl/src/test/kotlin/io/element/android/features/securebackup/impl/reset/ResetIdentityFlowManagerTest.kt b/features/securebackup/impl/src/test/kotlin/io/element/android/features/securebackup/impl/reset/ResetIdentityFlowManagerTest.kt index 57a9fb6212..a26d6fabef 100644 --- a/features/securebackup/impl/src/test/kotlin/io/element/android/features/securebackup/impl/reset/ResetIdentityFlowManagerTest.kt +++ b/features/securebackup/impl/src/test/kotlin/io/element/android/features/securebackup/impl/reset/ResetIdentityFlowManagerTest.kt @@ -17,7 +17,6 @@ import io.element.android.libraries.matrix.test.encryption.FakeEncryptionService import io.element.android.libraries.matrix.test.encryption.FakeIdentityPasswordResetHandle import io.element.android.libraries.matrix.test.verification.FakeSessionVerificationService import io.element.android.tests.testutils.lambda.lambdaRecorder -import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.test.TestScope import kotlinx.coroutines.test.advanceUntilIdle @@ -132,11 +131,10 @@ class ResetIdentityFlowManagerTest { private fun TestScope.createFlowManager( encryptionService: FakeEncryptionService = FakeEncryptionService(), client: FakeMatrixClient = FakeMatrixClient(encryptionService = encryptionService), - sessionCoroutineScope: CoroutineScope = this, sessionVerificationService: FakeSessionVerificationService = FakeSessionVerificationService(), ) = ResetIdentityFlowManager( matrixClient = client, - sessionCoroutineScope = sessionCoroutineScope, + sessionCoroutineScope = this, sessionVerificationService = sessionVerificationService, ) } diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/room/RustBaseRoomTest.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/room/RustBaseRoomTest.kt index 8a9050a884..c05ba349ce 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/room/RustBaseRoomTest.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/room/RustBaseRoomTest.kt @@ -15,7 +15,6 @@ import io.element.android.libraries.matrix.test.A_DEVICE_ID import io.element.android.libraries.matrix.test.A_SESSION_ID import io.element.android.libraries.matrix.test.room.aRoomInfo import io.element.android.tests.testutils.testCoroutineDispatchers -import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.isActive import kotlinx.coroutines.test.TestScope import kotlinx.coroutines.test.runTest @@ -24,18 +23,13 @@ import org.junit.Test class RustBaseRoomTest { @Test fun `RustBaseRoom should cancel the room coroutine scope when it is destroyed`() = runTest { - val rustBaseRoom = createRustBaseRoom( - // Not using backgroundScope here, but the test scope - sessionCoroutineScope = this - ) + val rustBaseRoom = createRustBaseRoom() assertThat(rustBaseRoom.roomCoroutineScope.isActive).isTrue() rustBaseRoom.destroy() assertThat(rustBaseRoom.roomCoroutineScope.isActive).isFalse() } - private fun TestScope.createRustBaseRoom( - sessionCoroutineScope: CoroutineScope, - ): RustBaseRoom { + private fun TestScope.createRustBaseRoom(): RustBaseRoom { val dispatchers = testCoroutineDispatchers() return RustBaseRoom( sessionId = A_SESSION_ID, @@ -47,7 +41,8 @@ class RustBaseRoomTest { dispatchers = dispatchers, ), roomMembershipObserver = RoomMembershipObserver(), - sessionCoroutineScope = sessionCoroutineScope, + // Not using backgroundScope here, but the test scope + sessionCoroutineScope = this, roomInfoMapper = RoomInfoMapper(), initialRoomInfo = aRoomInfo(), ) diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/roomdirectory/RustBaseRoomDirectoryListTest.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/roomdirectory/RustBaseRoomDirectoryListTest.kt index ba3ee850c1..f7f0b3cae7 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/roomdirectory/RustBaseRoomDirectoryListTest.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/roomdirectory/RustBaseRoomDirectoryListTest.kt @@ -13,7 +13,6 @@ import io.element.android.libraries.matrix.api.roomdirectory.RoomDirectoryList import io.element.android.libraries.matrix.impl.fixtures.factories.aRustRoomDescription import io.element.android.libraries.matrix.impl.fixtures.fakes.FakeRustRoomDirectorySearch import io.element.android.libraries.matrix.test.A_ROOM_ID_2 -import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.test.StandardTestDispatcher import kotlinx.coroutines.test.TestScope @@ -31,7 +30,6 @@ class RustBaseRoomDirectoryListTest { val mapper = RoomDescriptionMapper() val sut = createRustRoomDirectoryList( roomDirectorySearch = roomDirectorySearch, - scope = backgroundScope, ) // Let the mxCallback be ready runCurrent() @@ -81,10 +79,9 @@ class RustBaseRoomDirectoryListTest { private fun TestScope.createRustRoomDirectoryList( roomDirectorySearch: RoomDirectorySearch = FakeRustRoomDirectorySearch(), - scope: CoroutineScope, ) = RustRoomDirectoryList( inner = roomDirectorySearch, - coroutineScope = scope, + coroutineScope = backgroundScope, coroutineContext = StandardTestDispatcher(testScheduler), ) } diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/roomlist/RustBaseRoomListServiceTest.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/roomlist/RustBaseRoomListServiceTest.kt index 0957a06700..24447d4d74 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/roomlist/RustBaseRoomListServiceTest.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/roomlist/RustBaseRoomListServiceTest.kt @@ -12,7 +12,6 @@ import io.element.android.libraries.matrix.api.roomlist.RoomListService import io.element.android.libraries.matrix.impl.fixtures.fakes.FakeRustRoomListService import io.element.android.libraries.matrix.impl.room.RoomSyncSubscriber import io.element.android.tests.testutils.testCoroutineDispatchers -import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.test.StandardTestDispatcher import kotlinx.coroutines.test.TestScope @@ -28,7 +27,6 @@ class RustBaseRoomListServiceTest { fun `syncIndicator should emit the expected values`() = runTest { val roomListService = FakeRustRoomListService() val sut = createRustRoomListService( - sessionCoroutineScope = backgroundScope, roomListService = roomListService, ) // Give time for mxCallback to setup @@ -44,18 +42,17 @@ class RustBaseRoomListServiceTest { } private fun TestScope.createRustRoomListService( - sessionCoroutineScope: CoroutineScope, roomListService: RustRoomListService = FakeRustRoomListService(), ) = RustRoomListService( innerRoomListService = roomListService, sessionDispatcher = StandardTestDispatcher(testScheduler), roomListFactory = RoomListFactory( innerRoomListService = roomListService, - sessionCoroutineScope = sessionCoroutineScope, + sessionCoroutineScope = backgroundScope, ), roomSyncSubscriber = RoomSyncSubscriber( roomListService = roomListService, dispatchers = testCoroutineDispatchers(), ), - sessionCoroutineScope = sessionCoroutineScope, + sessionCoroutineScope = backgroundScope, ) diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/timeline/TimelineItemsSubscriberTest.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/timeline/TimelineItemsSubscriberTest.kt index ac15faea77..ca41fe40d7 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/timeline/TimelineItemsSubscriberTest.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/timeline/TimelineItemsSubscriberTest.kt @@ -17,7 +17,6 @@ import io.element.android.libraries.matrix.impl.fixtures.fakes.FakeRustTimelineI import io.element.android.tests.testutils.lambda.lambdaError import io.element.android.tests.testutils.lambda.lambdaRecorder import kotlinx.coroutines.CompletableDeferred -import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow @@ -38,7 +37,6 @@ class TimelineItemsSubscriberTest { MutableSharedFlow(replay = 1, extraBufferCapacity = Int.MAX_VALUE) val timeline = FakeRustTimeline() val timelineItemsSubscriber = createTimelineItemsSubscriber( - coroutineScope = backgroundScope, timeline = timeline, timelineItems = timelineItems, ) @@ -59,7 +57,6 @@ class TimelineItemsSubscriberTest { MutableSharedFlow(replay = 1, extraBufferCapacity = Int.MAX_VALUE) val timeline = FakeRustTimeline() val timelineItemsSubscriber = createTimelineItemsSubscriber( - coroutineScope = backgroundScope, timeline = timeline, timelineItems = timelineItems, ) @@ -81,7 +78,6 @@ class TimelineItemsSubscriberTest { val timeline = FakeRustTimeline() val onNewSyncedEventRecorder = lambdaRecorder { } val timelineItemsSubscriber = createTimelineItemsSubscriber( - coroutineScope = backgroundScope, timeline = timeline, timelineItems = timelineItems, onNewSyncedEvent = onNewSyncedEventRecorder, @@ -109,9 +105,7 @@ class TimelineItemsSubscriberTest { @Test fun `multiple subscriptions does not have side effect`() = runTest { - val timelineItemsSubscriber = createTimelineItemsSubscriber( - coroutineScope = backgroundScope, - ) + val timelineItemsSubscriber = createTimelineItemsSubscriber() timelineItemsSubscriber.subscribeIfNeeded() timelineItemsSubscriber.subscribeIfNeeded() timelineItemsSubscriber.unsubscribeIfNeeded() @@ -120,7 +114,6 @@ class TimelineItemsSubscriberTest { } private fun TestScope.createTimelineItemsSubscriber( - coroutineScope: CoroutineScope, timeline: Timeline = FakeRustTimeline(), timelineItems: MutableSharedFlow> = MutableSharedFlow(replay = 1, extraBufferCapacity = Int.MAX_VALUE), initLatch: CompletableDeferred = CompletableDeferred(), @@ -128,7 +121,7 @@ private fun TestScope.createTimelineItemsSubscriber( onNewSyncedEvent: () -> Unit = { lambdaError() }, ): TimelineItemsSubscriber { return TimelineItemsSubscriber( - timelineCoroutineScope = coroutineScope, + timelineCoroutineScope = backgroundScope, dispatcher = StandardTestDispatcher(testScheduler), timeline = timeline, timelineDiffProcessor = createMatrixTimelineDiffProcessor(timelineItems), diff --git a/libraries/mediaupload/api/src/test/kotlin/io/element/android/libraries/mediaupload/api/MediaSenderTest.kt b/libraries/mediaupload/api/src/test/kotlin/io/element/android/libraries/mediaupload/api/MediaSenderTest.kt index ae69d85b72..7b10e84816 100644 --- a/libraries/mediaupload/api/src/test/kotlin/io/element/android/libraries/mediaupload/api/MediaSenderTest.kt +++ b/libraries/mediaupload/api/src/test/kotlin/io/element/android/libraries/mediaupload/api/MediaSenderTest.kt @@ -37,7 +37,24 @@ class MediaSenderTest { @Test fun `given an attachment when sending it the preprocessor always runs`() = runTest { val preProcessor = FakeMediaPreProcessor() - val sender = createMediaSender(preProcessor) + val sender = createMediaSender( + preProcessor = preProcessor, + room = FakeJoinedRoom( + liveTimeline = FakeTimeline().apply { + sendFileLambda = lambdaRecorder< + File, + FileInfo, + String?, + String?, + ProgressCallback?, + ReplyParameters?, + Result, + > { _, _, _, _, _, _ -> + Result.success(FakeMediaUploadHandler()) + } + }, + ) + ) val uri = Uri.parse("content://image.jpg") sender.sendMedia(uri = uri, mimeType = MimeTypes.Jpeg) diff --git a/services/appnavstate/impl/src/test/kotlin/io/element/android/services/appnavstate/impl/DefaultNavigationStateServiceTest.kt b/services/appnavstate/impl/src/test/kotlin/io/element/android/services/appnavstate/impl/DefaultNavigationStateServiceTest.kt index 6ab7856226..c6ddff060e 100644 --- a/services/appnavstate/impl/src/test/kotlin/io/element/android/services/appnavstate/impl/DefaultNavigationStateServiceTest.kt +++ b/services/appnavstate/impl/src/test/kotlin/io/element/android/services/appnavstate/impl/DefaultNavigationStateServiceTest.kt @@ -23,8 +23,8 @@ import io.element.android.services.appnavstate.test.A_SESSION_OWNER import io.element.android.services.appnavstate.test.A_SPACE_OWNER import io.element.android.services.appnavstate.test.A_THREAD_OWNER import io.element.android.services.appnavstate.test.FakeAppForegroundStateService -import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.first +import kotlinx.coroutines.test.TestScope import kotlinx.coroutines.test.runTest import org.junit.Test @@ -52,7 +52,7 @@ class DefaultNavigationStateServiceTest { @Test fun testNavigation() = runTest { - val service = createStateService(backgroundScope) + val service = createStateService() assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateRoot) service.onNavigateToSession(A_SESSION_OWNER, A_SESSION_ID) assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateSession) @@ -75,14 +75,14 @@ class DefaultNavigationStateServiceTest { @Test fun testFailure() = runTest { - val service = createStateService(backgroundScope) + val service = createStateService() service.onNavigateToSpace(A_SPACE_OWNER, A_SPACE_ID) assertThat(service.appNavigationState.value.navigationState).isEqualTo(NavigationState.Root) } @Test fun testOnNavigateToThread() = runTest { - val service = createStateService(backgroundScope) + val service = createStateService() // From root (no effect) service.onNavigateToThread(A_THREAD_OWNER, A_THREAD_ID) assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateRoot) @@ -111,7 +111,7 @@ class DefaultNavigationStateServiceTest { @Test fun testOnNavigateToRoom() = runTest { - val service = createStateService(backgroundScope) + val service = createStateService() // From root (no effect) service.onNavigateToRoom(A_ROOM_OWNER, A_ROOM_ID) assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateRoot) @@ -140,7 +140,7 @@ class DefaultNavigationStateServiceTest { @Test fun testOnNavigateToSpace() = runTest { - val service = createStateService(backgroundScope) + val service = createStateService() // From root (no effect) service.onNavigateToSpace(A_SPACE_OWNER, A_SPACE_ID) assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateRoot) @@ -169,7 +169,7 @@ class DefaultNavigationStateServiceTest { @Test fun testOnNavigateToSession() = runTest { - val service = createStateService(backgroundScope) + val service = createStateService() // From root service.onNavigateToSession(A_SESSION_OWNER, A_SESSION_ID) assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateSession) @@ -198,7 +198,7 @@ class DefaultNavigationStateServiceTest { @Test fun testOnLeavingThread() = runTest { - val service = createStateService(backgroundScope) + val service = createStateService() // From root (no effect) service.onLeavingThread(A_THREAD_OWNER) assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateRoot) @@ -226,7 +226,7 @@ class DefaultNavigationStateServiceTest { @Test fun testOnLeavingRoom() = runTest { - val service = createStateService(backgroundScope) + val service = createStateService() // From root (no effect) service.onLeavingRoom(A_ROOM_OWNER) assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateRoot) @@ -254,7 +254,7 @@ class DefaultNavigationStateServiceTest { @Test fun testOnLeavingSpace() = runTest { - val service = createStateService(backgroundScope) + val service = createStateService() // From root (no effect) service.onLeavingSpace(A_SPACE_OWNER) assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateRoot) @@ -282,7 +282,7 @@ class DefaultNavigationStateServiceTest { @Test fun testOnLeavingSession() = runTest { - val service = createStateService(backgroundScope) + val service = createStateService() // From root service.onLeavingSession(A_SESSION_OWNER) assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateRoot) @@ -332,7 +332,8 @@ class DefaultNavigationStateServiceTest { onNavigateToThread(A_THREAD_OWNER, A_THREAD_ID) } - private fun createStateService( - coroutineScope: CoroutineScope - ) = DefaultAppNavigationStateService(FakeAppForegroundStateService(), coroutineScope) + private fun TestScope.createStateService() = DefaultAppNavigationStateService( + appForegroundStateService = FakeAppForegroundStateService(), + coroutineScope = backgroundScope, + ) } diff --git a/tests/testutils/src/main/kotlin/io/element/android/tests/testutils/lambda/Error.kt b/tests/testutils/src/main/kotlin/io/element/android/tests/testutils/lambda/Error.kt index f9e2ec0cbb..b96900cee1 100644 --- a/tests/testutils/src/main/kotlin/io/element/android/tests/testutils/lambda/Error.kt +++ b/tests/testutils/src/main/kotlin/io/element/android/tests/testutils/lambda/Error.kt @@ -7,8 +7,19 @@ package io.element.android.tests.testutils.lambda +import kotlin.system.exitProcess + fun lambdaError( message: String = "This lambda should never be called." ): Nothing { - throw AssertionError(message) + // Throwing an exception here is not enough, it can be caught. + // Instead exit the process to make sure the test fails. + // The error will be: + // "Could not stop all services." + // In this case, put a breakpoint here and run the test in debug mode to identify which lambda is failing. + System.err.println(message) + Thread.currentThread().stackTrace.forEach { + System.err.println(it) + } + exitProcess(1) } From 7e214b1d776f459ec20274dd974b018d7c5332df Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 28 May 2025 07:25:29 +0000 Subject: [PATCH 13/25] fix(deps): update dependency com.posthog:posthog-android to v3.16.0 (#4789) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 92a483368e..ce49c51e0a 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -190,7 +190,7 @@ opusencoder = "io.element.android:opusencoder:1.1.0" zxing_cpp = "io.github.zxing-cpp:android:2.3.0" # Analytics -posthog = "com.posthog:posthog-android:3.15.1" +posthog = "com.posthog:posthog-android:3.16.0" sentry = "io.sentry:sentry-android:8.12.0" # main branch can be tested replacing the version with main-SNAPSHOT matrix_analytics_events = "com.github.matrix-org:matrix-analytics-events:0.28.0" From 5cc8393edda25fdb87c864f1b39d8e155d911bda Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 29 May 2025 13:49:21 +0000 Subject: [PATCH 14/25] fix(deps): update dependency org.matrix.rustcomponents:sdk-android to v25.5.29 --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index ce49c51e0a..0fce730208 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -169,7 +169,7 @@ jsoup = "org.jsoup:jsoup:1.20.1" appyx_core = { module = "com.bumble.appyx:core", version.ref = "appyx" } molecule-runtime = "app.cash.molecule:molecule-runtime:2.1.0" timber = "com.jakewharton.timber:timber:5.0.1" -matrix_sdk = "org.matrix.rustcomponents:sdk-android:25.5.26" +matrix_sdk = "org.matrix.rustcomponents:sdk-android:25.5.29" matrix_richtexteditor = { module = "io.element.android:wysiwyg", version.ref = "wysiwyg" } matrix_richtexteditor_compose = { module = "io.element.android:wysiwyg-compose", version.ref = "wysiwyg" } sqldelight-driver-android = { module = "app.cash.sqldelight:android-driver", version.ref = "sqldelight" } From 498cf15d38179cb802965a58d0e31031e0f65668 Mon Sep 17 00:00:00 2001 From: ElementBot <110224175+ElementBot@users.noreply.github.com> Date: Fri, 30 May 2025 10:47:39 +0200 Subject: [PATCH 15/25] Sync Strings (#4775) --- app/src/main/res/xml/locales_config.xml | 1 + .../src/main/res/values-eu/translations.xml | 1 + .../main/res/values-pt-rBR/translations.xml | 6 + .../src/main/res/values-de/translations.xml | 2 +- .../src/main/res/values-ur/translations.xml | 7 + .../src/main/res/values-de/translations.xml | 4 +- .../src/main/res/values-ur/translations.xml | 10 + .../main/res/values-pt-rBR/translations.xml | 1 + .../src/main/res/values-ur/translations.xml | 7 + .../src/main/res/values-de/translations.xml | 6 +- .../main/res/values-pt-rBR/translations.xml | 15 + .../src/main/res/values-ur/translations.xml | 16 + .../main/res/values-pt-rBR/translations.xml | 8 + .../src/main/res/values-de/translations.xml | 4 +- .../main/res/values-pt-rBR/translations.xml | 7 + .../src/main/res/values-ur/translations.xml | 22 + .../src/main/res/values-de/translations.xml | 4 +- .../main/res/values-pt-rBR/translations.xml | 9 + .../src/main/res/values-pt/translations.xml | 5 + .../src/main/res/values-ur/translations.xml | 9 + .../main/res/values-zh-rTW/translations.xml | 1 + .../src/main/res/values-eu/translations.xml | 1 + .../main/res/values-pt-rBR/translations.xml | 28 + .../src/main/res/values-ur/translations.xml | 11 + .../src/main/res/values-cy/translations.xml | 8 + .../main/res/values-pt-rBR/translations.xml | 32 + .../src/main/res/values-ur/translations.xml | 4 + .../src/main/res/values-de/translations.xml | 6 +- .../src/main/res/values-ur/translations.xml | 7 + .../src/main/res/values-cy/translations.xml | 16 + .../main/res/values-pt-rBR/translations.xml | 1 + .../src/main/res/values-ur/translations.xml | 37 + .../src/main/res/values-cs/translations.xml | 1 + .../src/main/res/values-cy/translations.xml | 1 + .../src/main/res/values-de/translations.xml | 10 +- .../src/main/res/values-et/translations.xml | 1 + .../src/main/res/values-eu/translations.xml | 3 + .../src/main/res/values-fi/translations.xml | 3 +- .../src/main/res/values-fr/translations.xml | 1 + .../src/main/res/values-hu/translations.xml | 1 + .../main/res/values-pt-rBR/translations.xml | 42 + .../src/main/res/values-pt/translations.xml | 9 +- .../src/main/res/values-sk/translations.xml | 1 + .../src/main/res/values-sv/translations.xml | 9 +- .../src/main/res/values-uk/translations.xml | 4 + .../src/main/res/values-ur/translations.xml | 86 + .../main/res/values-zh-rTW/translations.xml | 4 +- .../src/main/res/values-de/translations.xml | 2 +- .../src/main/res/values-ur/translations.xml | 18 + .../src/main/res/values-cy/translations.xml | 24 + .../src/main/res/values-de/translations.xml | 10 +- .../main/res/values-pt-rBR/translations.xml | 1 + .../src/main/res/values-pt/translations.xml | 2 +- .../src/main/res/values-ur/translations.xml | 53 + .../src/main/res/values-ur/translations.xml | 19 + .../src/main/res/values-de/translations.xml | 2 +- .../src/main/res/values-eu/translations.xml | 1 + .../main/res/values-pt-rBR/translations.xml | 16 + .../src/main/res/values-pt/translations.xml | 10 +- .../src/main/res/values-ur/translations.xml | 58 + .../main/res/values-zh-rTW/translations.xml | 1 + .../src/main/res/values-de/translations.xml | 4 +- .../src/main/res/values-ur/translations.xml | 7 + .../src/main/res/values-de/translations.xml | 4 +- .../src/main/res/values-ur/translations.xml | 17 + .../main/res/values-pt-rBR/translations.xml | 8 + .../src/main/res/values-pt/translations.xml | 8 + .../main/res/values-zh-rTW/translations.xml | 1 + .../main/res/values-pt-rBR/translations.xml | 5 + .../src/main/res/values-ur/translations.xml | 4 + .../src/main/res/values-cy/translations.xml | 8 + .../src/main/res/values-de/translations.xml | 10 +- .../main/res/values-pt-rBR/translations.xml | 50 + .../src/main/res/values-ur/translations.xml | 108 ++ .../main/res/values-pt-rBR/translations.xml | 1 + .../src/main/res/values-ur/translations.xml | 5 + .../src/main/res/values-de/translations.xml | 10 +- .../main/res/values-pt-rBR/translations.xml | 7 + .../src/main/res/values-ur/translations.xml | 40 + .../main/res/values-pt-rBR/translations.xml | 25 + .../src/main/res/values-ur/translations.xml | 63 + .../src/main/res/values-ur/translations.xml | 8 + .../src/main/res/values-de/translations.xml | 8 +- .../main/res/values-pt-rBR/translations.xml | 3 + .../src/main/res/values-ur/translations.xml | 17 + .../main/res/values-pt-rBR/translations.xml | 27 + .../src/main/res/values-ur/translations.xml | 33 + .../src/main/res/values-ur/translations.xml | 4 + .../main/res/values-pt-rBR/translations.xml | 5 + .../src/main/res/values-de/translations.xml | 50 +- .../main/res/values-pt-rBR/translations.xml | 10 + .../src/main/res/values-pt/translations.xml | 4 + .../src/main/res/values-ur/translations.xml | 69 + .../main/res/values-zh-rTW/translations.xml | 4 + .../main/res/values-pt-rBR/translations.xml | 3 + .../src/main/res/values-ur/translations.xml | 4 + .../src/main/res/values-eu/translations.xml | 1 + .../main/res/values-pt-rBR/translations.xml | 21 + .../src/main/res/values-de/translations.xml | 2 +- .../src/main/res/values-ur/translations.xml | 7 + .../main/res/values-pt-rBR/translations.xml | 1 + .../src/main/res/values-ur/translations.xml | 5 + .../src/main/res/values-cy/translations.xml | 48 + .../src/main/res/values-de/translations.xml | 4 +- .../main/res/values-pt-rBR/translations.xml | 27 + .../src/main/res/values-pt/translations.xml | 1 + .../src/main/res/values-ur/translations.xml | 78 + .../main/res/values-pt-rBR/translations.xml | 11 + .../src/main/res/values-ur/translations.xml | 11 + .../src/main/res/values-cy/translations.xml | 8 + .../main/res/values-pt-rBR/translations.xml | 10 + .../src/main/res/values-ur/translations.xml | 10 + .../src/main/res/values-de/translations.xml | 2 +- .../main/res/values-pt-rBR/translations.xml | 3 + .../src/main/res/values-ur/translations.xml | 25 + .../main/res/values-pt-rBR/translations.xml | 8 + .../src/main/res/values-pt/translations.xml | 1 + .../src/main/res/values-ur/translations.xml | 11 + .../main/res/values-zh-rTW/translations.xml | 1 + .../src/main/res/values-cy/translations.xml | 48 + .../src/main/res/values-de/translations.xml | 8 +- .../src/main/res/values-eu/translations.xml | 6 + .../src/main/res/values-fi/translations.xml | 5 + .../main/res/values-pt-rBR/translations.xml | 88 + .../src/main/res/values-pt/translations.xml | 24 +- .../src/main/res/values-sv/translations.xml | 5 + .../src/main/res/values-uk/translations.xml | 5 + .../src/main/res/values-ur/translations.xml | 307 +++ .../main/res/values-zh-rTW/translations.xml | 2 + plugins/src/main/kotlin/extension/locales.kt | 1 + .../de/appnav.root_RootView_Day_0_de.png | 4 +- .../de/appnav.root_RootView_Day_1_de.png | 4 +- ...nces_AnalyticsPreferencesView_Day_0_de.png | 4 +- ...ytics.impl_AnalyticsOptInView_Day_0_de.png | 4 +- ...ytics.impl_AnalyticsOptInView_Day_1_de.png | 4 +- ....impl.addpeople_AddPeopleView_Day_0_de.png | 4 +- ....impl.addpeople_AddPeopleView_Day_1_de.png | 4 +- ....impl.addpeople_AddPeopleView_Day_2_de.png | 4 +- ....impl.addpeople_AddPeopleView_Day_3_de.png | 4 +- ...nents_SearchMultipleUsersResultItem_de.png | 4 +- ...mponents_SearchSingleUserResultItem_de.png | 4 +- ...nfigureroom_ConfigureRoomViewDark_0_de.png | 4 +- ...nfigureroom_ConfigureRoomViewDark_1_de.png | 4 +- ...nfigureroom_ConfigureRoomViewDark_2_de.png | 4 +- ...nfigureroom_ConfigureRoomViewDark_3_de.png | 4 +- ...nfigureroom_ConfigureRoomViewDark_4_de.png | 4 +- ...nfigureroom_ConfigureRoomViewDark_5_de.png | 4 +- ...figureroom_ConfigureRoomViewLight_0_de.png | 4 +- ...figureroom_ConfigureRoomViewLight_1_de.png | 4 +- ...figureroom_ConfigureRoomViewLight_2_de.png | 4 +- ...figureroom_ConfigureRoomViewLight_3_de.png | 4 +- ...figureroom_ConfigureRoomViewLight_4_de.png | 4 +- ...figureroom_ConfigureRoomViewLight_5_de.png | 4 +- ....impl.root_CreateRoomRootView_Day_0_de.png | 4 +- ....impl.root_CreateRoomRootView_Day_3_de.png | 4 +- ....impl.root_CreateRoomRootView_Day_4_de.png | 4 +- ....impl.root_CreateRoomRootView_Day_5_de.png | 4 +- ...ations_NotificationsOptInView_Day_0_de.png | 4 +- ...cline_AcceptDeclineInviteView_Day_1_de.png | 4 +- ...cline_AcceptDeclineInviteView_Day_2_de.png | 4 +- ...s.leaveroom.api_LeaveRoomView_Day_1_de.png | 4 +- ...s.leaveroom.api_LeaveRoomView_Day_2_de.png | 4 +- ...s.leaveroom.api_LeaveRoomView_Day_3_de.png | 4 +- ...s.leaveroom.api_LeaveRoomView_Day_6_de.png | 4 +- ...ider_AccountProviderOtherView_Day_0_de.png | 3 + ...der_ChangeAccountProviderView_Day_0_de.png | 4 +- ...der_ChangeAccountProviderView_Day_1_de.png | 3 + ...der_ChooseAccountProviderView_Day_0_de.png | 3 + ...der_ChooseAccountProviderView_Day_1_de.png | 3 + ...der_ChooseAccountProviderView_Day_2_de.png | 3 + ...er_ConfirmAccountProviderView_Day_0_de.png | 4 +- ...er_ConfirmAccountProviderView_Day_1_de.png | 4 +- ...er_ConfirmAccountProviderView_Day_2_de.png | 4 +- ...ginpassword_LoginPasswordView_Day_0_de.png | 4 +- ...ginpassword_LoginPasswordView_Day_1_de.png | 4 +- ...ginpassword_LoginPasswordView_Day_2_de.png | 4 +- ...ns.onboarding_OnBoardingView_Day_0_de.png} | 0 ...ns.onboarding_OnBoardingView_Day_1_de.png} | 0 ...ns.onboarding_OnBoardingView_Day_2_de.png} | 0 ...ns.onboarding_OnBoardingView_Day_3_de.png} | 0 ...ns.onboarding_OnBoardingView_Day_4_de.png} | 0 ...ens.onboarding_OnBoardingView_Day_5_de.png | 3 + ...der_SearchAccountProviderView_Day_1_de.png | 4 +- ...irect_DefaultDirectLogoutView_Day_1_de.png | 4 +- ...atures.logout.impl_LogoutView_Day_4_de.png | 4 +- ...impl.report_ReportMessageView_Day_0_de.png | 4 +- ...impl.report_ReportMessageView_Day_1_de.png | 4 +- ...impl.report_ReportMessageView_Day_2_de.png | 4 +- ...impl.report_ReportMessageView_Day_3_de.png | 4 +- ...impl.report_ReportMessageView_Day_4_de.png | 4 +- ...impl.report_ReportMessageView_Day_5_de.png | 4 +- ...ts.event_TimelineItemPollView_Day_1_de.png | 4 +- ...es.messages.impl_MessagesView_Day_4_de.png | 4 +- ...nt_PollContentViewUndisclosed_Day_0_de.png | 4 +- ...alytics_AnalyticsSettingsView_Day_0_de.png | 4 +- ...ions_NotificationSettingsView_Day_6_de.png | 4 +- ...ions_NotificationSettingsView_Day_7_de.png | 4 +- ....api.crash_CrashDetectionView_Day_0_de.png | 4 +- ...ection_RageshakeDialogContent_Day_0_de.png | 4 +- ....impl.bugreport_BugReportView_Day_0_de.png | 4 +- ....impl.bugreport_BugReportView_Day_1_de.png | 4 +- ....impl.bugreport_BugReportView_Day_2_de.png | 4 +- ....impl.bugreport_BugReportView_Day_3_de.png | 4 +- ....impl.bugreport_BugReportView_Day_4_de.png | 4 +- ....invite_RoomInviteMembersView_Day_0_de.png | 4 +- ....invite_RoomInviteMembersView_Day_1_de.png | 4 +- ....invite_RoomInviteMembersView_Day_2_de.png | 4 +- ....invite_RoomInviteMembersView_Day_3_de.png | 4 +- ....invite_RoomInviteMembersView_Day_4_de.png | 4 +- ....invite_RoomInviteMembersView_Day_5_de.png | 4 +- ....invite_RoomInviteMembersView_Day_6_de.png | 4 +- ....invite_RoomInviteMembersView_Day_7_de.png | 4 +- ..._RoomNotificationSettingsView_Day_0_de.png | 4 +- ..._RoomNotificationSettingsView_Day_1_de.png | 4 +- ..._RoomNotificationSettingsView_Day_2_de.png | 4 +- ..._RoomNotificationSettingsView_Day_3_de.png | 4 +- ..._RoomNotificationSettingsView_Day_4_de.png | 4 +- ..._RoomNotificationSettingsView_Day_5_de.png | 4 +- ..._RoomNotificationSettingsView_Day_6_de.png | 4 +- ...omponents_RoomListContentView_Day_3_de.png | 4 +- ...omponents_RoomListContentView_Day_4_de.png | 4 +- ...mListDeclineInviteMenuContent_Day_0_de.png | 4 +- ...es.roomlist.impl_RoomListView_Day_7_de.png | 4 +- ...rofile.shared_UserProfileView_Day_0_de.png | 4 +- ...rofile.shared_UserProfileView_Day_1_de.png | 4 +- ...rofile.shared_UserProfileView_Day_3_de.png | 4 +- ...rofile.shared_UserProfileView_Day_4_de.png | 4 +- ...rofile.shared_UserProfileView_Day_6_de.png | 4 +- ...rofile.shared_UserProfileView_Day_7_de.png | 4 +- ...rofile.shared_UserProfileView_Day_9_de.png | 4 +- ...mponents_CheckableUnresolvedUserRow_de.png | 4 +- ...rix.ui.components_UnresolvedUserRow_de.png | 4 +- ...rmissions.api_PermissionsView_Day_0_de.png | 4 +- screenshots/html/data.js | 1643 +++++++++-------- 234 files changed, 3061 insertions(+), 1086 deletions(-) create mode 100644 appnav/src/main/res/values-pt-rBR/translations.xml create mode 100644 features/analytics/api/src/main/res/values-ur/translations.xml create mode 100644 features/analytics/impl/src/main/res/values-ur/translations.xml create mode 100644 features/call/impl/src/main/res/values-ur/translations.xml create mode 100644 features/createroom/impl/src/main/res/values-ur/translations.xml create mode 100644 features/ftue/impl/src/main/res/values-ur/translations.xml create mode 100644 features/invite/impl/src/main/res/values-ur/translations.xml create mode 100644 features/joinroom/impl/src/main/res/values-ur/translations.xml create mode 100644 features/knockrequests/impl/src/main/res/values-ur/translations.xml create mode 100644 features/leaveroom/api/src/main/res/values-ur/translations.xml create mode 100644 features/lockscreen/impl/src/main/res/values-ur/translations.xml create mode 100644 features/login/impl/src/main/res/values-ur/translations.xml create mode 100644 features/logout/impl/src/main/res/values-ur/translations.xml create mode 100644 features/messages/impl/src/main/res/values-ur/translations.xml create mode 100644 features/poll/impl/src/main/res/values-ur/translations.xml create mode 100644 features/preferences/impl/src/main/res/values-ur/translations.xml create mode 100644 features/rageshake/api/src/main/res/values-ur/translations.xml create mode 100644 features/rageshake/impl/src/main/res/values-ur/translations.xml create mode 100644 features/reportroom/impl/src/main/res/values-pt-rBR/translations.xml create mode 100644 features/reportroom/impl/src/main/res/values-pt/translations.xml create mode 100644 features/roomaliasresolver/impl/src/main/res/values-pt-rBR/translations.xml create mode 100644 features/roomaliasresolver/impl/src/main/res/values-ur/translations.xml create mode 100644 features/roomdetails/impl/src/main/res/values-ur/translations.xml create mode 100644 features/roomdirectory/impl/src/main/res/values-ur/translations.xml create mode 100644 features/roomlist/impl/src/main/res/values-ur/translations.xml create mode 100644 features/securebackup/impl/src/main/res/values-ur/translations.xml create mode 100644 features/signedout/impl/src/main/res/values-ur/translations.xml create mode 100644 features/userprofile/shared/src/main/res/values-ur/translations.xml create mode 100644 features/verifysession/impl/src/main/res/values-ur/translations.xml create mode 100644 libraries/androidutils/src/main/res/values-ur/translations.xml create mode 100644 libraries/dateformatter/impl/src/main/res/values-pt-rBR/translations.xml create mode 100644 libraries/eventformatter/impl/src/main/res/values-ur/translations.xml create mode 100644 libraries/matrixui/src/main/res/values-ur/translations.xml create mode 100644 libraries/mediaviewer/impl/src/main/res/values-pt-rBR/translations.xml create mode 100644 libraries/permissions/api/src/main/res/values-ur/translations.xml create mode 100644 libraries/permissions/impl/src/main/res/values-ur/translations.xml create mode 100644 libraries/push/impl/src/main/res/values-ur/translations.xml create mode 100644 libraries/pushproviders/firebase/src/main/res/values-pt-rBR/translations.xml create mode 100644 libraries/pushproviders/firebase/src/main/res/values-ur/translations.xml create mode 100644 libraries/pushproviders/unifiedpush/src/main/res/values-pt-rBR/translations.xml create mode 100644 libraries/pushproviders/unifiedpush/src/main/res/values-ur/translations.xml create mode 100644 libraries/textcomposer/impl/src/main/res/values-ur/translations.xml create mode 100644 libraries/troubleshoot/impl/src/main/res/values-ur/translations.xml create mode 100644 libraries/ui-strings/src/main/res/values-ur/translations.xml create mode 100644 screenshots/de/features.login.impl.accountprovider_AccountProviderOtherView_Day_0_de.png create mode 100644 screenshots/de/features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Day_1_de.png create mode 100644 screenshots/de/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_0_de.png create mode 100644 screenshots/de/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_1_de.png create mode 100644 screenshots/de/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_2_de.png rename screenshots/de/{features.onboarding.impl_OnBoardingView_Day_0_de.png => features.login.impl.screens.onboarding_OnBoardingView_Day_0_de.png} (100%) rename screenshots/de/{features.onboarding.impl_OnBoardingView_Day_1_de.png => features.login.impl.screens.onboarding_OnBoardingView_Day_1_de.png} (100%) rename screenshots/de/{features.onboarding.impl_OnBoardingView_Day_2_de.png => features.login.impl.screens.onboarding_OnBoardingView_Day_2_de.png} (100%) rename screenshots/de/{features.onboarding.impl_OnBoardingView_Day_3_de.png => features.login.impl.screens.onboarding_OnBoardingView_Day_3_de.png} (100%) rename screenshots/de/{features.onboarding.impl_OnBoardingView_Day_4_de.png => features.login.impl.screens.onboarding_OnBoardingView_Day_4_de.png} (100%) create mode 100644 screenshots/de/features.login.impl.screens.onboarding_OnBoardingView_Day_5_de.png diff --git a/app/src/main/res/xml/locales_config.xml b/app/src/main/res/xml/locales_config.xml index 4e71ac402c..2fd8c27c09 100644 --- a/app/src/main/res/xml/locales_config.xml +++ b/app/src/main/res/xml/locales_config.xml @@ -30,6 +30,7 @@ + diff --git a/appnav/src/main/res/values-eu/translations.xml b/appnav/src/main/res/values-eu/translations.xml index 784fb57956..909ade151c 100644 --- a/appnav/src/main/res/values-eu/translations.xml +++ b/appnav/src/main/res/values-eu/translations.xml @@ -1,5 +1,6 @@ "Amaitu saioa eta bertsio-berritu" + "%1$s(e)k ez da bateragarria lehengo protokoloarekin. Amaitu saioa eta hasi berriro aplikazioa erabiltzen jarraitzeko." "Zure zerbitzaria ez da bateragarria protokolo zaharrarekin. Amaitu saioa eta hasi berriro aplikazioa erabiltzen jarraitzeko." diff --git a/appnav/src/main/res/values-pt-rBR/translations.xml b/appnav/src/main/res/values-pt-rBR/translations.xml new file mode 100644 index 0000000000..385e07d7d1 --- /dev/null +++ b/appnav/src/main/res/values-pt-rBR/translations.xml @@ -0,0 +1,6 @@ + + + "Sair e atualizar" + "%1$s não suporta mais o protocolo antigo. Termine sessão e volte a iniciar sessão para continuar a utilizar a aplicação." + "Seu servidor doméstico não é mais compatível com o protocolo antigo. Faça logout e login novamente para continuar usando o aplicativo." + diff --git a/features/analytics/api/src/main/res/values-de/translations.xml b/features/analytics/api/src/main/res/values-de/translations.xml index bf3584e3b4..30fd8cd7e5 100644 --- a/features/analytics/api/src/main/res/values-de/translations.xml +++ b/features/analytics/api/src/main/res/values-de/translations.xml @@ -1,7 +1,7 @@ "Teile anonyme Nutzungsdaten, um uns bei der Identifizierung von Problemen zu helfen." - "Weitere Informationen findest du %1$s." + "Sie können unsere Bedingungen %1$s lesen." "hier" "Analysedaten teilen" diff --git a/features/analytics/api/src/main/res/values-ur/translations.xml b/features/analytics/api/src/main/res/values-ur/translations.xml new file mode 100644 index 0000000000..237bb30d9e --- /dev/null +++ b/features/analytics/api/src/main/res/values-ur/translations.xml @@ -0,0 +1,7 @@ + + + "مسائل کی نشاندہی کرنے میں ہماری مدد کے لیے گمنام استعمال کے بیانات کا اشتراک کریں۔" + "آپ ہماری تمام شرائط پڑھ سکتے ہیں %1$s۔" + "یہاں" + "تجزیاتی بیانات کا اشتراک کریں" + diff --git a/features/analytics/impl/src/main/res/values-de/translations.xml b/features/analytics/impl/src/main/res/values-de/translations.xml index 2a91e8ce25..9f3bd7e652 100644 --- a/features/analytics/impl/src/main/res/values-de/translations.xml +++ b/features/analytics/impl/src/main/res/values-de/translations.xml @@ -2,9 +2,9 @@ "Wir zeichnen keine persönlichen Daten auf und erstellen keine Profile." "Teile anonyme Nutzungsdaten, um uns bei der Identifizierung von Problemen zu helfen." - "Weitere Informationen findest du %1$s." + "Sie können unsere Bedingungen %1$s lesen." "hier" - "Du kannst diese Funktion jederzeit deaktivieren" + "Sie können dies jederzeit beenden" "Wir geben deine Daten nicht an Dritte weiter" "Hilf uns %1$s zu verbessern" diff --git a/features/analytics/impl/src/main/res/values-ur/translations.xml b/features/analytics/impl/src/main/res/values-ur/translations.xml new file mode 100644 index 0000000000..4b950335cb --- /dev/null +++ b/features/analytics/impl/src/main/res/values-ur/translations.xml @@ -0,0 +1,10 @@ + + + "ہم کسی بھی ذاتی ڈیٹا کو ثبت یا پروفائل نہیں کریں گے" + "مسائل کی نشاندہی کرنے میں ہماری مدد کے لیے گمنام استعمال کے بیانات کا اشتراک کریں۔" + "آپ ہماری تمام شرائط پڑھ سکتے ہیں %1$s۔" + "یہاں" + "آپ اسے کسی بھی وقت بند کر سکتے ہیں" + "ہم آپکے بیانات کا فریق ثالث کے ساتھ اشتراک نہیں کریں گے" + "%1$s کو بہتر بنانے میں مدد کریں" + diff --git a/features/call/impl/src/main/res/values-pt-rBR/translations.xml b/features/call/impl/src/main/res/values-pt-rBR/translations.xml index c3d90e4bb0..f9f8873f6d 100644 --- a/features/call/impl/src/main/res/values-pt-rBR/translations.xml +++ b/features/call/impl/src/main/res/values-pt-rBR/translations.xml @@ -3,4 +3,5 @@ "Chamada em andamento" "Toque para retornar à chamada" "☎️ Chamada em andamento" + "Chamada do Element recebida" diff --git a/features/call/impl/src/main/res/values-ur/translations.xml b/features/call/impl/src/main/res/values-ur/translations.xml new file mode 100644 index 0000000000..d0cafe91c6 --- /dev/null +++ b/features/call/impl/src/main/res/values-ur/translations.xml @@ -0,0 +1,7 @@ + + + "جاری مکالمہ" + "مکالمہ پر واپس جانے کے لیے تھپتھپائیں" + "☎️ مکالمہ جاری ہے" + "ورودی ایلیمنٹ کال" + diff --git a/features/createroom/impl/src/main/res/values-de/translations.xml b/features/createroom/impl/src/main/res/values-de/translations.xml index 9ca4d52012..24fe39efca 100644 --- a/features/createroom/impl/src/main/res/values-de/translations.xml +++ b/features/createroom/impl/src/main/res/values-de/translations.xml @@ -1,11 +1,11 @@ "Neuer Raum" - "Personen einladen" + "Nutzer einladen" "Beim Erstellen des Chats ist ein Fehler aufgetreten" - "Nur eingeladene Personen haben Zutritt zu diesem Chatroom. Alle Nachrichten sind durchgehend verschlüsselt." + "Nur eingeladene Personen haben Zutritt zu diesem Chatroom. Alle Nachrichten sind Ende-zu-Ende verschlüsselt." "Privater Chatroom" - "Jeder kann diesen Chatroom finden. + "Alle können diesen Chatroom finden. Sie können dies aber jederzeit in den Chatroomeinstellungen ändern." "Öffentlicher Raum" "Jeder kann diesem Chatroom beitreten" diff --git a/features/createroom/impl/src/main/res/values-pt-rBR/translations.xml b/features/createroom/impl/src/main/res/values-pt-rBR/translations.xml index b7006f7715..52c9f569af 100644 --- a/features/createroom/impl/src/main/res/values-pt-rBR/translations.xml +++ b/features/createroom/impl/src/main/res/values-pt-rBR/translations.xml @@ -7,9 +7,24 @@ "Sala privada" "Qualquer um pode encontrar esta sala. Você pode mudar isso a qualquer momento nas configurações da sala." + "Sala pública" + "Qualquer pessoa pode entrar nesta sala" + "Qualquer pessoa" + "Acesso à sala" + "Qualquer pessoa pode pedir para entrar na sala, mas um administrador ou moderador terá de aceitar a solicitação" + "Pedir para entrar" + "Para que esta sala fique visível no diretório público de salas, você precisará de um endereço de sala." + "Endereço da sala" "Nome da sala" + "Visibilidade da sala" "Criar uma sala" "Tópico (opcional)" "Diretório de salas" "Ocorreu um erro ao tentar iniciar um chat" + "Entrar na sala pelo endereço" + "Não é um endereço válido" + "Entrar…" + "Foi encontrada uma sala correspondente" + "Sala não encontrada" + "Por exemplo, #nome-da-sala:matrix.org" diff --git a/features/createroom/impl/src/main/res/values-ur/translations.xml b/features/createroom/impl/src/main/res/values-ur/translations.xml new file mode 100644 index 0000000000..6fe476462e --- /dev/null +++ b/features/createroom/impl/src/main/res/values-ur/translations.xml @@ -0,0 +1,16 @@ + + + "نیا کمرہ" + "لوگوں کو مدعو کریں" + "کمرہ تخلیق کرتے ہوئے ایک نقص واقع ہوا" + "صرف مدعو لوگ ہی اس کمرے تک رسائی حاصل کر سکتے ہیں۔ تمام پیغامات آخر تا آخر مرموز کردہ ہیں۔" + "نجی کمرہ" + "کوئی بھی یہ کمرہ ڈھونڈ سکتا ہے۔ +آپ اسے کمرے کی ترتیبات میں کسی بھی وقت تبدیل کرسکتے ہیں۔" + "عوامی کمرہ" + "کمرے کا نام" + "ایک کمرہ بنائیں" + "موضوع (اختیاری)" + "کمرے کا راہنامچہ" + "گفتگو شروع کرنے کی کوشش کرتے وقت ایک خرابی واقع ہوگئی" + diff --git a/features/deactivation/impl/src/main/res/values-pt-rBR/translations.xml b/features/deactivation/impl/src/main/res/values-pt-rBR/translations.xml index 734df67962..51a412a7a3 100644 --- a/features/deactivation/impl/src/main/res/values-pt-rBR/translations.xml +++ b/features/deactivation/impl/src/main/res/values-pt-rBR/translations.xml @@ -1,6 +1,14 @@ + "Confirme que você deseja desativar sua conta. Essa ação não pode ser desfeita." + "Excluir todas as minhas mensagens" + "Aviso: Os futuros usuários poderão ver conversas incompletas." "Desativar sua conta é %1$s, isso irá:" + "irreversível" + "%1$s sua conta (você não poderá fazer login novamente, e seu ID não poderá ser reutilizado)." + "Desativar permanentemente" "Te remover de todas as salas de conversa." + "Exclua as informações da sua conta do nosso servidor de identidade." + "Suas mensagens ainda estarão visíveis para os usuários registrados, mas não estarão disponíveis para usuários novos ou não registrados se você optar por excluí-las." "Desativar conta" diff --git a/features/ftue/impl/src/main/res/values-de/translations.xml b/features/ftue/impl/src/main/res/values-de/translations.xml index 731912888a..902dcadb04 100644 --- a/features/ftue/impl/src/main/res/values-de/translations.xml +++ b/features/ftue/impl/src/main/res/values-de/translations.xml @@ -10,13 +10,13 @@ "Gerät verifiziert" "Ein anderes Gerät verwenden" "Bitte warten bis das andere Gerät bereit ist." - "Du kannst deine Einstellungen später ändern." + "Sie können Ihre Einstellungen später ändern." "Erlaube Benachrichtigungen und verpasse keine Nachricht" "Wiederherstellungsschlüssel eingeben" "Anrufe, Umfragen, Suchfunktionen und mehr werden im Laufe des Jahres hinzugefügt." "Der Nachrichtenverlauf für verschlüsselte Räume wird in diesem Update nicht verfügbar sein." "Wir würden uns freuen, von dir zu hören. Teile uns deine Meinung über die Einstellungsseite mit." "Los geht\'s!" - "Folgendes musst du wissen:" + "Folgendes sollten Sie wissen:" "Willkommen bei %1$s!" diff --git a/features/ftue/impl/src/main/res/values-pt-rBR/translations.xml b/features/ftue/impl/src/main/res/values-pt-rBR/translations.xml index defb5f71d6..223ceedd31 100644 --- a/features/ftue/impl/src/main/res/values-pt-rBR/translations.xml +++ b/features/ftue/impl/src/main/res/values-pt-rBR/translations.xml @@ -1,8 +1,15 @@ + "Não consegue confirmar?" + "Criar uma nova chave de recuperação" + "Verifique este dispositivo para configurar mensagens seguras." + "Confirme sua identidade" "Usar outro dispositivo" + "Use a chave de recuperação" + "Agora você pode ler ou enviar mensagens com segurança, e qualquer pessoa com quem você conversa também pode confiar neste dispositivo." "Dispositivo verificado" "Usar outro dispositivo" + "Aguardando outro dispositivo…" "Você pode alterar suas configurações mais tarde." "Permita notificações e nunca perca uma mensagem" "Insira a chave de recuperação" diff --git a/features/ftue/impl/src/main/res/values-ur/translations.xml b/features/ftue/impl/src/main/res/values-ur/translations.xml new file mode 100644 index 0000000000..69882e87d0 --- /dev/null +++ b/features/ftue/impl/src/main/res/values-ur/translations.xml @@ -0,0 +1,22 @@ + + + "تصدیق نہیں کر سکتے؟" + "ایک نئی بازیابی کلید تخلیق کریں" + "محفوظ پیغام رسانی ترتیب دینے کیلئے اس آلے کی توثیق کریں۔" + "اپنی شناخت کی تصدیق کریں" + "دوسرا آلہ استعمال کریں" + "بازیابی کلید استعمال کریں" + "اب آپ محفوظ طریقے سے پیغامات پڑھ یا بھیج سکتے ہیں، اور جسکے ساتھ آپ گفتگو کرتے ہیں وہ بھی اس آلہ پر بھروسہ کر سکتا ہے۔" + "آلہ توثیق شدہ" + "دوسرا آلہ استعمال کریں" + "دوسرے آلہ پر منتظر…" + "آپ بعد میں اپنی ترتیبات تبدیل کر سکتے ہیں۔" + "اطلاعات کی اجازت دیں اور کبھی بھی کسی پیغام سے محروم نہ ہوں۔" + "بازیابی کلید درج کریں" + "مکالمات، رائے شماری، تلاش اور مزید بعد میں اس سال شامل کیا جائے گا۔" + "مرموز کردہ کمروں کیلئے سرگزشتِ پیغام ابھی دستیاب نہیں ہے" + "ہم آپ سے سننا پسند کریں گے، ترتیبات کے صفحہ کے ذریعے ہمیں بتائیں کہ آپ کیا سوچتے ہیں۔" + "چلیں!" + "یہ ہے جو آپ کو جاننے کی ضرورت ہے:" + "%1$s میں خوش آمدید!" + diff --git a/features/invite/impl/src/main/res/values-de/translations.xml b/features/invite/impl/src/main/res/values-de/translations.xml index 13fae055e7..b03e5e1d49 100644 --- a/features/invite/impl/src/main/res/values-de/translations.xml +++ b/features/invite/impl/src/main/res/values-de/translations.xml @@ -5,9 +5,9 @@ "Melden Sie diesen Raum Ihrem Kontoanbieter." "Beschreiben Sie den Grund für die Meldung…" "Ablehnen und blockieren" - "Möchtest du die Einladung zum Betreten von %1$s wirklich ablehnen?" + "Möchten Sie die Einladung zum Betreten von %1$s wirklich ablehnen?" "Einladung ablehnen" - "Bist du sicher, dass du diese Direktnachricht von %1$s ablehnen möchtest?" + "Möchten Sie diesen privaten Chat mit %1$s wirklich ablehnen?" "Einladung ablehnen" "Keine Einladungen" "%1$s (%2$s) hat dich eingeladen" diff --git a/features/invite/impl/src/main/res/values-pt-rBR/translations.xml b/features/invite/impl/src/main/res/values-pt-rBR/translations.xml index 9cd284690c..43569cdd31 100644 --- a/features/invite/impl/src/main/res/values-pt-rBR/translations.xml +++ b/features/invite/impl/src/main/res/values-pt-rBR/translations.xml @@ -1,9 +1,18 @@ + "Você não verá nenhuma mensagem ou convite de sala deste usuário" + "Bloquear usuário" + "Denuncie esta sala ao fornecedor da sua conta." + "Descreva o motivo da denúncia…" + "Recusar e bloquear" "Tem certeza de que deseja recusar o convite para ingressar em %1$s?" "Recusar convite" "Tem certeza de que deseja recusar esse chat privado com %1$s?" "Recusar chat" "Sem convites" "%1$s(%2$s) convidou você" + "Sim, recusar e bloquear" + "Você tem certeza de que deseja recusar o convite para participar desta sala? Isso também impedirá que %1$s entre em contato com você ou o convide para as salas." + "Recusar convite e bloquear" + "Recusar e bloquear" diff --git a/features/invite/impl/src/main/res/values-pt/translations.xml b/features/invite/impl/src/main/res/values-pt/translations.xml index f71940012c..5813c9e54f 100644 --- a/features/invite/impl/src/main/res/values-pt/translations.xml +++ b/features/invite/impl/src/main/res/values-pt/translations.xml @@ -1,5 +1,10 @@ + "Não verás quaisquer mensagens ou convites deste utilizador" + "Bloquear utilizador" + "Denunciar esta sala ao teu operador de conta." + "Descreve a razão de denúncia…" + "Rejeitar e bloquear" "Tens a certeza que queres rejeitar o convite para entra em %1$s?" "Rejeitar convite" "Tem a certeza que queres rejeitar esta conversa privada com %1$s?" diff --git a/features/invite/impl/src/main/res/values-ur/translations.xml b/features/invite/impl/src/main/res/values-ur/translations.xml new file mode 100644 index 0000000000..641f5e7b7e --- /dev/null +++ b/features/invite/impl/src/main/res/values-ur/translations.xml @@ -0,0 +1,9 @@ + + + "کیا آپکو یقین ہے کہ آپ %1$s میں شامل ہونے کی درخواست مسترد کرنا چاہتے ہیں؟" + "دعوت مسترد کریں" + "کیا آپکو یقین ہے کہ آپ %1$s کیساتھ نجی گفتگو مسترد کرنا چاہتے ہیں؟" + "گفتگو مسترد کریں" + "کوئی دعوت نامے نہیں" + "%1$s (%2$s) نے آپ کو مدعو کیا" + diff --git a/features/invite/impl/src/main/res/values-zh-rTW/translations.xml b/features/invite/impl/src/main/res/values-zh-rTW/translations.xml index 63cac65d3d..5b75fcd726 100644 --- a/features/invite/impl/src/main/res/values-zh-rTW/translations.xml +++ b/features/invite/impl/src/main/res/values-zh-rTW/translations.xml @@ -3,6 +3,7 @@ "您將不會看到來自此使用者的任何訊息或聊天室邀請" "封鎖使用者" "向您的帳號提供者回報此聊天室。" + "說明回報的原因……" "拒絕並封鎖" "您確定您想要拒絕加入 %1$s 的邀請嗎?" "拒絕邀請" diff --git a/features/joinroom/impl/src/main/res/values-eu/translations.xml b/features/joinroom/impl/src/main/res/values-eu/translations.xml index b2d30220fb..4d6ddd9dbd 100644 --- a/features/joinroom/impl/src/main/res/values-eu/translations.xml +++ b/features/joinroom/impl/src/main/res/values-eu/translations.xml @@ -3,6 +3,7 @@ "Arrazoia: %1$s." "Utzi eskaera bertan behera" "Bai, utzi bertan behera" + "Gelara sartzeak huts egin du." "Ahaztu gela hau" "Sartu gelan" "Bidali batzeko eskaera" diff --git a/features/joinroom/impl/src/main/res/values-pt-rBR/translations.xml b/features/joinroom/impl/src/main/res/values-pt-rBR/translations.xml index 75b75b80a4..015e235c0e 100644 --- a/features/joinroom/impl/src/main/res/values-pt-rBR/translations.xml +++ b/features/joinroom/impl/src/main/res/values-pt-rBR/translations.xml @@ -1,4 +1,32 @@ + "Você foi banido desta sala por %1$s." + "Você foi banido desta sala" + "Motivo: %1$s." + "Cancelar pedido" + "Sim, cancele" + "Tem a certeza de que pretende cancelar o seu pedido de adesão a esta sala?" + "Cancelar pedido de adesão" + "Sim, recusar e bloquear" + "Você tem certeza de que deseja recusar o convite para participar desta sala? Isso também impedirá que %1$s entre em contato com você ou o convide para as salas." + "Recusar convite e bloquear" + "Recusar e bloquear" + "A entrada na sala falhou." + "Esta sala é apenas para convidados ou pode haver restrições de acesso no nível do espaço." + "Esquecer esta sala" + "Você precisa de um convite para entrar nesta sala" + "Entrar na sala" + "Talvez você precise ser convidado ou ser membro de um espaço para participar." + "Enviar solicitação para participar" + "Mensagem (opcional)" + "Você receberá um convite para participar da sala se seu pedido for aceito." + "Pedido de adesão enviado" + "Não foi possível exibir a visualização da sala. Isso pode ser devido a problemas de rede ou de servidor." + "Não foi possível exibir a visualização desta sala" "%1$s não suporta espaços ainda. Você pode acessar os espaços na web." + "Os espaços ainda não são compatíveis" + "Clique no botão abaixo e um administrador da sala será notificado. Você poderá participar da conversa assim que for aprovado." + "Você deve ser um membro desta sala para visualizar o histórico de mensagens." + "Quer entrar nesta sala?" + "A pré-visualização não está disponível" diff --git a/features/joinroom/impl/src/main/res/values-ur/translations.xml b/features/joinroom/impl/src/main/res/values-ur/translations.xml new file mode 100644 index 0000000000..af34c73710 --- /dev/null +++ b/features/joinroom/impl/src/main/res/values-ur/translations.xml @@ -0,0 +1,11 @@ + + + "کمرے میں شامل ہوں" + "شامل ہونے کی درخواست بھیجیں" + "%1$s ابھی تک خالی جگہوں کی حمایت نہیں کرتا۔ آپ جال پر خالی جگہوں تک رسائی حاصل کرسکتے ہیں۔" + "ابھی تک جگہیں تعاون یافتہ نہیں" + "نیچے دیئے گئے کلید پر دبائیں اور کمرے کے منتظم کو مطلع کیا جائے گا۔ منظور ہونے کے بعد آپ گفتگو میں شامل ہو سکیں گے۔" + "پیغام کی سرگزشت دیکھنے کے لیے آپ کا اس کمرے کا رکن ہونا ضروری ہے۔" + "اس کمرے میں شامل ہونا چاہتے ہیں؟" + "پیش منظر دستیاب نہیں ہے" + diff --git a/features/knockrequests/impl/src/main/res/values-cy/translations.xml b/features/knockrequests/impl/src/main/res/values-cy/translations.xml index 2ea2ec041e..8257ae857b 100644 --- a/features/knockrequests/impl/src/main/res/values-cy/translations.xml +++ b/features/knockrequests/impl/src/main/res/values-cy/translations.xml @@ -25,6 +25,14 @@ "Dim cais i ymuno yn disgwyl" "Yn llwytho ceisiadau i ymuno…" "Ceisiadau i ymuno" + + "Dyw %1$s na +%2$d arall eisiau ymuno â\'r ystafell hon" + "Mae %1$s +%2$d arall eisiau ymuno â\'r ystafell hon" + "Mae %1$s +%2$d arall eisiau ymuno â\'r ystafell hon" + "Mae %1$s +%2$d arall eisiau ymuno â\'r ystafell hon" + "Mae %1$s +%2$d arall eisiau ymuno â\'r ystafell hon" + "Mae %1$s +%2$d arall eisiau ymuno â\'r ystafell hon" + "Gweld y cyfan" "Derbyn" "Mae %1$s eisiau ymuno â\'r ystafell hon" diff --git a/features/knockrequests/impl/src/main/res/values-pt-rBR/translations.xml b/features/knockrequests/impl/src/main/res/values-pt-rBR/translations.xml index ebece87661..b602cedaf5 100644 --- a/features/knockrequests/impl/src/main/res/values-pt-rBR/translations.xml +++ b/features/knockrequests/impl/src/main/res/values-pt-rBR/translations.xml @@ -1,4 +1,36 @@ + "Sim, aceitar todos" + "Tem certeza de que deseja aceitar todos os pedidos de adesão?" + "Aceitar todos os pedidos" + "Aceitar todos" + "Não pudemos aceitar todas as solicitações. Você gostaria de tentar novamente?" + "Falha ao aceitar todas as solicitações" + "Aceitando todas as solicitações de adesão" + "Não pudemos aceitar essa solicitação. Você gostaria de tentar novamente?" + "Falha ao aceitar a solicitação" + "Aceitando solicitação de adesão" + "Sim, recusar e banir" + "Você tem certeza de que deseja recusar e banir %1$s? Este usuário não poderá solicitar acesso para entrar nesta sala novamente." + "Recusar e proibir o acesso" + "Recusando e proibindo o acesso" + "Sim, recusar" + "Você tem certeza de que deseja recusar a solicitação de %1$s para participar desta sala?" + "Recusar acesso" + "Recusar e banir" + "Não foi possível recusar esta solicitação. Você gostaria de tentar novamente?" + "Falha ao recusar a solicitação" + "Recusando a solicitação de adesão" + "Quando alguém pedir para entrar na sala, você poderá ver o pedido aqui." + "Nenhum pedido pendente de adesão" + "Carregando solicitações para participar…" + "Solicitações para entrar" + + "%1$s +%2$d outro desejam entrar desta sala" + "%1$s +%2$d outros desejam entrar desta sala" + + "Ver tudo" "Aceitar" + "%1$s quer entrar nesta sala" + "Ver" diff --git a/features/knockrequests/impl/src/main/res/values-ur/translations.xml b/features/knockrequests/impl/src/main/res/values-ur/translations.xml new file mode 100644 index 0000000000..fba633f6fb --- /dev/null +++ b/features/knockrequests/impl/src/main/res/values-ur/translations.xml @@ -0,0 +1,4 @@ + + + "قبول کریں" + diff --git a/features/leaveroom/api/src/main/res/values-de/translations.xml b/features/leaveroom/api/src/main/res/values-de/translations.xml index 5c4928257c..6ac6c4a756 100644 --- a/features/leaveroom/api/src/main/res/values-de/translations.xml +++ b/features/leaveroom/api/src/main/res/values-de/translations.xml @@ -1,7 +1,7 @@ "Bist du sicher, dass du diese Unterhaltung verlassen willst? Diese Unterhaltung ist nicht öffentlich und du kannst ihr ohne Einladung nicht wieder beitreten." - "Bist du sicher, dass du diesen Raum verlassen möchtest? Du bist die einzige Person hier. Wenn du gehst, kann in Zukunft niemand mehr eintreten, auch du nicht." - "Bist du sicher, dass du diesen Raum verlassen möchtest? Dieser Raum ist nicht öffentlich und du kannst ihm ohne Einladung nicht erneut beitreten." - "Bist du sicher, dass du den Raum verlassen willst?" + "Sind Sie sicher dass Sie diesen Chatroom verlassen möchten? Sie sind die einzige Person hier. Wenn Sie gehen, kann in Zukunft niemand mehr - auch Sie nicht - diesen Chatrooom betreten.." + "Sind Sie sicher dass Sie diesen Chatroom verlassen möchten? Dieser Chatroom ist nicht öffentlich und Sie können ihn ohne Einladung nicht wieder betreten." + "Sind Sie sicher, dass Sie den Raum verlassen möchten?" diff --git a/features/leaveroom/api/src/main/res/values-ur/translations.xml b/features/leaveroom/api/src/main/res/values-ur/translations.xml new file mode 100644 index 0000000000..5a6cfeae7f --- /dev/null +++ b/features/leaveroom/api/src/main/res/values-ur/translations.xml @@ -0,0 +1,7 @@ + + + "کیا آپ واقعی اس گفتگو کو چھوڑنا چاہتے ہیں؟ یہ گفتگو عوامی نہیں ہے اور آپ دعوت نامے کے بغیر دوبارہ شامل نہیں ہو سکیں گے۔" + "کیا آپ واقعی یہ کمرہ چھوڑنا چاہتے ہیں؟ آپ یہاں واحد شخص ہیں۔ اگر آپ چھوڑتے ہیں، تو مستقبل میں کوئی بھی شامل نہیں ہو سکے گا، آپ سمیت۔" + "کیا آپ واقعی یہ کمرہ چھوڑنا چاہتے ہیں؟ یہ کمرہ عوامی نہیں اور آپ دعوت نامے کے بغیر پھر شامل نہیں ہو پائیں گے۔" + "کیا آپ واقعی کمرہ چھوڑنا چاہتے ہیں؟" + diff --git a/features/lockscreen/impl/src/main/res/values-cy/translations.xml b/features/lockscreen/impl/src/main/res/values-cy/translations.xml index de8f2d7596..d82bc28cc7 100644 --- a/features/lockscreen/impl/src/main/res/values-cy/translations.xml +++ b/features/lockscreen/impl/src/main/res/values-cy/translations.xml @@ -24,6 +24,22 @@ Dewiswch rywbeth cofiadwy. Os byddwch chi\'n anghofio\'r PIN hwn, byddwch chi\'n "Nid yw\'r PINau\'n cyfateb" "Bydd angen i chi ail-fewngofnodi a chreu PIN newydd i barhau" "Rydych chi\'n cael eich allgofnodi" + + "Does gennych %1$d ceisiadau i ddatgloi" + "Mae gennych %1$d cais i ddatgloi" + "Mae gennych %1$d gais i ddatgloi" + "Mae gennych %1$d chais i ddatgloi" + "Mae gennych %1$d chais i ddatgloi" + "Mae gennych %1$d cais i ddatgloi" + + + "PIN anghywir. Does gennych %1$d cais arall" + "PIN anghywir. Mae gennych %1$d cais arall" + "PIN anghywir. Mae gennych %1$d gais arall" + "PIN anghywir. Mae gennych %1$d chais arall" + "PIN anghywir. Mae gennych %1$d chais arall" + "PIN anghywir. Mae gennych %1$d cais arall" + "Defnyddio biometreg" "Defnyddio PIN" "Yn allgofnodi…" diff --git a/features/lockscreen/impl/src/main/res/values-pt-rBR/translations.xml b/features/lockscreen/impl/src/main/res/values-pt-rBR/translations.xml index da8b201b6d..ab3ffc4c06 100644 --- a/features/lockscreen/impl/src/main/res/values-pt-rBR/translations.xml +++ b/features/lockscreen/impl/src/main/res/values-pt-rBR/translations.xml @@ -3,6 +3,7 @@ "autenticação por biometria" "desbloqueio por biometria" "Desbloquear com biometria" + "Confirmar biometria" "Esqueceu o PIN?" "Alterar código de PIN" "Permitir desbloqueio biométrico" diff --git a/features/lockscreen/impl/src/main/res/values-ur/translations.xml b/features/lockscreen/impl/src/main/res/values-ur/translations.xml new file mode 100644 index 0000000000..85629f7cb0 --- /dev/null +++ b/features/lockscreen/impl/src/main/res/values-ur/translations.xml @@ -0,0 +1,37 @@ + + + "زیست سنجی تصدیق" + "زیست سنجی فتحِ قفل" + "زیست سنجی کے ساتھ فتح قفل کریں" + "‏PIN بھول گئے؟" + "PIN رمز بدلیں" + "زیست سنجی فتحِ قفل کی اجازت دیں" + "PIN ہٹائیں" + "کیا آپ کو یقین ہے کہ آپ PIN ہٹانا چاہتے ہیں؟" + "PIN ہٹائیں؟" + "%1$s کی اجازت دیں" + "میں اس کے بجائے PIN استعمال کروں گا" + "اپنے آپ کو کچھ وقت بچائیں اور ہر بار اطلاقیے کو غیر مقفل کرنے کے لئے %1$s کا استعمال کریں۔" + "PIN چنیں" + "PIN کی تصدیق کریں" + "اپنی گفتگوہا میں اضافی سلامتی شامل کرنے کیلئے %1$s مقفل کریں۔ + +کوئی یادگار چیز چنیں۔ اگر آپ اس PIN کو بھول گئے، آپ طلاقیے سے خارج ہوجائیں گے۔" + "حفاظتی وجوہات کی بنا پر آپ اسے اپنے PIN رمز کے طور پر منتخب نہیں کر سکتے" + "ایک مختلف PIN چنیں" + "برائے مہربانی ایک ہی PIN دو بار درج کریں۔" + "PINs مماثل نہیں ہیں" + "آگے بڑھنے کیلئے آپکو دوبارہ داخل ہونے اور ایک نیا PIN بنانے کی ضرورت ہوگی۔" + "آپکو خارج کیا جا رہا ہے" + + "آپکے پاس %1$d غیر مقفل کرنے کی کوشش ہے" + "آپکے پاس %1$d غیر مقفل کرنے کی کوششیں ہیں" + + + "غلط PIN۔ آپ کے پاس %1$d مزید موقع ہے" + "غلط PIN۔ آپ کے پاس %1$d مزید موقعے ہیں" + + "زیست سنجی استعمال کریں" + "PIN استعمال کریں" + "خارج ہورہاہے…" + diff --git a/features/login/impl/src/main/res/values-cs/translations.xml b/features/login/impl/src/main/res/values-cs/translations.xml index 77bc398fef..9d6e4c51f7 100644 --- a/features/login/impl/src/main/res/values-cs/translations.xml +++ b/features/login/impl/src/main/res/values-cs/translations.xml @@ -89,5 +89,6 @@ Zkuste se přihlásit ručně nebo naskenujte QR kód pomocí jiného zařízen "Matrix je otevřená síť pro bezpečnou a decentralizovanou komunikaci." "Zde budou uloženy vaše konverzace - podobně jako u poskytovatele e-mailových služeb uchováváte své e-maily." "Chystáte se přihlásit do služby %1$s" + "Vyberte poskytovatele účtu" "Chystáte se vytvořit účet na %1$s" diff --git a/features/login/impl/src/main/res/values-cy/translations.xml b/features/login/impl/src/main/res/values-cy/translations.xml index 462a7c640c..3f787fbf99 100644 --- a/features/login/impl/src/main/res/values-cy/translations.xml +++ b/features/login/impl/src/main/res/values-cy/translations.xml @@ -89,5 +89,6 @@ Ceisiwch fewngofnodi â llaw, neu sganiwch y cod QR gyda dyfais arall." "Mae Matrix yn rhwydwaith agored ar gyfer cyfathrebu diogel, datganoledig." "Dyma lle bydd eich sgyrsiau\'n byw - yn union fel y byddech chi\'n defnyddio darparwr e-bost i gadw\'ch e-byst." "Rydych ar fin mewngofnodi i %1$s" + "Dewiswch ddarparwr cyfrif" "Rydych chi ar fin creu cyfrif ar %1$s" diff --git a/features/login/impl/src/main/res/values-de/translations.xml b/features/login/impl/src/main/res/values-de/translations.xml index 73a52ee0db..df54d7ad9e 100644 --- a/features/login/impl/src/main/res/values-de/translations.xml +++ b/features/login/impl/src/main/res/values-de/translations.xml @@ -6,14 +6,14 @@ "Suche nach einem Unternehmen, einer Community oder einem privaten Server." "Kontoanbieter finden" "Hier werden deine Gespräche gespeichert - so wie du deine E-Mails bei einem E-Mail-Anbieter aufbewahren würden." - "Du bist dabei, dich bei %s anzumelden" + "Sie sind dabei, sich bei %s anzumelden" "Hier werden deine Gespräche gespeichert - so wie du deine E-Mails bei einem E-Mail-Anbieter aufbewahren würden." - "Du bist dabei, ein Konto bei %s zu erstellen" + "Sie sind dabei, ein Konto bei %s zu erstellen." "Matrix.org ist ein großer, kostenloser Server im öffentlichen Matrix-Netzwerk für eine sichere, dezentralisierte Kommunikation, der von der Matrix.org Foundation betrieben wird." "Sonstige" "Verwende einen anderen Kontoanbieter, z. B. deinen eigenen privaten Server oder ein Geschäftskonto." "Kontoanbieter wechseln" - "Wir konnten diesen Homeserver nicht erreichen. Bitte überprüfe, ob du die Homeserver-URL korrekt eingegeben hast. Wenn die URL korrekt ist, wende dich an deinen Homeserver-Administrator, um weitere Hilfe zu erhalten." + "Wir konnten diesen Homeserver nicht erreichen. Bitte überprüfen Sie ob die Homeserver-URL korrekt eingegeben wurde. Wenn die URL korrekt ist, wenden Sie sich an ihren Homeserver- Administrator, um weitere Hilfe zu erhalten." "Der Server ist aufgrund eines Problems im \"well-known file\" nicht verfügbar: %1$s" "Der gewählte Kontoanbieter unterstützt Sliding Sync nicht. Für die Verwendung von %1$s ist ein Upgrade des Servers erforderlich." @@ -85,6 +85,6 @@ Versuche, dich manuell anzumelden, oder scanne den QR-Code mit einem anderen Ger "Ein privater Server für die Mitarbeiter von Element." "Matrix ist ein offenes Netzwerk für eine sichere, dezentrale Kommunikation." "Hier werden deine Gespräche gespeichert - so wie du deine E-Mails bei einem E-Mail-Anbieter aufbewahren würden." - "Du bist dabei, dich bei %1$s anzumelden" - "Du bist dabei, ein Konto auf %1$s zu erstellen" + "Sie sind dabei, sich bei %1$s anzumelden" + "Sie sind dabei, ein Konto auf %1$s zu erstellen" diff --git a/features/login/impl/src/main/res/values-et/translations.xml b/features/login/impl/src/main/res/values-et/translations.xml index 4b28c1483f..90451ed170 100644 --- a/features/login/impl/src/main/res/values-et/translations.xml +++ b/features/login/impl/src/main/res/values-et/translations.xml @@ -89,5 +89,6 @@ Proovi käsitsi sisselogimist või skaneeri QR-koodi mõne muu seadmega.""Matrix on avatud võrk turvalise ja hajutatud suhtluse jaoks." "See on koht, kus sinu vestlused elavad – just nagu kasutaksid oma e-kirjade säilitamiseks e-postiteenuse pakkujat." "Sa oled sisselogimas koduserverisse %1$s" + "Vali teenusepakkuja" "Sa oled loomas kasutajakontot koduserveris %1$s" diff --git a/features/login/impl/src/main/res/values-eu/translations.xml b/features/login/impl/src/main/res/values-eu/translations.xml index 25f11458bf..ecf908f21f 100644 --- a/features/login/impl/src/main/res/values-eu/translations.xml +++ b/features/login/impl/src/main/res/values-eu/translations.xml @@ -11,6 +11,7 @@ "Erabili beste kontu-hornitzaile bat, hala nola zure zerbitzari pribatua edo laneko kontu bat." "Aldatu kontu-hornitzailea" "Zerbitzariaren URLa" + "Sartu domeinu-helbide bat." "Zein da zure zerbitzariaren helbidea?" "Hautatu zure zerbitzaria" "Sortu kontua" @@ -29,6 +30,7 @@ "Konexio segurua ezartzen" "Ezin izan da konexio segururik ezarri gailu berriarekin. Lehendik dauden gailuak seguru daude oraindik ere eta ez duzu haietaz kezkatu beharrik." "Orain zer?" + "Saiatu berriro QR kodearekin saioa hasten sare-arazo bat izan bada" "Horrek ez badu funtzionatzen, hasi saioa eskuz" "Konexioa ez da segurua" "Gailu honetan agertzen diren bi digituak sartzeko eskatuko zaizu." @@ -36,6 +38,7 @@ "Hasi saioa beste gailu batean eta saiatu berriro, edo erabili saioa hasita duen beste gailuren bat." "Saioa hasteko eskaera bertan behera utzi da beste gailuan" "Saioa hasteko eskaera bertan behera utzi da" + "Saioa hasteari uko egin zaio beste dispositiboan." "Saio-hasiera ukatu da" "Saio-hasiera iraungi da. Saiatu berriro." "Saio-hasiera ez da garaiz gauzatu." diff --git a/features/login/impl/src/main/res/values-fi/translations.xml b/features/login/impl/src/main/res/values-fi/translations.xml index 56f1a52365..a05dc55216 100644 --- a/features/login/impl/src/main/res/values-fi/translations.xml +++ b/features/login/impl/src/main/res/values-fi/translations.xml @@ -14,7 +14,7 @@ "Käytä toista palveluntarjoajaa, kuten omaa yksityistä palvelintasi tai työpaikkaasi." "Vaihda palveluntarjoajaa" "Kotipalvelimeen ei saatu yhteyttä. Varmista, että olet syöttänyt osoitteen oikein. Jos osoite on oikein, ota yhteyttä palvelimesi ylläpitäjään." - "Sliding sync ei ole saatavilla well-known tiedostossa olevan ongelman vuoksi: + "Palvelin ei ole saatavilla .well-known tiedostossa olevan ongelman vuoksi: %1$s" "Valitsemasi palveluntarjoaja ei tue sliding syncia. Palvelimen päivitys tarvitaan %1$s -sovelluksen käyttämiseen." "%1$s ei saa yhdistää %2$s -palvelimeen." @@ -89,5 +89,6 @@ Yritä kirjautua sisään manuaalisesti tai skannaa QR-koodi toisella laitteella "Matrix on avoin verkko turvallista, hajautettua viestintää varten." "Keskustelusi asuvat täällä — aivan kuten aivan kuten käyttäisit sähköpostipalveluntarjoajaa sähköpostiesi säilyttämiseen." "Olet kirjautumassa sisään %1$s-palvelimelle" + "Valitse palveluntarjoaja" "Olet luomassa tiliä %1$s-palvelimelle" diff --git a/features/login/impl/src/main/res/values-fr/translations.xml b/features/login/impl/src/main/res/values-fr/translations.xml index 517c63baca..71129d054e 100644 --- a/features/login/impl/src/main/res/values-fr/translations.xml +++ b/features/login/impl/src/main/res/values-fr/translations.xml @@ -87,5 +87,6 @@ "Matrix est un réseau ouvert pour une communication sécurisée et décentralisée." "C’est ici que vos conversations seront enregistrées, comme vous le feriez avec un fournisseur de messagerie pour conserver vos e-mails." "Vous êtes sur le point de vous connecter à %1$s" + "Choisissez un fournisseur de compte" "Vous êtes sur le point de créer un compte sur %1$s" diff --git a/features/login/impl/src/main/res/values-hu/translations.xml b/features/login/impl/src/main/res/values-hu/translations.xml index fbd9e57262..f72090d4c5 100644 --- a/features/login/impl/src/main/res/values-hu/translations.xml +++ b/features/login/impl/src/main/res/values-hu/translations.xml @@ -89,5 +89,6 @@ Próbáljon meg kézileg bejelentkezni, vagy olvassa be a QR-kódot egy másik e "A Matrix egy nyitott hálózat a biztonságos, decentralizált kommunikációhoz." "Itt lesznek a beszélgetései – ahogyan egy e-mail-szolgáltatást is használna a levelei kezeléséhez." "Hamarosan bejelentkezik ebbe: %1$s" + "Válassza ki a fiókszolgáltatót" "Hamarosan létrehoz egy fiókot ezen: %1$s" diff --git a/features/login/impl/src/main/res/values-pt-rBR/translations.xml b/features/login/impl/src/main/res/values-pt-rBR/translations.xml index 9543098529..58e3f0bc6b 100644 --- a/features/login/impl/src/main/res/values-pt-rBR/translations.xml +++ b/features/login/impl/src/main/res/values-pt-rBR/translations.xml @@ -14,7 +14,9 @@ "Use um provedor de conta diferente, como seu próprio servidor privado ou uma conta corporativa." "Alterar provedor da conta" "Não conseguimos acessar esse servidor. Verifique se você inseriu a URL do servidor corretamente. Se a URL estiver correta, entre em contato com o administrador do servidor para obter mais ajuda." + "O provedor de conta selecionado não é compatível com a sliding sync. É necessária uma atualização do servidor para que você possa usar o %1$s." "URL do servidor" + "Insira um endereço de domínio." "Qual é o endereço do seu servidor?" "Selecione seu servidor" "Criar conta" @@ -33,8 +35,48 @@ "Bem-vindo ao mais rápido %1$s de todos os tempos. Turbinado para velocidade e simplicidade." "Bem-vindo ao %1$s. Turbinado, para velocidade e simplicidade" "Esteja no seu elemento" + "Estabelecendo uma conexão segura" + "Não foi possível estabelecer uma conexão segura com o novo dispositivo. Seus dispositivos existentes ainda estão seguros e você não precisa se preocupar com eles." + "E agora?" + "Tente iniciar sessão novamente com um código QR caso este tenha sido um problema de rede" + "Se o problema persistir, tente uma rede Wi-Fi diferente ou use seus dados móveis em vez de Wi-Fi" + "Se isso não funcionar, faça login manualmente" + "Conexão não segura" + "Você será solicitado a inserir os dois dígitos mostrados neste dispositivo." + "Digite o número abaixo em seu outro dispositivo" + "Faça login em seu outro dispositivo e tente novamente, ou use outro dispositivo que já esteja conectado." + "Outro dispositivo não conectado" + "O login foi cancelado no outro dispositivo." + "Solicitação de login cancelada" + "O login foi recusado no outro dispositivo." + "Login recusado" + "O login expirou. Tente novamente." + "O login não foi concluído a tempo" + "Seu outro dispositivo não é compatível com o login em %s com um código QR. + +Tente fazer login manualmente ou escanear o código QR com outro dispositivo." + "Código QR incompatível" + "Seu provedor de conta não é compatível com %1$s." + "%1$s incompatível" + "Pronto para escanear" + "Abrir %1$s em um dispositivo desktop" + "Clique no seu avatar" + "Selecione %1$s" + "\"Vincular novo dispositivo\"" + "Leia o código QR com este dispositivo" + "Disponível somente se o provedor da sua conta for compatível." + "Abra %1$s em outro dispositivo para obter o código QR" + "Use o código QR exibido no outro dispositivo." "Tente novamente" + "Código QR errado" + "Ir para as configurações da câmera" "Você deve permitir ao %1$s usar a câmera do seu dispositivo para continuar." + "Permita o acesso à câmera para escanear o código QR" + "Leia o código QR" + "Comece de novo" + "Ocorreu um erro inesperado. Tente novamente." + "Aguardando seu outro dispositivo" + "Seu provedor de conta pode solicitar o seguinte código para verificar o login." "Seu código de verificação" "Alterar provedor da conta" "Um servidor privado para funcionários do Element." diff --git a/features/login/impl/src/main/res/values-pt/translations.xml b/features/login/impl/src/main/res/values-pt/translations.xml index 2da567a829..d74a35ec92 100644 --- a/features/login/impl/src/main/res/values-pt/translations.xml +++ b/features/login/impl/src/main/res/values-pt/translations.xml @@ -14,9 +14,14 @@ "Utiliza um operador de conta diferente, como o teu próprio servidor privado ou uma conta de trabalho." "Alterar operador de conta" "Não foi possível comunicar com este servidor. Por favor, verifica se introduziste o seu URL corretamente. Se sim, contacta o administrador para obteres mais ajuda." - "A sincronização deslizante (sliding sync) não está disponível devido a um problema no ficheiro \"well-known\": + "O servidor não está disponível devido a um problema no ficheiro \".well-known\": %1$s" + "O operador de conta selecionado não suporta sincronização deslizante (sliding sync). É necessária uma atualização do servidor para poder usar a %1$s." + "%1$s não se pode ligar a %2$s." + "Esta aplicação foi configurada para permitir: %1$s." + "Operador de conta %1$s não permitido." "URL do servidor" + "Insere um endereço" "Qual é o endereço do teu servidor?" "Seleciona o teu servidor" "Criar conta" @@ -30,6 +35,7 @@ "Bem-vindo(a) de volta!" "Iniciar sessão em %1$s" "Iniciar sessão manualmente" + "Iniciar sessão em %1$s" "Iniciar sessão com código QR" "Criar conta" "Bem-vindo(a) à %1$s mais rápida de sempre. Super rápida e simples." @@ -83,5 +89,6 @@ Tenta iniciar a sessão manualmente ou digitaliza o código QR com outro disposi "A Matrix é uma rede aberta de comunicação descentralizada e segura." "É aqui que as tuas conversas vão ficar — tal como num serviço de e-mail." "Irás iniciar sessão em %1$s" + "Escolher operador de conta" "Irás criar uma conta em %1$s" diff --git a/features/login/impl/src/main/res/values-sk/translations.xml b/features/login/impl/src/main/res/values-sk/translations.xml index 7bdb9c079d..81ebff5711 100644 --- a/features/login/impl/src/main/res/values-sk/translations.xml +++ b/features/login/impl/src/main/res/values-sk/translations.xml @@ -89,5 +89,6 @@ Skúste sa prihlásiť manuálne alebo naskenujte QR kód pomocou iného zariade "Matrix je otvorená sieť pre bezpečnú a decentralizovanú komunikáciu." "Tu budú žiť vaše konverzácie - podobne ako používate poskytovateľa e-mailových služieb na uchovávanie e-mailov." "Chystáte sa prihlásiť do %1$s" + "Vyberte poskytovateľa účtu" "Chystáte sa vytvoriť účet na %1$s" diff --git a/features/login/impl/src/main/res/values-sv/translations.xml b/features/login/impl/src/main/res/values-sv/translations.xml index 11ad5f8f10..711e899ca6 100644 --- a/features/login/impl/src/main/res/values-sv/translations.xml +++ b/features/login/impl/src/main/res/values-sv/translations.xml @@ -14,9 +14,14 @@ "Använd en annan kontoleverantör, till exempel din egen privata server eller ett jobbkonto." "Byt kontoleverantör" "Vi kunde inte nå den här hemservern. Kontrollera att du har angett hemserverns URL korrekt. Om URL:en är korrekt kontaktar du administratören för hemservern för ytterligare hjälp." - "Sliding Sync är inte tillgängligt på grund av ett problem i well-known-filen: + "Sliding Sync är inte tillgängligt på grund av ett problem i .well-known-filen: %1$s" + "Den valda kontoleverantören stöder inte sliding sync. En uppgradering till servern behövs för att använda %1$s." + "%1$s får inte ansluta till %2$s." + "Den här appen har konfigurerats för att tillåta: %1$s." + "Kontoleverantör %1$s är inte tillåten." "Hemserverns URL" + "Ange en domänadress." "Vad är adressen till din server?" "Välj din server" "Skapa konto" @@ -30,6 +35,7 @@ "Välkommen tillbaka!" "Logga in på %1$s" "Logga in manuellt" + "Logga in på %1$s" "Logga in med QR-kod" "Skapa konto" "Välkommen till den snabbaste %1$s någonsin. Superladdad för snabbhet och enkelhet." @@ -83,5 +89,6 @@ Prova att logga in manuellt eller skanna QR-koden med en annan enhet." "Matrix är ett öppet nätverk för säker, decentraliserad kommunikation." "Det är här dina konversationer kommer att sparas - precis som du skulle använda en e-postleverantör för att spara dina e-brev." "Du är på väg att logga in på %1$s" + "Välj kontoleverantör" "Du är på väg att skapa ett konto på %1$s" diff --git a/features/login/impl/src/main/res/values-uk/translations.xml b/features/login/impl/src/main/res/values-uk/translations.xml index b0f3e28567..b1cff7d9d9 100644 --- a/features/login/impl/src/main/res/values-uk/translations.xml +++ b/features/login/impl/src/main/res/values-uk/translations.xml @@ -16,6 +16,10 @@ "Не вдалося під\'єднатися до цього домашнього сервера. Перевірте правильність введеної URL-адреси домашнього сервера. Якщо URL-адреса правильна, зверніться по додаткову допомогу до адміністратора домашнього сервера." "Сервер недоступний через помилку у файлі well-known: %1$s" + "Вибраний постачальник облікових записів не підтримує sliding sync. Щоб користуватися %1$s необхідно оновити сервер." + "%1$s не дозволено під\'єднуватися до %2$s." + "Цей застосунок налаштовано так, щоб дозволити: %1$s." + "Постачальник облікового запису %1$s не дозволений." "URL-адреса домашнього сервера" "Введіть адресу домену." "Яка адреса вашого сервера?" diff --git a/features/login/impl/src/main/res/values-ur/translations.xml b/features/login/impl/src/main/res/values-ur/translations.xml new file mode 100644 index 0000000000..7b1216415e --- /dev/null +++ b/features/login/impl/src/main/res/values-ur/translations.xml @@ -0,0 +1,86 @@ + + + "اکاؤنٹ فراہم کنندہ بدلیں" + "منزلی خادم پتہ" + "تلاش کی اصطلاح یا عنوانِ مجال درج کریں۔" + "کسی شرکت، برادری، یا نجی خادم کیلئے تلاش کریں۔" + "ایک کھاتہ فراہم کنندہ ڈھونڈیں" + "یہ وہ جگہ ہے جہاں آپ کی گفتگوئیں زندہ رہیں گی — بالکل اسی طرح جیسے آپ اپنی برقی خطوط رکھنے کے لیے برقی ڈاک فراہم کنندہ کا استعمال کرتے ہوں گے۔" + "آپ %s میں داخل ہونے والے ہیں" + "یہ وہ جگہ ہے جہاں آپ کی گفتگوئیں زندہ رہیں گی — بالکل اسی طرح جیسے آپ اپنی برقی خطوط رکھنے کے لیے برقی ڈاک فراہم کنندہ کا استعمال کرتے ہوں گے۔" + "آپ %s پر ایک کھاتہ تخلیق کرنے والے ہیں" + "Matrix.org Matrix.org فاؤنڈیشن کے ذریعہ محفوظ، غیر مرکزی مواصلات کے لئے عوامی میٹرکس شبکہ پر ایک بڑا، مفت خادم ہے۔" + "دیگر" + "ایک مختلف کھاتہ فراہم کنندہ استعمال کریں، جیسے آپ کا اپنا نجی خادم یا کام کا کھاتہ۔" + "اکاؤنٹ فراہم کنندہ بدلیں" + "ہم اس منزلی خادم تک نہیں پہنچ سکے۔ برائے مہربانی پڑتال کریں کہ آپ نے ہوم سرور کا عنوان صحیح طریقے سے درج کیا ہے۔ اگر عنوان درست ہے تو مزید مدد کے لیے اپنے منزلی خادم کے منتظم سے رابطہ کریں۔" + "مشہور فائل میں کسی مسئلے کی وجہ سے سلائیڈنگ سنک دستیاب نہیں ہے: +%1$s" + "منزلی خادم عنوان" + "آپکے خادم کا پتہ کیا ہے؟" + "اپنا خادم منتخب کریں" + "کھاتہ تخلیق کریں" + "یہ کھاتہ غیر فعال کر دیا گیا ہے۔" + "غلط صارف نام اور/یا لفظ عبور" + "یہ صالح صارف شناسه نہیں ہے۔ متوقع شکل: @صارف:منزلی خادم" + "یہ خادم تازگی کی رموزِ ممیز استعمال کرنے کے لئے تشکیل دیا گیا ہے۔ لفظ عبور پر مبنی دخول استعمال کرتے ہوئے ان کی حمایت نہیں کی جاتی۔" + "منتخب منزلی خادم کلمۂ عبوری یا OIDC دخول کا تعاون نہیں کرتا۔ برائے مہربانی اپنے منتظم سے رابطہ کریں یا کوئی اور منزلی خادم چنیں۔" + "اپنی تفصیلات درج کریں" + "میٹرکس محفوظ، غیر مرکزی مواصلت کے لئے ایک کھلا شبکہ ہے۔" + "واپس خوش آمدید!" + "%1$s میں داخل ہوں" + "دستی طور پر داخل ہوں" + "کیو آر (QR) رمز کیساتھ داخل ہوں" + "کھاتہ تخلیق کریں" + "اب تک کی تیز ترین %1$s میں خوش آمدید۔ رفتار اور سادگی کے لئے مشحون" + "%1$s پر خوش آمدید۔ شحن فائق شدہ، رفتار اور سادگی کیلئے۔" + "اپنے عنصر میں رہیں" + "محفوظ اتصال قائم کر رہا ہے" + "نئے آلے سے محفوظ اتصال نہیں بنایا جا سکا۔ آپ کے موجودہ آلات اب بھی محفوظ ہیں اور آپ کو ان کے بارے میں فکر کرنے کی ضرورت نہیں ہے۔" + "اب کیا؟" + "اگر یہ شبکہ کا مسئلہ تھا تو کیو آر رمز کے ساتھ دوبارہ داخل ہونے کی کوشش کریں۔" + "اگر آپ کو بھی یہی مسئلہ درپیش ہو، تو کوئی دوسرا وائی فائی شبکہ آزمائیں یا وائی فائی کے بجائے اپنے محمول بیانات استعمال کریں۔" + "اگر یہ کام نہ کرے، تو دستی طور پر داخل ہوں" + "اتصال محفوظ نہیں" + "آپ سے اس آلے پر دکھائے گئے دو ہندسوں کو درج کرنے کو کہا جائے گا۔" + "اپنے دوسرے آلے پر درج ذیل نمبر درج کریں" + "اپنے دوسرے آلے میں داخل ہوں اور پھر دوبارہ کوشش کریں، یا کوئی دوسرا آلہ استعمال کریں جو پہلے سے دخول شدہ ہے۔" + "دوسرا آلہ دخول شدہ نہیں" + "دوسرے آلے پر دخول منسوخ کر دیا گیا تھا۔" + "دخول کی درخواست منسوخ" + "دوسرے آلہ پر دخول کو مسترد کر دیا گیا تھا۔" + "دخول مسترد کیا گیا" + "دخول کی میعاد ختم۔ برائے مہربانی دوبارہ کوشش کریں۔" + "دخول وقت پر مکمل نہیں ہوا تھا" + "آپ کا دوسرا آلہ کیو آر رمز کے ساتھ %s میں دخول کا تعاون نہیں کرتا۔ + +دستی طور پر داخل ہونے کی کوشش کریں ، یا کسی دوسرے آلے سے کیو آر رمز مسح ضوئی کریں۔" + "کر رمز غیر تعاون یافتہ" + "آپ کا کھاتہ فراہم کنندہ %1$s کا تعاون نہیں کرتا۔" + "%1$s تعاون یافتہ نہیں" + "مسح ضوئی کیلئے تیار" + "برمیز آلے پر %1$s کھولیں" + "اپنے اوتار پر دبائیں" + "%1$s منتخب کریں" + "”نیا آلہ مربوط کریں“" + "اس آلے کے ساتھ کیو آر رمز مسح ضوئی کریں" + "کیو آر رمز حاصل کرنے کے لئے کسی دوسرے آلے پر %1$s کھولیں" + "دوسرے آلے پر دکھایا گیا کیو آر رمز استعمال کریں۔" + "دوبارہ کوشش کریں" + "غلط کیو آر رمز" + "تصویرگر کی ترتیبات پر جائیں" + "جاری رکھنے کے لیے آپ %1$s کو اپنے آلے کا تصویرگر استعمال کرنے کی اجازت دینے کی ضرورت ہے۔" + "کیو آر رمز کو مسح ضوئی کرنے کے لئے تصویرگر تک رسائی کی اجازت دیں" + "کیو آر رمز مسح ضوئی کریں" + "از سر نو شروع کریں" + "ایک غیر متوقع نقص واقع ہوا۔ برائے مہربانی دوبارہ کوشش کریں۔" + "آپکے دوسرے آلے کا منتظر" + "آپ کا کھاتہ فراہم کنندہ دخول کی توثیق کے لیے درج ذیل رمز کا مطالبہ کر سکتا ہے۔" + "آپکا توثیقی رمز" + "اکاؤنٹ فراہم کنندہ بدلیں" + "ایلیمنٹ کے ملازمین کیلئے ایک نجی خادم۔" + "میٹرکس محفوظ، غیر مرکزی مواصلت کے لئے ایک کھلا شبکہ ہے۔" + "یہ وہ جگہ ہے جہاں آپ کی گفتگوئیں زندہ رہیں گی — بالکل اسی طرح جیسے آپ اپنی برقی خطوط رکھنے کے لیے برقی ڈاک فراہم کنندہ کا استعمال کرتے ہوں گے۔" + "آپ %1$s میں داخل ہونے والے ہیں" + "آپ %1$s پر ایک کھاتہ بنانے والے ہیں" + diff --git a/features/login/impl/src/main/res/values-zh-rTW/translations.xml b/features/login/impl/src/main/res/values-zh-rTW/translations.xml index 6bd29cb417..f23089779e 100644 --- a/features/login/impl/src/main/res/values-zh-rTW/translations.xml +++ b/features/login/impl/src/main/res/values-zh-rTW/translations.xml @@ -14,9 +14,11 @@ "使用不同的帳戶提供者,例如您自己的伺服器或工作帳號。" "更改帳號提供者" "我們無法連線至此家伺服器。請檢查您是否已正確輸入家伺服器 URL。若 URL 正確,請聯絡您家伺服器的管理員以取得進一步協助。" - "因為 well-known 檔案的問題,無法使用 sliding sync: + "因為 well-known 檔案的問題,伺服器不可用: %1$s" + "選定的帳號提供者不支援 sliding sync。必須升級伺服器才能使用 %1$s。" "家伺服器 URL" + "輸入網域位址。" "您的伺服器地址?" "選擇您的伺服器" "建立帳號" diff --git a/features/logout/impl/src/main/res/values-de/translations.xml b/features/logout/impl/src/main/res/values-de/translations.xml index eeec111177..be66562c24 100644 --- a/features/logout/impl/src/main/res/values-de/translations.xml +++ b/features/logout/impl/src/main/res/values-de/translations.xml @@ -1,6 +1,6 @@ - "Bist du sicher, dass du dich abmelden willst?" + "Möchten Sie sich wirklich abmelden?" "Abmelden" "Abmelden" "Abmelden…" diff --git a/features/logout/impl/src/main/res/values-ur/translations.xml b/features/logout/impl/src/main/res/values-ur/translations.xml new file mode 100644 index 0000000000..37c8c57be5 --- /dev/null +++ b/features/logout/impl/src/main/res/values-ur/translations.xml @@ -0,0 +1,18 @@ + + + "کیا آپ واقعی خارج ہونا چاہتے ہیں؟" + "خارج ہوں" + "خارج ہوں" + "خارج ہورہاہے…" + "آپ اپنے آخری جلسے سے خارج ہونے والے ہیں۔ اگر آپ ابھی خارج ہوجاتے ہیں تو آپ اپنے مرموز کردہ پیغامات تک رسائی سے محروم ہو جائیں گے۔" + "آپنے پشتارہ بند کردیا ہے" + "جب آپ پرے خط تھے تب بھی آپ کی کلیدوں کا پشتارہ کیا جا رہا تھا۔ دوبارہ جڑیں تاکہ خارج ہونے سے پہلے آپ کی کلیدوں کا پشتارہ کیا جا سکے۔" + "آپکی کلیدوں کا ابھی بھی پشتارہ کیا جا رہا ہے۔" + "برائے مہربانی خارج ہونے سے پہلے اسکے مکمل ہونے کا انتظار کریں" + "آپکی کلیدوں کا ابھی بھی پشتارہ کیا جا رہا ہے۔" + "خارج ہوں" + "آپ اپنے آخری جلسے سے خارج ہونے والے ہیں۔ اگر آپ ابھی خارج ہوجاتے ہیں تو آپ اپنے مرموز کردہ پیغامات تک رسائی سے محروم ہو جائیں گے۔" + "بازیابی غیر مرتب" + "آپ اپنے آخری جلسے سے خارج ہونے والے ہیں۔ اگر آپ ابھی خارج ہوجاتے ہیں تو ہوسکتا ہے کہ آپ اپنے مرموز کردہ پیغامات تک رسائی سے محروم ہو جائیں گے۔" + "کیا آپ نے اپنی بازیابی کی کلید محفوظ کی ہے؟" + diff --git a/features/messages/impl/src/main/res/values-cy/translations.xml b/features/messages/impl/src/main/res/values-cy/translations.xml index 9f44d8a019..9cf82d6522 100644 --- a/features/messages/impl/src/main/res/values-cy/translations.xml +++ b/features/messages/impl/src/main/res/values-cy/translations.xml @@ -38,5 +38,29 @@ "Dangos llai" "Dangos rhagor" "Newydd" + + "%1$d newid ystafelloedd" + "%1$d newid ystafell" + "%1$d newid ystafell" + "%1$d newid ystafell" + "%1$d newid ystafell" + "%1$d newid ystafell" + + + "%1$s, %2$s a %3$d arall" + "%1$s, %2$s a %3$d arall" + "%1$s, %2$s a %3$d arall" + "%1$s, %2$s a %3$d arall" + "%1$s, %2$s a %3$d arall" + "%1$s, %2$s a %3$d arall" + + + "Mae %1$s yn teipio" + "Mae %1$s yn teipio" + "Mae %1$s yn teipio" + "Mae %1$s yn teipio" + "Mae %1$s yn teipio" + "Mae %1$s yn teipio" + "%1$s a %2$s" diff --git a/features/messages/impl/src/main/res/values-de/translations.xml b/features/messages/impl/src/main/res/values-de/translations.xml index e235088a60..56faa43e6c 100644 --- a/features/messages/impl/src/main/res/values-de/translations.xml +++ b/features/messages/impl/src/main/res/values-de/translations.xml @@ -8,9 +8,9 @@ "Smileys & Menschen" "Reisen & Orte" "Symbole" - "Benutzer blockieren" - "Prüfe, ob du alle aktuellen und zukünftigen Nachrichten dieses Benutzers ausblenden möchtest" - "Diese Meldung wird an den Administrator deines Homeservers weitergeleitet. Dieser kann keine verschlüsselten Nachrichten lesen." + "Nutzer blockieren" + "Prüfen Sie, ob Sie alle aktuellen und zukünftigen Nachrichten dieses Nutzers ausblenden wollen" + "Diese Nachricht wird dem Administrator ihres Homeservers gemeldet. Dieser kann allerdings keine verschlüsselten Nachrichten lesen." "Grund für die Meldung dieses Inhalts" "Kamera" "Foto aufnehmen" @@ -22,8 +22,8 @@ "Textformatierung" "Der Nachrichtenverlauf ist derzeit nicht verfügbar" "Der Nachrichtenverlauf ist nicht verfügbar. Verifiziere dieses Gerät, um deinen Nachrichtenverlauf zu sehen." - "Möchtest du sie wieder einladen?" - "Du bist allein in diesem Chat" + "Möchten Sie sie erneut einladen?" + "Sie sind in diesem Chat allein" "Alle Mitglieder benachrichtigen" "Alle" "Erneut senden" diff --git a/features/messages/impl/src/main/res/values-pt-rBR/translations.xml b/features/messages/impl/src/main/res/values-pt-rBR/translations.xml index fb7eaa3916..b94905323c 100644 --- a/features/messages/impl/src/main/res/values-pt-rBR/translations.xml +++ b/features/messages/impl/src/main/res/values-pt-rBR/translations.xml @@ -31,6 +31,7 @@ "Adicionar emoji" "Este é o início do %1$s." "Este é o início desta conversa." + "Chamada não suportada. Pergunte se o chamador pode usar o novo aplicativo Element X." "Mostrar menos" "Mensagem copiada" "Você não tem permissão para postar nesta sala" diff --git a/features/messages/impl/src/main/res/values-pt/translations.xml b/features/messages/impl/src/main/res/values-pt/translations.xml index e3847e435a..3eaa774960 100644 --- a/features/messages/impl/src/main/res/values-pt/translations.xml +++ b/features/messages/impl/src/main/res/values-pt/translations.xml @@ -9,7 +9,7 @@ "Viagens e Lugares" "Símbolos" "Bloquear utilizador" - "Ativar para esconder todas as atuais e futuras mensagens deste utilizador" + "Ativar para ocultar todas as atuais e futuras mensagens deste utilizador" "Esta mensagem será denunciada ao administrador do teu servidor. Porém, não lhe será possível ler quaisquer mensagens cifradas." "Razão de denúncia" "Câmara" diff --git a/features/messages/impl/src/main/res/values-ur/translations.xml b/features/messages/impl/src/main/res/values-ur/translations.xml new file mode 100644 index 0000000000..2b09c2bf0c --- /dev/null +++ b/features/messages/impl/src/main/res/values-ur/translations.xml @@ -0,0 +1,53 @@ + + + "سرگرمیاں" + "جھنڈے" + "طعم و مشروب" + "حیوانات و فطرت" + "اشیاء" + "مسکراہٹیں و لوگ" + "سفر و مقامات" + "علامتیں" + "صارف کو مسدود کریں" + "پڑتال کریں کہ کیا آپ اس صارف سے تمام موجودہ اور مستقبلی پیغامات چھپانا چاہتے ہیں۔" + "اس پیغام کی اطلاع آپکے منزلی خادم کے منتظم کو دی جائیگی۔ وہ کوئی مرموزکردہ پیغامات نہیں پڑھ سکیں گے۔" + "اس مواد کی اطلاع دینے کی وجہ" + "تصویرگر" + "تصویر لیں" + "ویڈیو ثبت کریں" + "منسلکہ" + "تصویر اور ویڈیو مکتب" + "مقام" + "رائے شماری" + "متن کی تنسیق" + "پیغام کی سرگزشت فی الحال دستیاب نہیں ہے" + "اس کمرے میں پیغام کی سرگزشت دستیاب نہیں ہے۔ اپنے پیغام کی سرگزشت دیکھنے کے لیے اس آلے کی توثیق کریں۔" + "کیا آپ انہیں واپس مدعو کرنا چاہیں گے؟" + "آپ اس گفتگو میں تنہا ہیں" + "پورے کمرے کو مطلع کریں" + "ہر کوئی" + "دوبارہ بھیجیں" + "آپ کا پیغام بھیجنے میں ناکام" + "رمزِ تعبیری شامل کریں" + "یہ %1$s کا آغاز ہے" + "یہ اس گفتگو کا آغاز ہے" + "کم دکھائیں" + "پیغام نقل کردہ" + "آپ کو اس کمرے میں پوسٹ کرنے کی اجازت نہیں ہے" + "کم دکھائیں" + "مزید دکھائیں" + "نیا" + + "%1$d کمرے کی تبدیلی" + "%1$d کمرے کی تبدیلیاں" + + + "%1$s، %2$s اور %3$d دیگر" + "%1$s، %2$s اور %3$d دیگر" + + + "%1$s تحریر کر رہا ہے" + "%1$s تحریر کر رہے ہیں" + + "%1$s اور %2$s" + diff --git a/features/poll/impl/src/main/res/values-ur/translations.xml b/features/poll/impl/src/main/res/values-ur/translations.xml new file mode 100644 index 0000000000..8bb04683a1 --- /dev/null +++ b/features/poll/impl/src/main/res/values-ur/translations.xml @@ -0,0 +1,19 @@ + + + "اختیار شامل کریں" + "رائے شماری کے بعد ہی نتائج ظاہر کریں" + "آراء چھپائیں" + "اختیار %1$d" + "آپ کی تبدیلیاں محفوظ نہیں کی گئیں۔ کیا آپ کو یقین ہے کہ آپ واپس جانا چاہتے ہیں؟" + "سوال یا موضوع" + "رائے شماری کس بارے میں ہے؟" + "رائے شماری بنائیں" + "کیا آپ کو یقین ہے کہ آپ اس رائے شماری کو حذف کرنا چاہتے ہیں؟" + "رائے شماری حذف کریں" + "رائے شماری میں ترمیم کریں" + "کوئی جاری رائے شماری ہا نہیں مل سکے۔" + "ماضی کے کوئی رائے شماری ہا نہیں مل سکے۔" + "جاری" + "ماضی" + "رائے شماری ہا" + diff --git a/features/preferences/impl/src/main/res/values-de/translations.xml b/features/preferences/impl/src/main/res/values-de/translations.xml index 71ebbf89d1..5e27b10a61 100644 --- a/features/preferences/impl/src/main/res/values-de/translations.xml +++ b/features/preferences/impl/src/main/res/values-de/translations.xml @@ -2,7 +2,7 @@ "Damit du keinen wichtigen Anruf verpasst, ändere bitte deine Einstellungen so, dass du bei gesperrtem Telefon Benachrichtigungen im Vollbildmodus erhältst." "Verbessere dein Anruferlebnis" - "Wähle aus, wie du Benachrichtigungen erhalten möchtest" + "Wählen Sie, wie Sie Benachrichtigungen erhalten möchten" "Entwickler-Modus" "Aktivieren, um Zugriff auf Features und Funktionen für Entwickler zu aktivieren." "Benutzerdefinierte Element-Aufruf-Basis-URL" diff --git a/features/preferences/impl/src/main/res/values-eu/translations.xml b/features/preferences/impl/src/main/res/values-eu/translations.xml index 62e4da471c..b624cd87f0 100644 --- a/features/preferences/impl/src/main/res/values-eu/translations.xml +++ b/features/preferences/impl/src/main/res/values-eu/translations.xml @@ -5,6 +5,7 @@ "Aukeratu jakinarazpenak nola jaso" "Garatzaile modua" "Gaitu garatzaileentzako ezaugarrietarako eta funtzionalitateetarako sarbidea izateko." + "Igo argazkiak eta bideoak azkarrago eta murriztu datuen erabilera" "Moderazioa eta Segurtasuna" "Push jakinarazpen hornitzailea" "Desgaitu testu aberatseko editorea Markdown eskuz idazteko." diff --git a/features/preferences/impl/src/main/res/values-pt-rBR/translations.xml b/features/preferences/impl/src/main/res/values-pt-rBR/translations.xml index 01be12bd80..a6a1396dec 100644 --- a/features/preferences/impl/src/main/res/values-pt-rBR/translations.xml +++ b/features/preferences/impl/src/main/res/values-pt-rBR/translations.xml @@ -1,16 +1,29 @@ + "Para garantir que você nunca perca uma chamada importante, por favor altere as suas configurações para permitir notificações em tela cheia enquanto o seu celular estiver bloqueado." + "Melhore a sua experiência de chamadas" "Escolha como receber notificações" "Modo de desenvolvedor" "Habilite para ter acesso a recursos e funcionalidades para desenvolvedores." "URL base do Element Call personalizado" "Defina um URL base personalizado para Element Call." "URL inválida, por favor verifique se o protocolo (http/https) e o endereço correto estão presentes." + "Oculte avatares em solicitações de convite para salas" + "Ocultar visualizações de mídia na linha do tempo" + "Faça upload de fotos e vídeos com mais rapidez e reduza o uso de dados" + "Otimize a qualidade da mídia" + "Moderação e segurança" + "Provedor de notificações por push" "Desative o editor de rich text para digitar Markdown manualmente." "Confirmações de leitura" "Se desligado, suas confirmações de leitura não serão enviadas para ninguém. Você ainda receberá confirmações de leitura de outros usuários." "Compartilhar presença" "Se desligado, você não poderá enviar ou receber confirmações de leitura ou notificações de digitação." + "Ocultar sempre" + "Mostrar sempre" + "Em salas privadas" + "Uma mídia oculta sempre pode ser exibida se você tocar nela" + "Mostrar mídia na linha do tempo" "Ativar a opção de visualizar o fonte da mensagem na linha do tempo." "Você não tem usuários bloqueados" "Desbloquear" @@ -50,4 +63,7 @@ Se você continuar, algumas de suas configurações poderão mudar." "configurações do sistema" "Notificações do sistema desativadas" "Notificações" + "Histórico de push" + "Solução de problemas" + "Solucionar problemas de notificações" diff --git a/features/preferences/impl/src/main/res/values-pt/translations.xml b/features/preferences/impl/src/main/res/values-pt/translations.xml index d05418b7c0..af380cf9ac 100644 --- a/features/preferences/impl/src/main/res/values-pt/translations.xml +++ b/features/preferences/impl/src/main/res/values-pt/translations.xml @@ -8,8 +8,8 @@ "URL base para Element Call personalizado" "Define um URL base para a Element Call." "URL inválido, certifica-te de que incluis o protocolo (http/https) e o endereço correto." - "Esconder avatares nos pedidos de acesso a salas" - "Esconder pré-visualizações de multimédia na cronologia" + "Ocultar avatares nos pedidos de acesso a salas" + "Ocultar pré-visualizações de multimédia na cronologia" "Carrega fotos e vídeos mais rapidamente e reduz a utilização de dados" "Otimiza a qualidade da mídia" "Moderação e Segurança" @@ -19,6 +19,11 @@ "Se desativada, os teus recibos de leitura não serão enviados a ninguém. Continuas a receber recibos de leitura de outros utilizadores." "Partilhar presença" "Se desativado, não poderás enviar ou receber recibos de leitura ou notificações de escrita." + "Ocultar sempre" + "Mostrar sempre" + "Em salas privadas" + "Multimédia oculta pode sempre ser exibida tocando-lhe" + "Mostrar multimédia na cronologia" "Ativa a opção para ver a origem da mensagem na cronologia." "Não tens nenhum utilizador bloqueado" "Desbloquear" @@ -58,6 +63,7 @@ Se prosseguires, algumas delas podem ser alteradas." "configurações do sistema" "Notificações do sistema desativadas" "Notificações" + "Histórico de notificações" "Resolução de problemas" "Corrigir notificações" diff --git a/features/preferences/impl/src/main/res/values-ur/translations.xml b/features/preferences/impl/src/main/res/values-ur/translations.xml new file mode 100644 index 0000000000..470763e877 --- /dev/null +++ b/features/preferences/impl/src/main/res/values-ur/translations.xml @@ -0,0 +1,58 @@ + + + "اس بات کو یقینی بنانے کے لیے کہ آپ کبھی بھی اہم مکالمہ سے محروم نہ ہوں، براہ کرم اپنی ترتیبات تبدیل کریں تاکہ آپ کا ہاتف مقفل ہونے پر مکمل پردۂ نمائش اطلاعات کی اجازت دی جا سکے۔" + "اپنے مکالمتی تجربے کو احسن کریں" + "اطلاعات موصول کرنے کا طریقہ چنیں۔" + "مطور وضع" + "مطورین کیلئے خصوصیات اور فعالیت تک رسائی حاصل کرنے کے لیے فعال کریں۔" + "حسب ضرورت ایلیمنٹ مکالمہ بنیادی عنوان" + "ایلیمنٹ مکالمہ کیلئے حسب ضرورت بنیادی عنوان ترتیب دیں" + "باطل عنوان، برائے مہربانی یقینی بنائیں کہ آپ دستور (http/https) اور صحیح پتہ شامل کریں۔" + "دھکا اطلاع فراہم کنندہ" + "مارک ڈاون کو دستی طور پر تحریر کرنے کے لیے امیر متن مدون کو غیر فعال کریں۔" + "پڑھنے کی رسیدیں" + "اگر بند کر دیا جائے تو، آپ کی پڑھنے کی رسیدیں کسی کو نہیں بھیجی جائیں گی۔ آپ اب بھی دوسرے صارفین سے پڑھنے کی رسیدیں وصول کریں گے۔" + "موجودگی کا اشتراک کریں" + "اگربند کیا، تو آپ پڑھنے کی رسیدیں یا تحریر کی اطلاعات ارسال یا وصول نہیں کر سکیں گے۔" + "جدول زمانی میں پیغام کا ماخذ دیکھنے کے لئے اختیار فعال کریں۔" + "آپ کے کوئی مسدود صارفین نہیں ہے۔" + "غیر مسدود کریں" + "آپ انکی جانب سے تمام پیغامات دوبارہ دیکھ سکیں گے۔" + "صارف کو غیر مسدود کریں" + "غیر مسدود کر رہا ہے…" + "نمائشی نام" + "آپکا نمائشی نام" + "ایک نامعلوم نقص کا سامنا کرنا پڑا اور معلومات کو تبدیل نہیں کیا جا سکا۔" + "نمایہ کی تجدید کرنے سے قاصر" + "نمایہ میں ترمیم کریں" + "نمایہ کی تجدید ہو رہی ہے…" + "اضافی ترتیبات" + "صوتی اور بصری مکالمات" + "تکوین کی عدم مطابقت" + "ہم نے اختیارات کو تلاش کرنا آسان بنانے کے لیے اطلاعات کی ترتیبات کو آسان بنایا ہے۔ آپ کی ماضی میں منتخب کردہ کچھ حسب ضرورت ترتیبات یہاں نہیں دکھائی گئی ہیں، لیکن وہ اب بھی فعال ہیں۔ + + اگر آپ آگے بڑھتے ہیں تو آپ کی کچھ ترتیبات تبدیل ہو سکتی ہیں۔" + "براہ راست گفتگوہا" + "فی گفتگو حسب ضرورت ترتیب" + "اطلاع کی ترتیب کی تجدید کرتے ہوئے ایک نقص واقع ہوا۔" + "تمام پیغامات" + "صرف تذکرے اور کلیدی الفاظ" + "براہ راست گفتگوہا پر، مجھے مطلع کریں برائے" + "گروہی گفتگوہا پر، مجھے مطلع کریں" + "اس آلے پر اطلاعات فعال کریں" + "تکوین کو درست نہیں کیا گیا ہے، برائے مہربانی دوبارہ کوشش کریں۔" + "گروہی گفتگوہا" + "دعوت نامے" + "آپ کا منزلی خادم مرموز کردہ کمروں میں اس اختیار کی حمایت نہیں کرت، ہوسکتا ہے کچھ کمروں میں آپ کو مطلع نہ کیا جائے۔" + "تذکرے" + "تمام" + "تذکرے" + "مجھے مطلع کریں برائے" + "مجھے @کمرہ پر مطلع کریں" + "اطلاعات موصول کرنے کے لئے، براہ کرم اپنا %1$s تبدیل کریں۔" + "نظام کی ترتیبات" + "نظام کی اطلاعات بند کر دی گئیں" + "اطلاعات" + "ازالہ کریں" + "اطلاعات کا ازالہ کریں" + diff --git a/features/preferences/impl/src/main/res/values-zh-rTW/translations.xml b/features/preferences/impl/src/main/res/values-zh-rTW/translations.xml index 4e4970c49c..52630e1c7b 100644 --- a/features/preferences/impl/src/main/res/values-zh-rTW/translations.xml +++ b/features/preferences/impl/src/main/res/values-zh-rTW/translations.xml @@ -63,6 +63,7 @@ "系統設定" "已關閉系統通知" "通知" + "推播通知歷史紀錄" "疑難排解" "疑難排解通知" diff --git a/features/rageshake/api/src/main/res/values-de/translations.xml b/features/rageshake/api/src/main/res/values-de/translations.xml index 46d2be277e..dbee250bfa 100644 --- a/features/rageshake/api/src/main/res/values-de/translations.xml +++ b/features/rageshake/api/src/main/res/values-de/translations.xml @@ -1,7 +1,7 @@ - "%1$s ist bei der letzten Nutzung abgestürzt. Möchtest du einen Absturzbericht mit uns teilen?" - "Du scheinst das Telefon aus Frustration zu schütteln. Möchtest du den Bildschirm für den Fehlerbericht öffnen?" + "%1$s ist bei der letzten Nutzung abgestürzt. Möchten Sie einen Absturzbericht mit uns teilen?" + "Sie scheinen das Telefon aus Frustration zu schütteln. Möchten Sie den Bildschirm für einen Fehlerbericht öffnen?" "Rageshake" "Erkennungsschwelle" diff --git a/features/rageshake/api/src/main/res/values-ur/translations.xml b/features/rageshake/api/src/main/res/values-ur/translations.xml new file mode 100644 index 0000000000..9532f4eb56 --- /dev/null +++ b/features/rageshake/api/src/main/res/values-ur/translations.xml @@ -0,0 +1,7 @@ + + + "%1$sآخری بار استعمال ہونے پر ٹکرا گیا۔ کیا آپ ہمارے ساتھ ٹکر کی گزارش (رپورٹ) کا اشتراک کرنا چاہیں گے؟" + "لگتا ہے آپ مایوسی میں ہاتف ہلا رہے ہیں۔ کیا آپ گزارش خطاء نمائش کھولنا چاہیں گے؟" + "غصے سے جھٹکانا" + "حد کھوج" + diff --git a/features/rageshake/impl/src/main/res/values-de/translations.xml b/features/rageshake/impl/src/main/res/values-de/translations.xml index 70f832e10a..5ad40c37d0 100644 --- a/features/rageshake/impl/src/main/res/values-de/translations.xml +++ b/features/rageshake/impl/src/main/res/values-de/translations.xml @@ -4,7 +4,7 @@ "Sie können mich kontaktieren, wenn Sie weitere Fragen haben." "Kontaktieren Sie mich" "Bildschirmfoto bearbeiten" - "Bitte beschreibe den Fehler. Was hast du getan? Was hast du erwartet, was passiert? Was ist tatsächlich passiert? Bitte gehe so detailliert wie möglich vor." + "Bitte beschreiben Sie das Problem. Was haben Sie getan? Was haben Sie erwartet, was passiert? Was ist tatsächlich passiert? Bitte geben Sie so viele Details wie möglich an." "Beschreibe den Fehler…" "Wenn möglich, verfasse die Beschreibung bitte auf Englisch." "Die Beschreibung ist zu kurz. Bitte geben Sie weitere Informationen darüber an, was passiert ist." @@ -12,6 +12,6 @@ "Logdateien mitsenden" "Bildschirmfoto senden" "Die Protokolle werden deiner Nachricht beigefügt, um sicherzustellen, dass alles ordnungsgemäß funktioniert. Um deine Nachricht ohne Protokolle zu senden, deaktiviere diese Einstellung." - "%1$s ist bei der letzten Nutzung abgestürzt. Möchtest du einen Absturzbericht mit uns teilen?" + "%1$s ist bei der letzten Nutzung abgestürzt. Möchten Sie einen Absturzbericht mit uns teilen?" "Logs ansehen" diff --git a/features/rageshake/impl/src/main/res/values-ur/translations.xml b/features/rageshake/impl/src/main/res/values-ur/translations.xml new file mode 100644 index 0000000000..695c4ec64f --- /dev/null +++ b/features/rageshake/impl/src/main/res/values-ur/translations.xml @@ -0,0 +1,17 @@ + + + "پردۂ عکس منسلک کریں" + "اگر آپ کے پاس کوئی متابعہ سوالات ہیں، تو آپ مجھ سے رابطہ کر سکتے ہیں۔" + "مجھ سے رابطہ کریں" + "پردۂ عکس میں ترمیم کریں" + "براہ کرم مسئلہ بیان کریں۔ آپ نے کیا کیا؟ آپ کو کیا ہونے کی امید تھی؟ اصل میں کیا ہوا۔ براہ کرم جتنا ہو سکے اس کی تفصیل میں جائیں۔" + "مسئلہ بیان کریں…" + "اگر ممکن ہو تو، برائے مہربانی بیان انگریزی میں لکھیں۔" + "تفصیل بہت مختصر ہے، براہ کرم مزید تفصیلات فراہم کریں کہ کیا ہوا۔ شکریہ!" + "ٹکر کے نوشتے بھیجیں" + "نوشتہجات کی اجازت دیں۔" + "پردۂ عکس بھیجیں" + "نوشتہ جات آپکے پیغام کیساتھ شامل کیے جائینگے تاکہ یقینی بنایا جا سکے کہ سب کچھ ٹھیک سے کام کر رہا ہے۔ بغیر نوشتہ جات کے اپنا پیغام بھیجنے کے لیے، اس ترتیب کو بند کریں۔" + "%1$sآخری بار استعمال ہونے پر ٹکرا گیا۔ کیا آپ ہمارے ساتھ ٹکر کی گزارش (رپورٹ) کا اشتراک کرنا چاہیں گے؟" + "نوشتہ جات ملحوظ کریں" + diff --git a/features/reportroom/impl/src/main/res/values-pt-rBR/translations.xml b/features/reportroom/impl/src/main/res/values-pt-rBR/translations.xml new file mode 100644 index 0000000000..53f19677ef --- /dev/null +++ b/features/reportroom/impl/src/main/res/values-pt-rBR/translations.xml @@ -0,0 +1,8 @@ + + + "Sua denúncia foi enviada com sucesso, mas encontramos um problema ao tentar sair da sala. Por favor, tente novamente." + "Não foi possível deixar a sala" + "Denuncie esta sala ao seu administrador. Se as mensagens estiverem criptografadas, seu administrador não poderá lê-las." + "Descreva o motivo para denunciar…" + "Denunciar sala" + diff --git a/features/reportroom/impl/src/main/res/values-pt/translations.xml b/features/reportroom/impl/src/main/res/values-pt/translations.xml new file mode 100644 index 0000000000..f83626a9e4 --- /dev/null +++ b/features/reportroom/impl/src/main/res/values-pt/translations.xml @@ -0,0 +1,8 @@ + + + "O teu relatório foi submetido com sucesso, mas houve um problema ao tentar sair da sala. Por favor, tenta novamente." + "Não foi possível sair da sala" + "Denuncia esta sala aos administradores. Se as mensagens estiverem cifradas, os administradores não as poderão ler." + "Descrever a razão de denúncia…" + "Denunciar sala" + diff --git a/features/reportroom/impl/src/main/res/values-zh-rTW/translations.xml b/features/reportroom/impl/src/main/res/values-zh-rTW/translations.xml index fa63e0fb1d..1118a72c97 100644 --- a/features/reportroom/impl/src/main/res/values-zh-rTW/translations.xml +++ b/features/reportroom/impl/src/main/res/values-zh-rTW/translations.xml @@ -3,5 +3,6 @@ "您的回報已成功遞交,但我們嘗試離開聊天室時遇到了問題。請再試一次。" "無法離開聊天室" "將此聊天室回報給您的管理員。若訊息已加密,您的管理員將無法讀取它們。" + "說明回報的原因……" "回報聊天室" diff --git a/features/roomaliasresolver/impl/src/main/res/values-pt-rBR/translations.xml b/features/roomaliasresolver/impl/src/main/res/values-pt-rBR/translations.xml new file mode 100644 index 0000000000..461fb64f7c --- /dev/null +++ b/features/roomaliasresolver/impl/src/main/res/values-pt-rBR/translations.xml @@ -0,0 +1,5 @@ + + + "Não foi possível exibir a visualização desta sala" + "Falha ao descobrir o alias da sala." + diff --git a/features/roomaliasresolver/impl/src/main/res/values-ur/translations.xml b/features/roomaliasresolver/impl/src/main/res/values-ur/translations.xml new file mode 100644 index 0000000000..c415adca83 --- /dev/null +++ b/features/roomaliasresolver/impl/src/main/res/values-ur/translations.xml @@ -0,0 +1,4 @@ + + + "کمرے کے عرف کو حل کرنے میں ناکام۔" + diff --git a/features/roomdetails/impl/src/main/res/values-cy/translations.xml b/features/roomdetails/impl/src/main/res/values-cy/translations.xml index 9ffd9a793b..ab0a8fa95d 100644 --- a/features/roomdetails/impl/src/main/res/values-cy/translations.xml +++ b/features/roomdetails/impl/src/main/res/values-cy/translations.xml @@ -67,6 +67,14 @@ "Pwnc" "Wrthi\'n diweddaru ystafell…" "Nid oes unrhyw ddefnyddwyr gwaharddedig yn yr ystafell hon." + + "%1$d personau" + "%1$d person" + "%1$d berson" + "%1$d person" + "%1$d pherson" + "%1$d person" + "Gwahardd o ystafell" "Dileu aelod yn unig" "Adfer" diff --git a/features/roomdetails/impl/src/main/res/values-de/translations.xml b/features/roomdetails/impl/src/main/res/values-de/translations.xml index cc4db8162f..96c8b910fa 100644 --- a/features/roomdetails/impl/src/main/res/values-de/translations.xml +++ b/features/roomdetails/impl/src/main/res/values-de/translations.xml @@ -43,12 +43,12 @@ "Raum bearbeiten" "Es ist ein unbekannter Fehler aufgetreten und die Informationen konnten nicht geändert werden." "Raum kann nicht aktualisiert werden" - "Nachrichten und Anrufe sind Ende-zu-Ende verschlüsselt. Nur du und die Empfänger haben die eindeutigen Schlüssel, um sie zu entsperren." + "Nachrichten und Anrufe sind verschlüsselt. Nur Sie und die Empfänger haben die Schlüssel, um sie zu entsperren." "Nachrichtenverschlüsselung aktiviert" "Beim Laden der Benachrichtigungseinstellungen ist ein Fehler aufgetreten." "Die Stummschaltung ist fehlgeschlagen, bitte versuche es erneut." "Die Deaktivierung der Stummschaltung ist fehlgeschlagen, bitte versuche es erneut." - "Personen einladen" + "Nutzer einladen" "Unterhaltung verlassen" "Verlassen" "Medien und Dateien" @@ -84,15 +84,15 @@ "Mitglieder" "%1$s wird entsperrt." "Benutzerdefinierte Einstellungen verwenden" - "Wenn du diese Option aktivierst, wird deine Standardeinstellung außer Kraft gesetzt." + "Dies wird ihre Standardeinstellungen außer Kraft setzen." "Benachrichtige mich in diesem Chat bei" "Zum Anpassen der Standardeinstellungen gehe zu: %1$s" "Globale Einstellungen" "Standardeinstellung" "Benutzerdefinierte Einstellung entfernen" "Beim Laden der Benachrichtigungseinstellungen ist ein Fehler aufgetreten." - "Fehler beim Wiederherstellen des Standardmodus. Bitte versuche es erneut." - "Fehler beim Einstellen des Modus. Bitte versuche es erneut." + "Fehler beim Wiederherstellen des Standardmodus. Bitte erneut versuchen." + "Fehler beim Einstellen des Modus. Bitte erneut versuchen." "Dein Homeserver unterstützt diese Option in verschlüsselten Chats nicht. Du wirst in diesem Chat nicht benachrichtigt." "Alle Nachrichten" "Nur Erwähnungen und Schlüsselwörter" diff --git a/features/roomdetails/impl/src/main/res/values-pt-rBR/translations.xml b/features/roomdetails/impl/src/main/res/values-pt-rBR/translations.xml index 47702d4a80..5561005e9b 100644 --- a/features/roomdetails/impl/src/main/res/values-pt-rBR/translations.xml +++ b/features/roomdetails/impl/src/main/res/values-pt-rBR/translations.xml @@ -1,5 +1,7 @@ + "Você precisará de um endereço de sala para torná-lo visível no diretório." + "Endereço da sala" "Ocorreu um erro ao atualizar a configuração de notificação." "Seu servidor doméstico não suporta esta opção em salas criptografadas. Você pode não ser notificado em algumas salas." "Enquetes" @@ -23,6 +25,9 @@ "Reduzir privilégio" "Você não poderá desfazer essa alteração, pois estará se rebaixando. Se você for o último usuário privilegiado na sala, será impossível recuperar os privilégios." "Reduzir seu próprio privilégio?" + "%1$s (Pendente)" + "(Pendente)" + "Os administradores têm privilégios de moderador automaticamente" "Editar moderadores" "Administradores" "Moderadores" @@ -32,6 +37,9 @@ "Adicionar tópico" "Já é membro" "Já foi convidado" + "Criptografado" + "Não criptografado" + "Sala pública" "Editar sala" "Ocorreu um erro desconhecido e as informações não puderam ser alteradas." "Não foi possível atualizar a sala" @@ -43,13 +51,19 @@ "Convidar pessoas" "Sair da conversa" "Sair da sala" + "Mídia e arquivos" "Personalizado" "Padrão" "Notificações" + "Mensagens fixadas" + "Perfil" + "Solicitações para entrar" "Cargos e permissões" "Nome da sala" + "Segurança e privacidade" "Segurança" "Compartilhar sala" + "Informação da sala" "Tópico" "Atualizando a sala…" "Não há usuários banidos nesta sala." @@ -85,13 +99,49 @@ "Nesta sala, notifique-me para" "Administradores" "Alterar meu cargo" + "Rebaixar para membro" + "Rebaixar para moderador" "Moderação de membros" "Mensagens e conteúdo" "Moderadores" "Permissões" "Redefinir permissões" + "Depois de redefinir as permissões, você perderá as configurações atuais." "Redefinir permissões?" "Cargos" "Detalhes da sala" "Cargos e permissões" + "Adicionar endereço da sala" + "Qualquer pessoa pode pedir para entrar na sala, mas um administrador ou moderador terá que aceitar a solicitação." + "Pedir para entrar" + "Sim, habilite a criptografia" + "Uma vez ativada, a criptografia de uma sala não pode ser desativada. O histórico de mensagens só será visível para os membros da sala desde que foram convidados ou desde que entraram na sala. +Ninguém além dos membros da sala poderá ler as mensagens. Isso pode impedir que os bots e as pontes funcionem corretamente. +Não recomendamos que você ative a criptografia para salas que qualquer pessoa possa encontrar e participar." + "Ativar criptografia?" + "Uma vez ativada, a criptografia não poderá ser desativada." + "Criptografia" + "Ativar a criptografia de ponta a ponta" + "Qualquer um pode encontrar e aderir" + "Qualquer pessoa" + "As pessoas só podem participar se forem convidadas" + "Somente para convidados" + "Acesso à sala" + "No momento, não há compatibilidade com espaços" + "Membros do espaço" + "Você precisará de um endereço de sala para torná-lo visível no diretório de salas." + "Endereço da sala" + "Permitir que esta sala seja encontrada pesquisando diretório de salas públicas de %1$s" + "Visível no diretório de salas públicas" + "Qualquer pessoa" + "Quem pode ler o histórico" + "Somente membros, desde que foram convidados" + "Somente para membros após selecionar esta opção" + "Os endereços das salas são formas de encontrar e acessar as salas. Isso também garante que você possa compartilhar facilmente sua sala com outras pessoas. +Você pode optar por publicar sua sala no diretório público de salas do seu servidor doméstico." + "Publicação em sala" + "Os endereços das salas são formas de encontrar e acessar as salas. Isso também garante que você possa compartilhar facilmente sua sala com outras pessoas. +O endereço também é necessário para que você possa ver a sala no diretório público de salas do site %1$s." + "Visibilidade da sala" + "Segurança e privacidade" diff --git a/features/roomdetails/impl/src/main/res/values-ur/translations.xml b/features/roomdetails/impl/src/main/res/values-ur/translations.xml new file mode 100644 index 0000000000..00c90107ac --- /dev/null +++ b/features/roomdetails/impl/src/main/res/values-ur/translations.xml @@ -0,0 +1,108 @@ + + + "اطلاع کی ترتیب کی تجدید کرتے ہوئے ایک نقص واقع ہوا۔" + "آپ کا منزلی خادم مرموز کردہ کمروں میں اس اختیار کی حمایت نہیں کرت، ہوسکتا ہے کچھ کمروں میں آپ کو مطلع نہ کیا جائے۔" + "رائے شماری ہا" + "صرف منتظمین" + "لوگوں کو محظور کریں" + "پیغامات ہٹائیں" + "ہر کوئی" + "لوگوں کو مدعو کریں اور شمولیت کی درخواستیں قبول کریں" + "ارکان کا اعتدال" + "پیغامات اور مواد" + "منتظمین اور ناظمین" + "لوگوں کو ہٹا دیں اور شمولیت کی درخواستیں مسترد کریں" + "کمرے کا اوتار بدلیں" + "کمرے کی تفصیلات" + "کمرے کا نام بدلیں" + "کمرے کا موضوع بدلیں" + "پیغامات بھیجیں" + "منتظمین میں ترمیم کریں" + "آپ اس کارروائی کو کالعدم نہیں کرسکیں گے۔ آپ صارف کو اپنی جیسی طاقت کی سطح رکھنے کے لئے فروغ دے رہے ہیں۔" + "منتظم شمال کریں؟" + "تنزل کریں" + "آپ اس تبدیلی کو کالعدم نہیں کرسکیں گے کیونکہ آپ اپنے آپ کو تنزل کر رہے ہیں، اگر آپ کمرے میں آخری مراعات یافتہ صارف ہیں تو مراعات پھر حاصل کرنا ناممکن ہو جائے گا۔" + "اپنے آپ کو تنزل کریں؟" + "%1$s (زیر التواء)" + "(زیر التواء)" + "منتظمین کے پاس خودکاراً ناظمین مراعات ہوتی ہیں" + "ناظمین میں ترمیم کریں" + "منتظمین" + "ناظمین" + "اراکین" + "آپکے پاس غیر محفوظ تبدیلیاں ہیں" + "تبدیلیاں محفوظ کریں؟" + "موضوع شامل کریں" + "پہلے سے ہی رکن" + "پہلے سے مدعو شدہ" + "مرموز کردہ" + "رموز کردہ نہیں" + "عوامی کمرہ" + "کمرے میں ترمیم کریں" + "ایک نامعلوم خلل تھا اور معلومات تبدیل نہیں ہوسکی۔" + "کمرے کی تجدید کرنے سے قاصر" + "پیغامات قفلوں کے ساتھ محفوظ ہیں۔ ان کو غیر مقفل کرنے کے لیے صرف آپ اور وصول کنندگان کے پاس منفرد چابیاں ہیں۔" + "پیغام کی مرموزکاری فعال ہے۔" + "اطلاع کی ترتیبات لادتے ہوئے ایک نقص واقع ہوا۔" + "اس کمرے کو خاموش کرنے میں ناکام، برائے مہربانی دوبارہ کوشش کریں۔" + "اس کمرے کو غیر خاموش کرنے میں ناکام، برائے مہربانی دوبارہ کوشش کریں۔" + "لوگوں کو مدعو کریں" + "گفتگو چھوڑیں" + "کمرہ چھوڑ دیں" + "حسب ضرورت" + "طے شدہ" + "اطلاعات" + "مثبوتہ پیغامات" + "کردارہا اور اجازتیں" + "کمرے کا نام" + "حفاظت" + "کمرے کا اشتراک کریں" + "کمرے کی معلومات" + "موضوع" + "کمرے کی تجدید کر رہا ہے…" + "اس کمرے میں کوئی محظور صارفین نہیں ہیں۔" + + "%1$d شخص" + "%1$d اشخاص" + + "کمرے سے محظور کریں" + "رکن کو صرف ہٹائیں" + "غیر محظور کریں" + "اگر وہ مدعو کیا جائیں تو وہ دوبارہ اس کمرے میں شامل ہوسکیں گے۔" + "صارف کو غیر محظور کریں" + "محظور" + "اراکین" + "زیر التواء" + "منتظم" + "ناظم" + "کمرے کے ارکان" + "%1$s کو غیر محظور کر رہا ہے" + "حسب ضرورت ترتیب کی اجازت دیں" + "اسے چالو کرنے سے آپکی متعینہ ترتیبات تجاوز گی جائیں گی" + "اس گفتگو میں مجھے مطلع کریں برائے" + "آپ اسے اپنے %1$s میں بدل سکتے ہیں۔" + "عالمی ترتیبات" + "متعین ترتیب" + "حسب ضرورت ترتیب کو ہٹائیں" + "اطلاع کی ترتیبات لادتے ہوئے ایک نقص واقع ہوا۔" + "متعین وضع کو بحال کرنے میں ناکام، برائے مہربانی دوبارہ کوشش کریں۔" + "وضع ترتیب دینے میں ناکام، برائے مہربانی دوبارہ کوشش کریں۔" + "آپ کا منزلی خادم مرموز کردہ کمروں میں اس اختیار کی حمایت نہیں کرتا ہے، آپ کو اس کمرے میں مطلع کیا جائے گا۔" + "تمام پیغامات" + "صرف تذکرے اور کلیدی الفاظ" + "اس کمرے میں، مجھے مطلع کریں برائے" + "منتظمین" + "میرا کردار تبدیل کریں" + "تا رکن تنزلی کریں" + "تا ناظم تنزلی کریں" + "ارکان کا اعتدال" + "پیغامات اور مواد" + "ناظمین" + "اجازتیں" + "اجازتیں بحال کریں" + "ایک بار جب آپ اجازتیں بحال کردیں گے، آپ موجودہ ترتیبات کھو دیں گے۔" + "اجازتیں بحال کریں؟" + "کردارہا" + "کمرے کی تفصیلات" + "کردارہا اور اجازتیں" + diff --git a/features/roomdirectory/impl/src/main/res/values-pt-rBR/translations.xml b/features/roomdirectory/impl/src/main/res/values-pt-rBR/translations.xml index 07bbad975f..ab2e51a531 100644 --- a/features/roomdirectory/impl/src/main/res/values-pt-rBR/translations.xml +++ b/features/roomdirectory/impl/src/main/res/values-pt-rBR/translations.xml @@ -1,4 +1,5 @@ + "Falha no carregamento" "Diretório de salas" diff --git a/features/roomdirectory/impl/src/main/res/values-ur/translations.xml b/features/roomdirectory/impl/src/main/res/values-ur/translations.xml new file mode 100644 index 0000000000..a6b7a127f1 --- /dev/null +++ b/features/roomdirectory/impl/src/main/res/values-ur/translations.xml @@ -0,0 +1,5 @@ + + + "لادنا ناکام" + "کمرے کا راہنامچہ" + diff --git a/features/roomlist/impl/src/main/res/values-de/translations.xml b/features/roomlist/impl/src/main/res/values-de/translations.xml index 80df9fb500..4e7a4ad288 100644 --- a/features/roomlist/impl/src/main/res/values-de/translations.xml +++ b/features/roomlist/impl/src/main/res/values-de/translations.xml @@ -9,9 +9,9 @@ "Ihr Schlüsselspeicher ist nicht synchronisiert" "Damit du keinen wichtigen Anruf verpasst, ändere bitte deine Einstellungen so, dass du bei gesperrtem Telefon Benachrichtigungen im Vollbildmodus erhältst." "Verbessere dein Anruferlebnis" - "Möchtest du die Einladung zum Betreten von %1$s wirklich ablehnen?" + "Möchten Sie die Einladung zum Betreten von %1$s wirklich ablehnen?" "Einladung ablehnen" - "Bist du sicher, dass du diese Direktnachricht von %1$s ablehnen möchtest?" + "Möchten Sie diesen privaten Chat mit %1$s wirklich ablehnen?" "Einladung ablehnen" "Keine Einladungen" "%1$s (%2$s) hat dich eingeladen" @@ -19,7 +19,7 @@ "Dies ist ein einmaliger Vorgang, danke fürs Warten." "Dein Konto wird eingerichtet." "Eine Unterthaltung oder Raum erstellen" - "Beginne, indem du jemandem eine Nachricht sendest." + "Beginnen Sie, indem Sie jemandem eine Nachricht senden." "Noch keine Chats." "Favoriten" "In den Chat-Einstellungen kannst du einen Chat als Favorit hinzufügen. @@ -40,6 +40,6 @@ Du hast keine ungelesenen Nachrichten!" "Chats" "Als gelesen markieren" "Als ungelesen markieren" - "Es sieht aus, als würdest du ein neues Gerät verwenden. Verifiziere es mit einem anderen Gerät, damit du auf deine verschlüsselten Nachrichten zugreifen kannst." - "Bestätige deine Identität" + "Sie verwenden anscheinend ein neues Gerät. Verifizieren Sie es mit einem anderen Gerät, um Zugriff auf ihre verschlüsselten Nachrichten zu erhalten." + "Bestätigen Sie ihre Identität" diff --git a/features/roomlist/impl/src/main/res/values-pt-rBR/translations.xml b/features/roomlist/impl/src/main/res/values-pt-rBR/translations.xml index e7fa45e779..00a47154c2 100644 --- a/features/roomlist/impl/src/main/res/values-pt-rBR/translations.xml +++ b/features/roomlist/impl/src/main/res/values-pt-rBR/translations.xml @@ -1,15 +1,21 @@ + "Recupere sua identidade criptográfica e o histórico de mensagens com uma chave de recuperação se você tiver perdido todos os dispositivos existentes." "Configurar a recuperação" + "Configure a recuperação para proteger sua conta" "Confirme sua chave de recuperação para manter o acesso ao seu armazenamento de chaves e histórico de mensagens." + "Digite sua chave de recuperação" "Esqueceu sua chave de recuperação?" "Seu armazenamento de chaves está fora de sincronia" + "Para garantir que você nunca perca uma chamada importante, por favor altere as suas configurações para permitir notificações em tela cheia enquanto o seu celular estiver bloqueado." + "Melhore a sua experiência de chamadas" "Tem certeza de que deseja recusar o convite para ingressar em %1$s?" "Recusar convite" "Tem certeza de que deseja recusar esse chat privado com %1$s?" "Recusar chat" "Sem convites" "%1$s(%2$s) convidou você" + "Pedido de adesão enviado" "Este é um processo único, obrigado por esperar." "Configurando sua conta." "Criar uma nova conversa ou sala" @@ -20,6 +26,7 @@ Por enquanto, você pode desmarcar os filtros para ver seus outros bate-papos" "Você não tem nenhuma conversa favorita ainda" "Convites" + "Você não tem nenhum convite pendente." "Baixa prioridade" "Você pode desmarcar filtros para ver suas outras conversas" "Você não tem conversas para esta seleção" diff --git a/features/roomlist/impl/src/main/res/values-ur/translations.xml b/features/roomlist/impl/src/main/res/values-ur/translations.xml new file mode 100644 index 0000000000..7a0fd3acb6 --- /dev/null +++ b/features/roomlist/impl/src/main/res/values-ur/translations.xml @@ -0,0 +1,40 @@ + + + "بازیابی مرتب کریں" + "اپنے کلید کے ذخیرہ اور پیغام کی سرگزشت تک رسائی کو برقرار رکھنے کیلئے اپنی بازیابی کلید کی تصدیق کریں۔" + "آپ کا کلید کا ذخیرہ غیر ہم وقت ساز ہے۔" + "اس بات کو یقینی بنانے کے لیے کہ آپ کبھی بھی اہم مکالمہ سے محروم نہ ہوں، براہ کرم اپنی ترتیبات تبدیل کریں تاکہ آپ کا ہاتف مقفل ہونے پر مکمل پردۂ نمائش اطلاعات کی اجازت دی جا سکے۔" + "اپنے مکالمتی تجربے کو احسن کریں" + "کیا آپکو یقین ہے کہ آپ %1$s میں شامل ہونے کی درخواست مسترد کرنا چاہتے ہیں؟" + "دعوت مسترد کریں" + "کیا آپکو یقین ہے کہ آپ %1$s کیساتھ نجی گفتگو مسترد کرنا چاہتے ہیں؟" + "گفتگو مسترد کریں" + "کوئی دعوت نامے نہیں" + "%1$s (%2$s) نے آپ کو مدعو کیا" + "یہ ایک بار کا عمل ہے، انتظار کرنے کا شکریہ۔" + "آپکا کھاتہ مرتب کر رہا ہے" + "ایک نئی گفتگو یا کمرہ تخلیق کریں" + "کسی کو پیغام بھیج کر شروع کریں۔" + "ابھی تک کوئی گفتگوئیں نہیں ہیں۔" + "پسندیدگان" + "آپ گفتگو کی ترتیبات میں اپنے پسندیدہ میں گفتگو شامل کر سکتے ہیں۔ + ابھی کے لیے، آپ اپنی دوسری گفتگوئیں دیکھنے کے لیے مرشحات کو غیر منتخب کر سکتے ہیں۔" + "آپ کے پاس ابھی تک پسندیدہ گفتگوئیں نہیں ہیں" + "دعوت نامے" + "آپ کے پاس کوئی زیر التوا دعوتیں نہیں ہیں۔" + "کم ترجیحی" + "آپ اپنی دیگر گفتگئہں دیکھنے کیلئے مرشحات کو غیر منتخب کرسکتے ہیں" + "آپ کے پاس اس انتخاب کے لیے گفتگو ئیں نہیں ہیں۔" + "لوگ" + "آپ کے پاس ابھی تک کوئی براہ راست پیغامات نہیں ہے۔" + "کمرے" + "آپ ابھی تک کسی کمرے میں نہیں ہیں" + "غیر مقروءہ" + "مبارک ہو! +آپ کے پاس کوئی غیر مقروءہ پیغامات نہیں!" + "گفتگوئیں" + "بطور مقروءہ نشانزد کریں" + "بطور غیر مقروءہ نشانزد کریں" + "ایسا لگتا ہے کہ آپ ایک نیا آلہ استعمال کر رہے ہیں۔ اپنے مرموزکردہ پیغامات تک رسائی کیلئے کسی دوسرے آلے سے توثیق کریں۔" + "تصدیق کریں کہ آپ ہی ہیں" + diff --git a/features/securebackup/impl/src/main/res/values-pt-rBR/translations.xml b/features/securebackup/impl/src/main/res/values-pt-rBR/translations.xml index 9946b453f6..524db97094 100644 --- a/features/securebackup/impl/src/main/res/values-pt-rBR/translations.xml +++ b/features/securebackup/impl/src/main/res/values-pt-rBR/translations.xml @@ -4,11 +4,28 @@ "Ativar o backup" "Armazene sua identidade criptográfica e chaves de mensagem com segurança no servidor. Isso permitirá que você visualize seu histórico de mensagens em quaisquer novos dispositivos.%1$s." "Armazenamento de chaves" + "O armazenamento de chaves deve ser ativado para configurar a recuperação." + "Carregar chaves a partir deste dispositivo" + "Permita o armazenamento de chaves" "Alterar chave de recuperação" + "Recupere sua identidade criptográfica e o histórico de mensagens com uma chave de recuperação, caso você tenha perdido todos os dispositivos existentes." "Insira a chave de recuperação" "Seu armazenamento de chaves está fora de sincronia no momento." "Configurar a recuperação" "Tenha acesso às suas mensagens criptografadas se você perder todos os seus dispositivos ou for desconectado do %1$s em qualquer lugar." + "Abrir %1$s em um dispositivo desktop" + "Inicie sessão na sua conta novamente" + "Quando solicitado a verificar seu dispositivo, selecione %1$s" + "\"Redefinir tudo\"" + "Siga as instruções para criar uma nova chave de recuperação" + "Salve sua nova chave de recuperação em um gerenciador de senhas ou em uma nota criptografada" + "Redefinir a criptografia da sua conta usando outro dispositivo" + "Continuar redefinindo" + "Os detalhes da sua conta, contatos, preferências e lista de bate-papo serão mantidos" + "Você perderá qualquer histórico de mensagens armazenado somente no servidor" + "Você precisará verificar todos os seus dispositivos e contatos existentes novamente." + "Redefina sua identidade somente se você não tiver acesso a outro dispositivo conectado e se tiver perdido sua chave de recuperação." + "Não consegue confirmar? Você precisará redefinir sua identidade." "Desligar" "Você perderá suas mensagens criptografadas se estiver desconectado de todos os dispositivos." "Tem certeza de que deseja desativar o backup?" @@ -21,6 +38,7 @@ "Não compartilhe isso com ninguém!" "Chave de recuperação alterada" "Alterar chave de recuperação?" + "Crie uma nova chave de recuperação" "Certifique-se de que ninguém possa ver essa tela!" "Tente novamente para confirmar o acesso ao seu armazenamento de chaves." "Chave de recuperação incorreta" @@ -28,6 +46,7 @@ "Inserir…" "Perdeu sua chave de recuperação?" "Chave de recuperação confirmada" + "Digite sua chave de recuperação" "Chave de recuperação copiada" "Gerando…" "Salvar chave de recuperação" @@ -41,5 +60,11 @@ "Não compartilhe isso com ninguém!" "Configuração de recuperação bem-sucedida" "Configurar a recuperação" + "Sim, redefinir agora" + "Esse processo é irreversível." + "Você tem certeza de que deseja redefinir sua identidade?" + "Ocorreu um erro desconhecido. Verifique se a senha da sua conta está correta e tente novamente." "Inserir…" + "Confirme que você deseja redefinir sua identidade." + "Digite a senha de sua conta para continuar" diff --git a/features/securebackup/impl/src/main/res/values-ur/translations.xml b/features/securebackup/impl/src/main/res/values-ur/translations.xml new file mode 100644 index 0000000000..80b55d8878 --- /dev/null +++ b/features/securebackup/impl/src/main/res/values-ur/translations.xml @@ -0,0 +1,63 @@ + + + "کلید کا ذخیرہ حذف کریں" + "پشتارہ چالو کریں" + "خادم پر اپنی تشفیری شناخت اور پیغام کی کلیدیں محفوظ طریقے سے ذخیرہ کریں۔ اس سے آپ کسی بھی نئے آلات پر اپنے پیغام کی سرگزشت دیکھ سکیں گے۔ %1$s۔" + "کلید ذخیرہ" + "بازیابی کی کلید تبدیل کریں" + "بازیابی کلید درج کریں" + "آپ کا کلیدی ذخیرہ فی الحال غیر ہم وقت ساز ہے۔" + "بازیابی مرتب کریں" + "اگر آپ اپنے تمام آلات کھو دیتے ہیں یا ہر جگہ %1$s سے خارج ہیں تو اپنے مرموز کردہ پیغامات تک رسائی حاصل کریں۔" + "%1$s کو برمیز آلے میں کھولیں" + "اپنے کھاتہ میں چوبارہ داخل ہوں" + "جب اپنے آلے کی توثیق کا کہا جائے، %1$s منتخب کریں" + "”تمام بحال کریں“" + "نئی بازیابی کلید بنانے کیلئے ہدایات پر عمل کریں" + "اپنی نئی بازیابی کلید کو لفظ عبور منتظم یا مرکوز کردہ ملحوظہ میں محفوظ کریں" + "کسی دوسرے آلے کا استعمال کرتے ہوئے اپنے کھاتہ کیلئے مرموز کاری کو بحال کریں" + "آپ کے کھاتہ کی تفصیلات، رابطے، ترجیحات اور گفتگو کی فہرست رکھی جائے گی۔" + "آپ کسی بھی پیغام کی سرگزشت کو کھو دیں گے جو صرف خادم پر محفوظ ہے۔" + "آپ کو اپنے تمام موجودہ آلات اور رابطوں کی دوبارہ توثیق کرنی ہوگی۔" + "اپنی شناخت صرف اس صورت میں بحال کر دیں جب آپ کو کسی دوسرے دخول کردہ آلے تک رسائی حاصل نہ ہو اور آپ اپنی بازیابی کلید کھو چکے ہوں۔" + "تصدیق نہیں کر سکتے؟ آپ کو اپنی شناخت بحال کر دینے کی ضرورت ہوگی۔" + "بند کریں" + "آپ اپنے مرموز کردہ پیغامات کھو جائیں گے اگر آپ تمام آلات سے خارج ہو جائیں۔" + "کیا آپ کو یقین ہے کہ آپ بپشتارہ بند کرنا چاہتے ہیں؟" + "کلید کے ذخیرہ کو حذف کرنے سے خادم سے آپ کی تشفیری شناخت اور پیغام کی کلیدیں ہٹ جائیں گی اور درج ذیل حفاظتی خصوصیات بند ہو جائیں گی:" + "آپکے پاس نئے آلات پر مرموز کردہ پیغامات کی سرگزشت نہیں ہوگی" + "اگر آپ ہر جگہ %1$s سے خارج ہیں تو آپ اپنے مرموز کردہ پیغامات تک رسائی کھو دیں گے۔" + "کیا آپ کو یقین ہے کہ آپ جلد کے ذخیرہ کو بند کرنا اور اسے حذف کرنا چاہتے ہیں؟" + "اگر آپ نے اپنی موجودہ کھو دی ہے تو نئی بازیابی کلید حاصل کریں۔ اپنی بازیابی کلید کو تبدیل کرنے کے بعد، آپ کی پرانی اب کام نہیں کرے گی۔" + "نئی بازیابی کلید تولید کریں" + "کسی کے ساتھ اس کا اشتراک نہ کریں!" + "بازیابی کلید بدل دی" + "بازیابی کلید بدلیں؟" + "نئی بازیابی کلید تخلیق کریں" + "یقینی بنائیں کہ کوئی بھی اس صفحۂ نمائش کو نہیں دیکھ سکتا!" + "برائے مہربانی اپنے کلید کے ذخیرے تک رسائی کی تصدیق کرنے کے لیے دوبارہ کوشش کریں۔" + "غلط بازیابی کلید" + "اگر آپ کے پاس حفاظتی کلید یا حفاظتی فقرہ ہے، یہ بھی کام کرے گا۔" + "درج کریں…" + "اپنی بازیابی کلید کھو دی؟" + "بازیابی کلید کی تصدیق ہوگئی" + "بازیابی کلید نقل شدہ" + "تولید کر رہ ہے…" + "بازیابی کلید محفوظ کریں" + "اس بازیابی کی کلید کو کہیں محفوظ جگہ لکھیں ، جیسے لفظ عبور منتظم، مرموز کردہ ملحوظہ، یا جسمانی سیف۔" + "ریکوری کلید نقل کرنے کے لیے تھپتھپائیں۔" + "اپنی بازیابی کلید کو محفوظ جگہ پر محفوظ کریں" + "اس مرحلے کے بعد آپ اپنی نئی بازیابی کلید تک رسائی حاصل نہیں کرسکیں گے۔" + "کیا آپ نے اپنی بازیابی کی کلید محفوظ کی ہے؟" + "آپ کا کلید کا ذخیرہ بازیابی کلید کے ذریعہ محفوظ ہے۔ اگر آپ کو مرتب کرنے کے بعد ایک نئی بازیابی کلید کی ضرورت ہے تو ، آپ \'بازیابی کلید بدلیں\' منتخب کرکے اسے دوبارہ تخلیق کرسکتے ہیں۔" + "اپنی بازیابی کلید تولید کریں" + "کسی کے ساتھ اس کا اشتراک نہ کریں!" + "ریکوری مرتب کامیاب" + "بازیابی مرتب کریں" + "ہاں، اب بحال کر دیں" + "یہ عملیہ ناقابل تلافی ہے۔" + "کیا آپ کو یقین ہے کہ آپ اپنی شناخت بحال کر دینا چاہتے ہیں؟" + "درج کریں…" + "تصدیق کریں کہ آپ اپنی شناخت بحال کر دینا چاہتے ہیں۔" + "جاری رکھنے کے لیے اپنے کھاتہ کا لفظ عبور درج کریں۔" + diff --git a/features/signedout/impl/src/main/res/values-ur/translations.xml b/features/signedout/impl/src/main/res/values-ur/translations.xml new file mode 100644 index 0000000000..3227c69f23 --- /dev/null +++ b/features/signedout/impl/src/main/res/values-ur/translations.xml @@ -0,0 +1,8 @@ + + + "آپ نے دوسرے جلسے میں اپنا لفظِ عبور تبدیل کر لیا ہے" + "آپ نے جلسہ کو دوسرے جلسے سے حذف کر دیا ہے" + "آپ کے خادم کے منتظم نے آپکی رسائی کو باطل کردیا" + "ہوسکتا ہے کہ آپ کو ذیل میں درج وجوہات میں سے کسی ایک کی وجہ سے خارج کیا گیا ہو۔ برائے مہربانی %s کا استعمال جاری رکھنے کے لئے دوبارہ داخل ہوں۔" + "آپ خارج ہوگئے ہیں" + diff --git a/features/userprofile/shared/src/main/res/values-de/translations.xml b/features/userprofile/shared/src/main/res/values-de/translations.xml index f96af58bae..00b3070480 100644 --- a/features/userprofile/shared/src/main/res/values-de/translations.xml +++ b/features/userprofile/shared/src/main/res/values-de/translations.xml @@ -1,14 +1,14 @@ "Blockieren" - "Blockierte Benutzer können Dir keine Nachrichten senden und alle ihre alten Nachrichten werden ausgeblendet. Die Blockierung kann jederzeit aufgehoben werden." - "Benutzer blockieren" + "Blockierte Nutzer können Ihnen keine Nachrichten senden und alle ihre Nachrichten werden ausgeblendet. Die Blockierung kann jederzeit aufgehoben werden." + "Nutzer blockieren" "Blockierung aufheben" "Der Nutzer kann dir wieder Nachrichten senden & alle Nachrichten des Nutzers werden wieder angezeigt." "Blockierung aufheben" "Blockieren" - "Blockierte Benutzer können Dir keine Nachrichten senden und alle ihre alten Nachrichten werden ausgeblendet. Die Blockierung kann jederzeit aufgehoben werden." - "Benutzer blockieren" + "Blockierte Nutzer können Ihnen keine Nachrichten senden und alle ihre Nachrichten werden ausgeblendet. Die Blockierung kann jederzeit aufgehoben werden." + "Nutzer blockieren" "Profil" "Blockierung aufheben" "Der Nutzer kann dir wieder Nachrichten senden & alle Nachrichten des Nutzers werden wieder angezeigt." diff --git a/features/userprofile/shared/src/main/res/values-pt-rBR/translations.xml b/features/userprofile/shared/src/main/res/values-pt-rBR/translations.xml index 8d64033f62..e379aeb2ec 100644 --- a/features/userprofile/shared/src/main/res/values-pt-rBR/translations.xml +++ b/features/userprofile/shared/src/main/res/values-pt-rBR/translations.xml @@ -9,8 +9,11 @@ "Bloquear" "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." "Bloquear usuário" + "Perfil" "Desbloquear" "Você poderá ver todas as mensagens deles novamente." "Desbloquear usuário" + "Use o aplicativo da Web para verificar este usuário." + "Verificar %1$s" "Ocorreu um erro ao tentar iniciar um chat" diff --git a/features/userprofile/shared/src/main/res/values-ur/translations.xml b/features/userprofile/shared/src/main/res/values-ur/translations.xml new file mode 100644 index 0000000000..244b5b8546 --- /dev/null +++ b/features/userprofile/shared/src/main/res/values-ur/translations.xml @@ -0,0 +1,17 @@ + + + "مسدود کریں" + "مسدود کردہ صارفین آپ کو پیغامات نہیں بھیج سکیں گے اور انکے تمام پیغامات چھپ جائیں گے۔ آپ انھیں کسی بھی وقت غیر مسدود کر سکتے ہیں۔" + "صارف کو مسدود کریں" + "غیر مسدود کریں" + "آپ انکی جانب سے تمام پیغامات دوبارہ دیکھ سکیں گے۔" + "صارف کو غیر مسدود کریں" + "مسدود کریں" + "مسدود کردہ صارفین آپ کو پیغامات نہیں بھیج سکیں گے اور انکے تمام پیغامات چھپ جائیں گے۔ آپ انھیں کسی بھی وقت غیر مسدود کر سکتے ہیں۔" + "صارف کو مسدود کریں" + "نمایہ" + "غیر مسدود کریں" + "آپ انکی جانب سے تمام پیغامات دوبارہ دیکھ سکیں گے۔" + "صارف کو غیر مسدود کریں" + "گفتگو شروع کرنے کی کوشش کرتے وقت ایک خرابی واقع ہوگئی" + diff --git a/features/verifysession/impl/src/main/res/values-pt-rBR/translations.xml b/features/verifysession/impl/src/main/res/values-pt-rBR/translations.xml index c06776f25f..5ffb00abec 100644 --- a/features/verifysession/impl/src/main/res/values-pt-rBR/translations.xml +++ b/features/verifysession/impl/src/main/res/values-pt-rBR/translations.xml @@ -1,15 +1,25 @@ + "Não consegue confirmar?" + "Criar uma nova chave de recuperação" + "Verifique este dispositivo para configurar mensagens seguras." + "Confirme sua identidade" "Usar outro dispositivo" + "Use a chave de recuperação" + "Agora você pode ler ou enviar mensagens com segurança, e qualquer pessoa com quem você conversa também pode confiar neste dispositivo." "Dispositivo verificado" "Usar outro dispositivo" + "Aguardando outro dispositivo…" "Algo não parece certo. Ou a solicitação atingiu o tempo limite ou a solicitação foi negada." "Confirme se os emojis abaixo correspondem aos mostrados em sua outra sessão." "Compare os emojis" + "Confirme se os emojis abaixo correspondem aos exibidos no dispositivo do outro usuário." "Confirme se os números abaixo correspondem aos mostrados em sua outra sessão." "Comparar números" "Sua nova sessão está agora verificada. Ela tem acesso às suas mensagens criptografadas e outros usuários a verão como confiável." + "Agora você pode confiar na identidade desse usuário ao enviar ou receber mensagens." "Insira a chave de recuperação" + "Ou a solicitação expirou, a solicitação foi negada ou houve uma incompatibilidade de verificação." "Prove que é você para acessar seu histórico de mensagens criptografadas." "Abrir uma sessão existente" "Repetir verificação" @@ -17,9 +27,26 @@ "Esperando para combinar" "Compare um conjunto único de emojis." "Compare os emojis únicos, garantindo que apareçam na mesma ordem." + "Sessão iniciada" + "Ou a solicitação expirou, a solicitação foi negada ou houve uma incompatibilidade de verificação." + "A verificação falhou" + "Continue somente se você iniciou esta verificação." + "Verifique o outro dispositivo para manter seu histórico de mensagens seguro." + "Agora você pode ler ou enviar mensagens com segurança em seu outro dispositivo." "Dispositivo verificado" + "Verificação solicitada" "Eles não combinam" "Eles combinam" + "Certifique-se de que você tenha o aplicativo aberto no outro dispositivo antes de iniciar a verificação a partir daqui." + "Abra o aplicativo em outro dispositivo verificado" + "Para maior segurança, verifique esse usuário comparando um conjunto de emojis em seus dispositivos. Faça isso usando uma maneira confiável de se comunicar." + "Verificar este usuário?" + "Para maior segurança, outro usuário deseja verificar sua identidade. Você verá um conjunto de emojis para comparar." + "Você deverá ver um pop-up no outro dispositivo. Você deverá ver uma janela pop-up no outro dispositivo e iniciar a verificação a partir daí." + "Inicie a verificação no outro dispositivo" + "Aguardando o outro dispositivo" + "Aguardando o outro usuário" + "Depois de aceito, você poderá continuar com a verificação." "Aceite a solicitação para iniciar o processo de verificação em sua outra sessão para continuar." "Aguardando para aceitar a solicitação" "Saindo…" diff --git a/features/verifysession/impl/src/main/res/values-ur/translations.xml b/features/verifysession/impl/src/main/res/values-ur/translations.xml new file mode 100644 index 0000000000..e6f0fcd367 --- /dev/null +++ b/features/verifysession/impl/src/main/res/values-ur/translations.xml @@ -0,0 +1,33 @@ + + + "تصدیق نہیں کر سکتے؟" + "ایک نئی بازیابی کلید تخلیق کریں" + "محفوظ پیغام رسانی ترتیب دینے کیلئے اس آلے کی توثیق کریں۔" + "اپنی شناخت کی تصدیق کریں" + "دوسرا آلہ استعمال کریں" + "بازیابی کلید استعمال کریں" + "اب آپ محفوظ طریقے سے پیغامات پڑھ یا بھیج سکتے ہیں، اور جسکے ساتھ آپ گفتگو کرتے ہیں وہ بھی اس آلہ پر بھروسہ کر سکتا ہے۔" + "آلہ توثیق شدہ" + "دوسرا آلہ استعمال کریں" + "دوسرے آلہ پر منتظر…" + "کچھ ٹھیک نہیں لگتا۔ یا تو درخواست کا وقت ختم ہو گیا یا درخواست مسترد کر دی گئی۔" + "تصدیق کریں کہ نیچے ایموجی آپ کے دوسرے جلسے میں دکھائے گئے ایموجیوں سے مماثل ہیں۔" + "ایموجیوں کا موازنہ کریں۔" + "تصدیق کریں کہ نیچے دیے گئے اعداد آپکے دوسرے جلسے میں دکھائے گئے اعداد سے مماثل ہیں۔" + "اعداد کا موازنہ کریں" + "آپ کا نیا جلسہ اب توثیق شدہ ہے۔ اسے آپ کے مرموزکردہ پیغامات تک رسائی حاصل ہے، اور دوسرے صارفین اسے بھروسہ مند کے طور پر دیکھیں گے۔" + "بازیابی کلید درج کریں" + "اپنی مرموزکردہ پیغام کی سرگزشت تک رسائی حاصل کرنے کے لیے ثابت کریں کہ یہ آپ ہی ہیں۔" + "ایک موجودہ جلسہ کھولیں" + "توثیق کی پھر کوشش کریں" + "میں تیار ہوں" + "ملانے کا انتظار" + "رموز تعبیری کے منفرد مجموعہ کا موازنہ کریں۔" + "منفرد ایموجی کا موازنہ کریں، یقینی بناتے ہوئے کہ وہ ایک ہی ترتیب میں دکھائی دیں۔" + "آلہ توثیق شدہ" + "وہ مماثل نہیں ہیں" + "وہ مماثل ہیں" + "جاری رکھنے کیلئے اپنے دوسرے جلسے میں توثیقی عمل شروع کرنے کی درخواست کو قبول کریں۔" + "درخواست قبول کرنے کا منتظر" + "خارج ہورہاہے…" + diff --git a/libraries/androidutils/src/main/res/values-ur/translations.xml b/libraries/androidutils/src/main/res/values-ur/translations.xml new file mode 100644 index 0000000000..69f18dbf11 --- /dev/null +++ b/libraries/androidutils/src/main/res/values-ur/translations.xml @@ -0,0 +1,4 @@ + + + "اس کارروائی کو سنبھالنے کے لیے کوئی مطابقت پذیر اطلاقیہ نہیں ملا۔" + diff --git a/libraries/dateformatter/impl/src/main/res/values-pt-rBR/translations.xml b/libraries/dateformatter/impl/src/main/res/values-pt-rBR/translations.xml new file mode 100644 index 0000000000..7c72997e33 --- /dev/null +++ b/libraries/dateformatter/impl/src/main/res/values-pt-rBR/translations.xml @@ -0,0 +1,5 @@ + + + "%1$s às %2$s" + "Este mês" + diff --git a/libraries/eventformatter/impl/src/main/res/values-de/translations.xml b/libraries/eventformatter/impl/src/main/res/values-de/translations.xml index 35ed88c4b2..be08a872ab 100644 --- a/libraries/eventformatter/impl/src/main/res/values-de/translations.xml +++ b/libraries/eventformatter/impl/src/main/res/values-de/translations.xml @@ -2,49 +2,49 @@ "(Avatar wurde auch geändert)" "%1$s hat den Avatar geändert" - "Du hast deinen Avatar geändert" + "Sie änderten ihren Avatar" "%1$s wurde zum Mitglied herabgestuft" "%1$s wurde zum Moderator herabgestuft" "%1$s hat den Anzeigenamen von %2$s auf %3$s geändert" "Du hast deinen Anzeigenamen von %1$s auf %2$s geändert" "%1$s hat den Anzeigenamen entfernt (war %2$s)" - "Du hast deinen Anzeigenamen entfernt (war %1$s)" + "Sie haben Ihren Anzeigenamen entfernt (er lautete %1$s)" "%1$s hat den Anzeigenamen auf %2$s geändert" "Du hast deinen Anzeigenamen zu %1$s geändert" "%1$s ist jetzt Administrator*in" "%1$s ist jetzt Moderator*in" "%1$s hat den Raum-Avatar geändert" - "Du hast den Raum-Avatar geändert" + "Dir haben den Zimmer-Avatar geändert" "%1$s hat den Raum-Avatar entfernt" - "Du hast den Raum-Avatar entfernt" + "Sie haben den Raum-Avatar entfernt" "%1$s hat %2$s gesperrt" - "Du hast %1$s gesperrt" + "Sie haben %1$s gesperrt" "Sie haben gesperrt %1$s: %2$s" "%1$s verboten %2$s: %3$s" "%1$s hat den Raum erstellt" - "Du hast den Raum erstellt" + "Sie erstellten den Chatroom" "%1$s hat %2$s eingeladen" "%1$s hat die Einladung angenommen" - "Du hast die Einladung angenommen" - "Du hast %1$s eingeladen" + "Sie haben die Einladung angenommen" + "Sie luden %1$s ein" "%1$s hat dich eingeladen" "%1$s hat den Raum betreten" - "Du hast den Raum betreten" + "Sie sind dem Raum beigetreten" "%1$s beantragt den Beitritt" "%1$s hat %2$s den Beitritt erlaubt" - "Du hast %1$s den Beitritt erlaubt." - "Du hast angefragt beizutreten" + "Sie genehmigten die Beitrittsanfrage für %1$s" + "Sie haben um Beitritt gebeten" "%1$s hat die Beitrittsanfrage von %2$s abgelehnt" - "Du hast die Beitrittsanfrage von %1$s abgelehnt" + "Sie haben die Beitrittsanfrage für %1$s abgelehnt" "%1$s hat deine Beitrittsanfrage abgelehnt" "%1$s ist nicht mehr an einem Beitritt interessiert" - "Du hast deine Beitrittsanfrage zurückgezogen" + "Sie haben ihre Beitrittsanfrage widerrufen" "%1$s hat den Raum verlassen" - "Du hast den Raum verlassen" + "Sie verließen den Raum" "%1$s hat den Raum-Namen geändert in: %2$s" - "Du hast den Raum-Namen geändert in: %1$s" + "Sie haben den Raumnamen geändert in: %1$s" "%1$s hat den Raum-Namen entfernt" - "Du hast den Raum-Namen entfernt" + "Sie haben den Raumnamen entfernt" "%1$s hat keine Änderungen vorgenommen" "Du hast keine Änderungen vorgenommen" "%1$s hat die fixierten Nachrichten geändert" @@ -53,21 +53,21 @@ "Du hast eine Nachricht fixiert" "%1$s löste eine Nachricht" "Du hast eine Nachricht gelöst" - "%1$s hat die Einladung abgelehnt" - "Du hast die Einladung abgelehnt" + "%1$s lehnte die Einladung ab" + "Sie lehnten die Einladung ab" "%1$s hat %2$s entfernt" - "Du hast %1$s entfernt" + "Sie haben %1$s entfernt" "Sie haben %1$s entfernt: %2$s" "%1$s entfernt %2$s: %3$s" - "%1$s hat eine Einladung an %2$s gesendet, dem Raum beizutreten" - "Du hast eine Einladung an %1$s gesendet, dem Raum beizutreten" + "%1$s hat %2$s eingeladen, den Raum zu beizutreten" + "Sie haben eine Einladung an %1$s gesendet, um dem Chatroom beizutreten." "%1$s hat die Einladung an %2$s zum Betreten des Raums zurückgezogen" - "Du hast die Einladung an %1$s zum Betreten des Raums zurückgezogen" + "Sie haben die Einladung für %1$s widerrufen" "%1$s hat das Thema geändert in: %2$s" - "Du hast das Thema geändert in: %1$s" + "Sie haben das Thema geändert in:%1$s" "%1$s hat das Raum-Thema entfernt" - "Du hast das Raum-Thema entfernt" + "Sie haben das Raumthema entfernt" "%1$s hat die Sperre für %2$s aufgehoben" - "Du hast die Sperre für %1$s aufgehoben" + "Sie haben die Sperre für %1$s aufgehoben" "%1$s hat eine unbekannte Änderung vorgenommen" diff --git a/libraries/eventformatter/impl/src/main/res/values-pt-rBR/translations.xml b/libraries/eventformatter/impl/src/main/res/values-pt-rBR/translations.xml index 7d6bbd1edf..f1ff1bd029 100644 --- a/libraries/eventformatter/impl/src/main/res/values-pt-rBR/translations.xml +++ b/libraries/eventformatter/impl/src/main/res/values-pt-rBR/translations.xml @@ -19,6 +19,8 @@ "Você removeu o avatar da sala" "%1$s baniu %2$s" "Você baniu %1$s" + "Você baniu %1$s: %2$s" + "%1$s banido %2$s: %3$s" "%1$s criou a sala" "Você criou a sala" "%1$s convidou %2$s" @@ -45,10 +47,18 @@ "Você removeu o nome da sala" "%1$s não fez alterações" "Você não fez nenhuma alteração" + "%1$s alterou as mensagens fixadas" + "Você alterou as mensagens fixadas" + "%1$s fixou uma mensagem" + "Você fixou uma mensagem" + "%1$s desfixou uma mensagem" + "Você desafixou uma mensagem" "%1$s rejeitou o convite" "Você rejeitou o convite" "%1$s removido %2$s" "Você removeu %1$s" + "Você removeu %1$s: %2$s" + "%1$s removido %2$s: %3$s" "%1$s enviou um convite para %2$s para entrar na sala" "Você enviou um convite para %1$s para entrar na sala" "%1$s revogou o convite para %2$s para entrar na sala" diff --git a/libraries/eventformatter/impl/src/main/res/values-pt/translations.xml b/libraries/eventformatter/impl/src/main/res/values-pt/translations.xml index 6733deb6a2..94f59049d6 100644 --- a/libraries/eventformatter/impl/src/main/res/values-pt/translations.xml +++ b/libraries/eventformatter/impl/src/main/res/values-pt/translations.xml @@ -19,6 +19,8 @@ "Removeste o ícone da sala" "%1$s baniu %2$s" "Baniste %1$s" + "Baniste %1$s: %2$s" + "%1$s baniu %2$s: %3$s" "%1$s criou a sala" "Criaste a sala" "%1$s convidou %2$s" @@ -55,6 +57,8 @@ "Rejeitaste o convite" "%1$s removeu %2$s" "Removeste %1$s" + "Removeste %1$s: %2$s" + "%1$s removeu %2$s: %3$s" "%1$s enviou um convite a %2$s" "Enviaste um convite a %1$s" "%1$s revogou o convite de %2$s" diff --git a/libraries/eventformatter/impl/src/main/res/values-ur/translations.xml b/libraries/eventformatter/impl/src/main/res/values-ur/translations.xml new file mode 100644 index 0000000000..6dba74fd2f --- /dev/null +++ b/libraries/eventformatter/impl/src/main/res/values-ur/translations.xml @@ -0,0 +1,69 @@ + + + "(اوتار بھی تبدیل ہوا)" + "%1$s نے اپنا اوتار بدل دیا" + "آپنے اپنا اوتار بدل دیا" + "%1$s کو تا رکن تنزل کیا گیا" + "%1$s کو تا ناظم تنزل کیا گیا" + "%1$s نے اپنا نمائشی نام %2$s سے %3$s پر بدل دیا" + "آپنے اپنا نمائشی نام %1$s سے %2$s پر بدل دیا" + "%1$s نے اپنا نمائشی نام ہٹادیا (%2$s تھا)" + "آپنے اپنا نمائشی نام ہٹادیا (%1$s تھا)" + "%1$s نے اپنا نمائشی نام %2$s پر متعین کردیا" + "آپنے اپنا نمائشی نام %1$s پر متعین کردیا" + "%1$s کو تا منتظم فروغ دیا گیا" + "%1$s کو تا ناظم فروغ دیا گیا" + "%1$s نے کمرے کا اوتار بدل دیا" + "آپنے کمرے کا اوتار بدل دیا" + "%1$s نے کمرے کا اوتار ہٹادیا" + "آپنے کمرے کا اوتار ہٹادیا" + "%1$s نے %2$s پر پابندی لگادی" + "آپنے %1$s پر پابندی لگادی" + "%1$s نے کمرہ تخلیق کیا" + "آپ نے کمرہ تخلیق کیا" + "%1$s نے %2$s کو مدعو کیا" + "%1$s نے دعوت قبول کرلی" + "آپنے دعوت قبول کرلی" + "آپنے %1$s مدعو کیا" + "%1$s نے آپکو مدعو کیا" + "%1$s کمرے میں شامل ہوگیا" + "آپ کمرے میں شامل ہو گئے" + "%1$s شامل ہونے کی درخواست کر رہا ہے" + "%1$s نے %2$s کو اجازت فراہم کی" + "آپنے %1$s کو شامل ہونے کی اجازت دی" + "آپنے شامل ہونے کی دعوت کی" + "%1$s نے %2$s کی شامل ہونے کی درخواست مسترد کردی" + "آپنے %1$s کی شامل ہونے کی درخواست مسترد کردی" + "%1$s نے آپکی شامل ہونے کی درخواست مسترد کردی" + "%1$s کی شامل ہونے میں دلچسپی نہیں" + "آپنے اپنی شامل ہونے کی درخواست منسوخ کردی" + "%1$s کمرے سے رخصت ہوگیا" + "آپ کمرے سے رخصت ہوگئے" + "%1$s نے کمرے کا نام بدل دیا تا: %2$s" + "آپنے کمرے کا نام بدل دیا تا: %1$s" + "%1$s نے کمرے کا نام ہٹادیا" + "آپنے کمرے کا نام ہٹادیا" + "%1$s نے کوئی تبدیلیاں نہیں کیں" + "آپ نے کوئی تبدیلیاں نہیں کیں" + "%1$s نے مثبوتہ پیغامات بدل دیے" + "آپنے مثبوتہ پیغامات بدل دیے" + "%1$s نے پیغام تثبیت کردیا" + "آپنے پیغام تثبیت کردیا" + "%1$s نے پیغام غیر مثبوت کردیا" + "آپنے پیغام غیر مثبوت کردیا" + "%1$s نے دعوت مسترد کر دی" + "آپنے دعوت مسترد کر دی" + "%1$s نے %2$s کو ہٹادیا" + "آپنے %1$s کو ہٹادیا" + "%1$s نے %2$s کو کمرے میں شامل ہونی کی دعوت بھیج دی" + "آپنے %1$s کو کمرے میں شامل ہونے کی دعوت بھیج دی" + "%1$s نے %2$s کی کمرے میں شامل ہونے کی دعوت منسوخ کردی" + "آپنے %1$s کے کمرے میں شامل ہونے کی دعوت منسوخ کردی" + "%1$s نے موضوع کو بدلا تا: %2$s" + "آپنے موضوع کو بدلا تا: %1$s" + "%1$s نے کمرے کا موضوع ہٹادیا" + "آپنے کمرے کا موضوع ہٹادیا" + "%1$s کے %2$s کو غیر پابندی یافتہ کردیا" + "آپنے %1$s کو غیر پابندی یافتہ کردیا" + "%1$s نے اپنی رکنیت میں ایک نامعلوم تبدیلی کی" + diff --git a/libraries/eventformatter/impl/src/main/res/values-zh-rTW/translations.xml b/libraries/eventformatter/impl/src/main/res/values-zh-rTW/translations.xml index 11d891c215..cd8137744f 100644 --- a/libraries/eventformatter/impl/src/main/res/values-zh-rTW/translations.xml +++ b/libraries/eventformatter/impl/src/main/res/values-zh-rTW/translations.xml @@ -19,6 +19,8 @@ "您移除了聊天室大頭照" "%1$s 將 %2$s 加入黑名單" "您將 %1$s 加入黑名單" + "您封鎖了 %1$s:%2$s" + "%1$s 封鎖了 %2$s:%3$s" "%1$s 建立此聊天室" "您建立此聊天室" "%1$s 已邀請 %2$s" @@ -55,6 +57,8 @@ "您拒絕了邀請" "%2$s 已被 %1$s 移除" "%1$s 已被您移除" + "您移除了 %1$s:%2$s" + "%1$s 移除了 %2$s:%3$s" "%1$s 已邀請 %2$s 加入聊天室" "您已邀請 %1$s 加入聊天室" "%1$s 撤銷了對 %2$s 的聊天室邀請" diff --git a/libraries/matrixui/src/main/res/values-pt-rBR/translations.xml b/libraries/matrixui/src/main/res/values-pt-rBR/translations.xml index 5409152649..a00e478b92 100644 --- a/libraries/matrixui/src/main/res/values-pt-rBR/translations.xml +++ b/libraries/matrixui/src/main/res/values-pt-rBR/translations.xml @@ -1,4 +1,7 @@ + "Enviar convite" + "Gostaria de iniciar um bate-papo com %1$s?" + "Enviar convite?" "%1$s(%2$s) convidou você" diff --git a/libraries/matrixui/src/main/res/values-ur/translations.xml b/libraries/matrixui/src/main/res/values-ur/translations.xml new file mode 100644 index 0000000000..7a6751a1a9 --- /dev/null +++ b/libraries/matrixui/src/main/res/values-ur/translations.xml @@ -0,0 +1,4 @@ + + + "%1$s (%2$s) نے آپ کو مدعو کیا" + diff --git a/libraries/mediaviewer/impl/src/main/res/values-eu/translations.xml b/libraries/mediaviewer/impl/src/main/res/values-eu/translations.xml index 696d7ceee3..b7f00b4dcb 100644 --- a/libraries/mediaviewer/impl/src/main/res/values-eu/translations.xml +++ b/libraries/mediaviewer/impl/src/main/res/values-eu/translations.xml @@ -2,6 +2,7 @@ "Fitxategia gelatik kenduko da eta kideek ezingo dute atzitu." "Fitxategia ezabatu?" + "Egiaztatu Interneteko konexioa eta saiatu berriro." "Gela honetara igotako dokumentuak, audio-fitxategiak, eta ahots-mezuak hemen erakutsiko dira." "Oraindik ez da fitxategirik igo" "Fitxategiak kargatzen…" diff --git a/libraries/mediaviewer/impl/src/main/res/values-pt-rBR/translations.xml b/libraries/mediaviewer/impl/src/main/res/values-pt-rBR/translations.xml new file mode 100644 index 0000000000..061b43e5ea --- /dev/null +++ b/libraries/mediaviewer/impl/src/main/res/values-pt-rBR/translations.xml @@ -0,0 +1,21 @@ + + + "Esse arquivo será removido da sala e os membros não terão acesso a ele." + "Excluir arquivo?" + "Verifique sua conexão com a Internet e tente novamente." + "Os documentos, arquivos de áudio e mensagens de voz enviados para esta sala serão exibidos aqui." + "Ainda não foram enviados arquivos" + "Carregando arquivos…" + "Carregando mídia…" + "Arquivos" + "Mídia" + "As imagens e os vídeos enviados para esta sala serão exibidos aqui." + "Nenhuma mídia foi carregada ainda" + "Mídia e arquivos" + "Formato de arquivo" + "Nome do arquivo" + "Não há mais arquivos para mostrar" + "Não há mais mídia para mostrar" + "Enviado por" + "Enviado em" + diff --git a/libraries/permissions/api/src/main/res/values-de/translations.xml b/libraries/permissions/api/src/main/res/values-de/translations.xml index fb801cc450..32fc69fff9 100644 --- a/libraries/permissions/api/src/main/res/values-de/translations.xml +++ b/libraries/permissions/api/src/main/res/values-de/translations.xml @@ -3,5 +3,5 @@ "Damit die Anwendung die Kamera verwenden kann, erteile bitte die Erlaubnis in den Systemeinstellungen." "Bitte erteile die Erlaubnis in den Systemeinstellungen." "Damit die Anwendung das Mikrofon verwenden kann, erteile bitte die Erlaubnis in den Systemeinstellungen." - "Damit die Anwendung Benachrichtigungen anzeigen kann, erteile bitte die Erlaubnis in den Systemeinstellungen." + "Damit Benachrichtigungen angezeigt werden können, gewähren Sie der App bitte die Erlaubnis in den Systemeinstellungen." diff --git a/libraries/permissions/api/src/main/res/values-ur/translations.xml b/libraries/permissions/api/src/main/res/values-ur/translations.xml new file mode 100644 index 0000000000..92925ae749 --- /dev/null +++ b/libraries/permissions/api/src/main/res/values-ur/translations.xml @@ -0,0 +1,7 @@ + + + "اطلاقیے کو تصویرگر استعمال کرنے دینے کے لیے، برائے مہربانی نظام کی ترتیبات میں اجازت دیں۔" + "برائے مہربانی نظام کی ترتیبات میں اجازت دیں۔" + "اطلاقیے کو صوتگر استعمال کرنے دینے کے لیے، برائے مہربانی نظام کی ترتیبات میں اجازت دیں۔" + "اطلاقیے کو اطلاعات ظاہر کرنے دینے کے لیے، برائے مہربانی نظام کی ترتیبات میں اجازت دیں۔" + diff --git a/libraries/permissions/impl/src/main/res/values-pt-rBR/translations.xml b/libraries/permissions/impl/src/main/res/values-pt-rBR/translations.xml index c8834ddb23..e4e2226e9f 100644 --- a/libraries/permissions/impl/src/main/res/values-pt-rBR/translations.xml +++ b/libraries/permissions/impl/src/main/res/values-pt-rBR/translations.xml @@ -1,4 +1,5 @@ + "Verifique se o aplicativo pode mostrar notificações." "Verifique as permissões" diff --git a/libraries/permissions/impl/src/main/res/values-ur/translations.xml b/libraries/permissions/impl/src/main/res/values-ur/translations.xml new file mode 100644 index 0000000000..f714837144 --- /dev/null +++ b/libraries/permissions/impl/src/main/res/values-ur/translations.xml @@ -0,0 +1,5 @@ + + + "پڑتال کریں کہ اطلاقیہ اطلاعات دکھا سکتا ہے" + "اجازتوں کی پڑتال کریں" + diff --git a/libraries/push/impl/src/main/res/values-cy/translations.xml b/libraries/push/impl/src/main/res/values-cy/translations.xml index 9db7ddf499..c6500f40b4 100644 --- a/libraries/push/impl/src/main/res/values-cy/translations.xml +++ b/libraries/push/impl/src/main/res/values-cy/translations.xml @@ -5,11 +5,35 @@ "Hysbysiadau swnllyd" "Galwadau\'n canu" "Hysbysiadau tawel" + + "%1$s: %2$d negeseuon" + "%1$s: %2$d neges" + "%1$s: %2$d neges" + "%1$s: %2$d neges" + "%1$s: %2$d neges" + "%1$s: %2$d neges" + + + "%d hysbysiadau" + "%d hysbysiad" + "%d hysbysiad" + "%d hysbysiad" + "%d hysbysiad" + "%d hysbysiad" + "Hysbysiad" "📹 Galwad i mewn" "** Wedi methu anfon - agorwch yr ystafell" "Ymuno" "Gwrthod" + + "%d gwahoddiadau" + "%d gwahoddiadau" + "%d gwahoddiadau" + "%d gwahoddiadau" + "%d gwahoddiadau" + "%d gwahoddiadau" + "Wedi eich gwahodd i sgwrsio" "Mae %1$s wedi eich gwahodd i sgwrsio" "Wedi eich crybwyll: %1$s" @@ -32,9 +56,25 @@ "Rydych chi\'n edrych ar yr hysbysiad! Cliciwch fi!" "%1$s: %2$s" "%1$s : %2$s %3$s" + + "%d negeseuon hysbyswyd heb eu darllen" + "%d neges hysbyswyd heb ei ddarllen" + "%d neges hysbyswyd heb eu darllen" + "%d neges hysbyswyd heb eu darllen" + "%d neges hysbyswyd heb eu darllen" + "%d neges hysbyswyd heb eu darllen" + "%1$s a %2$s" "%1$s yn %2$s" "%1$s yn %2$s a %3$s" + + "%d ystafelloedd" + "%d ystafell" + "%d ystafell" + "%d ystafell" + "%d ystafell" + "%d ystafell" + "Cydweddu\'n y cefndir" "Gwasanaethau Google" "Heb ganfod Google Play Services dilys. Efallai fydd hysbysiadau ddim yn gweithio\'n iawn." @@ -44,6 +84,14 @@ "Darparwr gwthio presennol" "Gwnewch yn siŵr fod y cais yn cefnogi o leiaf un darparwr gwthio." "Heb ganfod cefnogaeth darparwr gwthio." + + "Wedi canfod %1$d darparwyr gwthio: %2$s" + "Wedi canfod %1$d darparwr gwthio: %2$s" + "Wedi canfod %1$d darparwr gwthio: %2$s" + "Wedi canfod %1$d darparwr gwthio: %2$s" + "Wedi canfod %1$d darparwr gwthio: %2$s" + "Wedi canfod %1$d darparwr gwthio: %2$s" + "Adeiladwyd y rhaglen gyda chefnogaeth ar gyfer: %1$s" "Cefnogaeth darparwr gwthio" "Gwiriwch y gall y cais ddangos hysbysiad." diff --git a/libraries/push/impl/src/main/res/values-de/translations.xml b/libraries/push/impl/src/main/res/values-de/translations.xml index c4eb926a2c..5cdd04cd3e 100644 --- a/libraries/push/impl/src/main/res/values-de/translations.xml +++ b/libraries/push/impl/src/main/res/values-de/translations.xml @@ -22,7 +22,7 @@ "%d Einladung" "%d Einladungen" - "Du wurdest zu einem Chat eingeladen" + "Sie wurden zu einem Chat eingeladen" "%1$s hat dich zum Chatten eingeladen" "Hat Dich erwähnt: %1$s" "Neue Nachrichten" @@ -37,7 +37,7 @@ "%1$s hat dich eingeladen, dem Chatroom beizutreten" "Ich" "%1$s hat Dich erwähnt oder geantwortet" - "Du siehst dir die Benachrichtigung an! Klicke hier!" + "Sie sehen die Benachrichtigung! Klicken Sie hier!" "%1$s: %2$s" "%1$s: %2$s %3$s" diff --git a/libraries/push/impl/src/main/res/values-pt-rBR/translations.xml b/libraries/push/impl/src/main/res/values-pt-rBR/translations.xml index b44e78a0c3..035ab9e575 100644 --- a/libraries/push/impl/src/main/res/values-pt-rBR/translations.xml +++ b/libraries/push/impl/src/main/res/values-pt-rBR/translations.xml @@ -3,6 +3,7 @@ "Chamada" "Ouvindo eventos" "Notificações barulhentas" + "Chamadas tocando" "Notificações silenciosas" "%1$s: %2$d mensagem" @@ -13,6 +14,7 @@ "%d notificações" "Notificação" + "📹 Chamada recebida" "** Falha ao enviar - por favor, abra a sala" "Entrar" "Recusar" @@ -34,6 +36,7 @@ "Convidou você para entrar na sala" "%1$s te convidou para entrar na sala" "Eu" + "%1$s mencionado ou respondido" "Você está visualizando a notificação! Clique em mim!" "%1$s: %2$s" "%1$s: %2$s %3$s" @@ -51,5 +54,29 @@ "Sincronização em segundo plano" "Serviços do Google" "O Google Play Services não foi encontrado. As notificações podem não funcionar corretamente." + "Obtenha o nome do provedor atual." + "Nenhum provedor de push foi selecionado." + "Provedor de push atual: %1$s." + "Provedor de push atual" + "Certifique-se de que o aplicativo seja compatível com pelo menos um provedor de push." + "Nenhum suporte de provedor de push foi encontrado." + + "Encontrado %1$d provedor de push: %2$s" + "Encontrados %1$d provedores de push: %2$s" + + "O aplicativo foi desenvolvido com suporte para: %1$s" + "Suporte ao provedor de push" + "Verifique se o aplicativo pode exibir a notificação." + "A notificação não foi clicada." + "Não é possível exibir a notificação." + "A notificação foi clicada!" + "Exibir notificação" + "Clique na notificação para continuar o teste." + "Certifique-se de que o aplicativo está recebendo push." + "Erro: o pusher rejeitou a solicitação." "Erro: %1$s." + "Erro, não é possível testar o push." + "Erro, tempo limite de espera pelo push." + "O push loop back levou %1$d ms." + "Teste o loopback do push" diff --git a/libraries/push/impl/src/main/res/values-pt/translations.xml b/libraries/push/impl/src/main/res/values-pt/translations.xml index 24ddc2f216..ad47d5385f 100644 --- a/libraries/push/impl/src/main/res/values-pt/translations.xml +++ b/libraries/push/impl/src/main/res/values-pt/translations.xml @@ -64,6 +64,7 @@ "%1$d fornecedor de envio encontrado: %2$s" "%1$d fornecedores de envio encontrados: %2$s" + "A aplicação suporta: %1$s" "Detetar fornecedores de envio" "Verificar se a aplicação consegue mostrar notificações." "Não clicaste na notificação." diff --git a/libraries/push/impl/src/main/res/values-ur/translations.xml b/libraries/push/impl/src/main/res/values-ur/translations.xml new file mode 100644 index 0000000000..900ff9db41 --- /dev/null +++ b/libraries/push/impl/src/main/res/values-ur/translations.xml @@ -0,0 +1,78 @@ + + + "مکالمہ" + "واقعات کیلئے سن رہا ہے" + "صاخب اطلاعات" + "بجنے والے مکالمات" + "خاموش اطلاعات" + + "%1$s: %2$d پیغام" + "%1$s: %2$d پیغامات" + + + "%d اطلاع" + "%d اطلاعات" + + "اطلاع" + "📹 آنے والا مکالمہ" + "** بھیجنے میں ناکام - براہ کرم کمرہ کھولیں" + "شامل ہوں" + "مسترد کریں" + + "%d دعوت نامہ" + "%d دعوت نامے" + + "آپ کو گفتگو کیلئے مدعو کیا" + "آپ کا تذکرہ کیا: %1$s" + "نئے پیغامات" + + "%d نیا پیغام" + "%d نئے پیغامات" + + "%1$s کے ساتھ ردعمل کیا" + "بطور مقروءہ نشانزد کریں" + "فوری جواب" + "آپ کو کمرے میں شامل ہونے کی دعوت دی" + "میں" + "آپ اطلاع دیکھ رہے ہیں! مجھے دبائیں!" + "%1$s: %2$s" + "%1$s: %2$s %3$s" + + "%d غیر مقروءہ مطلع پیغام" + "%d غیر مقروءہ مطلع پیغامات" + + "%1$s اور %2$s" + "%2$s میں %1$s" + "%2$s اور %3$s میں %1$s" + + "%d کمرہ" + "%d کمرے" + + "پس منظر مطابقت پذیری" + "گوگل سروسز" + "کوئی درست گوگل پلے سروسز نہیں ملی۔ ہو سکتا ہے اطلاعات ٹھیک سے کام نہ کریں۔" + "موجودہ فراہم کنندہ کا نام حاصل کریں۔" + "کوئی دھکا فراہم کنندہ منتخب نہیں کیا گیا" + "موجودہ دھکا فراہم کنندہ: %1$s۔" + "موجودہ دھکا فراہم کنندہ" + "یقینی بنائیں کہ اطلاقیہ کم از کم ایک دھکا فراہم کنندہ کی حمایت کرتا ہے۔" + "کوئی دھکا فراہم کنندہ حمایت نہیں ملی۔" + + "پایا %1$d دھکا فراہم کنندہ: %2$s" + "پائے %1$d دھکا فراہم کنندگان: %2$s" + + "دھکا فراہم کنندہ حمایت" + "پڑتال کریں کہ اطلاقیہ اطلاع دکھا سکتا ہے" + "یہ اطلاع نہیں دبائی گئی" + "اطلاع ظاہر نہیں کرسکتا" + "یہ اطلاع دبا دی گئی ہے!" + "اطلاع دکھائیں" + "برائے مہربانی جانچ جاری رکھنے کیلئے اطلاع پر دبائیں" + "اس بات کو یقینی بنائیں کہ اطلاقیے کو دھکا موصول ہو رہا ہے۔" + "نقص: دھکا کنندہ نے درخواست مسترد کردی ہے۔" + "نقص: %1$s۔" + "نقص، دھکا جانچ نہیں سکتا" + "نقص، دھکے کے انتظار میں نفذ الوقت" + "دھکئی حلقۂ رجوعیہ نے %1$d مث لیا" + "دھکئی حلقۂ رجوعیہ جانچیں" + diff --git a/libraries/pushproviders/firebase/src/main/res/values-pt-rBR/translations.xml b/libraries/pushproviders/firebase/src/main/res/values-pt-rBR/translations.xml new file mode 100644 index 0000000000..3d7dcf4dd4 --- /dev/null +++ b/libraries/pushproviders/firebase/src/main/res/values-pt-rBR/translations.xml @@ -0,0 +1,11 @@ + + + "Certifique-se de que o Firebase esteja disponível." + "O Firebase não está disponível." + "O Firebase está disponível." + "Verifique o Firebase" + "Certifique-se de que o token do Firebase esteja disponível." + "O token do Firebase não é conhecido." + "Token do Firebase: %1$s." + "Verifique o token do Firebase" + diff --git a/libraries/pushproviders/firebase/src/main/res/values-ur/translations.xml b/libraries/pushproviders/firebase/src/main/res/values-ur/translations.xml new file mode 100644 index 0000000000..22605af3ca --- /dev/null +++ b/libraries/pushproviders/firebase/src/main/res/values-ur/translations.xml @@ -0,0 +1,11 @@ + + + "یقینی بنائیں کہ Firebase دستیاب ہے۔" + "Firebase دستیاب نہیں ہے۔" + "Firebase دستیاب ہے۔" + "Firebase کی پڑتال کریں" + "یقینی بنائیں کہ Firebase رمزِ ممیز دستیاب ہے۔" + "Firebase رمزِ ممیز معلوم نہیں ہے۔" + "Firebase رمزِ ممیز:%1$s۔" + "Firebase رمزِ ممیز کی پڑتال کریں" + diff --git a/libraries/pushproviders/unifiedpush/src/main/res/values-cy/translations.xml b/libraries/pushproviders/unifiedpush/src/main/res/values-cy/translations.xml index 38ccabb307..1a46d85451 100644 --- a/libraries/pushproviders/unifiedpush/src/main/res/values-cy/translations.xml +++ b/libraries/pushproviders/unifiedpush/src/main/res/values-cy/translations.xml @@ -2,5 +2,13 @@ "Sicrhewch fod dosbarthwyr UnifiedPush ar gael." "Heb ganfod dosbarthwyr gwthio." + + "Wedi canfod %1$d dosbarthwyr: %2$s" + "Wedi canfod %1$d dosbarthwr: %2$s" + "Wedi canfod %1$d dosbarthwr: %2$s" + "Wedi canfod %1$d dosbarthwr: %2$s" + "Wedi canfod %1$d dosbarthwr: %2$s" + "Wedi canfod %1$d dosbarthwr: %2$s" + "Gwiriwch UnifiedPush" diff --git a/libraries/pushproviders/unifiedpush/src/main/res/values-pt-rBR/translations.xml b/libraries/pushproviders/unifiedpush/src/main/res/values-pt-rBR/translations.xml new file mode 100644 index 0000000000..4f7a8726ce --- /dev/null +++ b/libraries/pushproviders/unifiedpush/src/main/res/values-pt-rBR/translations.xml @@ -0,0 +1,10 @@ + + + "Certifique-se de que os distribuidores do UnifiedPush estejam disponíveis." + "Nenhum distribuidor push encontrado." + + "%1$d distribuidor encontrado: %2$s." + "%1$d Distribuidores encontrados: %2$s." + + "Verifique o UnifiedPush" + diff --git a/libraries/pushproviders/unifiedpush/src/main/res/values-ur/translations.xml b/libraries/pushproviders/unifiedpush/src/main/res/values-ur/translations.xml new file mode 100644 index 0000000000..4e74d70cb7 --- /dev/null +++ b/libraries/pushproviders/unifiedpush/src/main/res/values-ur/translations.xml @@ -0,0 +1,10 @@ + + + "یقینی بنائیں کہ UnifiedPush تقسیم کاران دستیاب ہیں۔" + "کوئی دھکا تقسیم کاران نہیں ملے۔" + + "%1$d تقسیم کار ملا: %2$s۔" + "%1$d تقسیم کاران ملے: %2$s۔" + + "UnifiedPush کی پڑتال کریں" + diff --git a/libraries/textcomposer/impl/src/main/res/values-de/translations.xml b/libraries/textcomposer/impl/src/main/res/values-de/translations.xml index f7636f4137..3aaf904065 100644 --- a/libraries/textcomposer/impl/src/main/res/values-de/translations.xml +++ b/libraries/textcomposer/impl/src/main/res/values-de/translations.xml @@ -12,7 +12,7 @@ "Link bearbeiten" "Fettes Format anwenden" "Kursives Format anwenden" - "Durchgestrichenes Format anwenden" + "Text durchstreichen" "Unterstreichungsformat anwenden" "Vollbildmodus umschalten" "Einrückung" diff --git a/libraries/textcomposer/impl/src/main/res/values-pt-rBR/translations.xml b/libraries/textcomposer/impl/src/main/res/values-pt-rBR/translations.xml index 592050a625..3ad1ed5a10 100644 --- a/libraries/textcomposer/impl/src/main/res/values-pt-rBR/translations.xml +++ b/libraries/textcomposer/impl/src/main/res/values-pt-rBR/translations.xml @@ -4,7 +4,10 @@ "Alternar lista de marcadores" "Fechar opções de formatação" "Alternar bloco de código" + "Adicionar uma legenda" + "Mensagem criptografada…" "Mensagem…" + "Mensagem não criptografada…" "Criar um link" "Editar link" "Aplicar negrito" diff --git a/libraries/textcomposer/impl/src/main/res/values-ur/translations.xml b/libraries/textcomposer/impl/src/main/res/values-ur/translations.xml new file mode 100644 index 0000000000..9ed333b924 --- /dev/null +++ b/libraries/textcomposer/impl/src/main/res/values-ur/translations.xml @@ -0,0 +1,25 @@ + + + "منسلکہ شامل کریں" + "گولئی فہرست تبدیل کریں" + "تنسیق کے اختیارات بند کریں" + "رمز بلاک تبدیل کریں" + "پیغام…" + "ایک ربط بنائیں" + "ربط میں ترمیم کریں" + "جلی وضع لاگو کریں" + "ترچھی وضع لاگو کریں" + "مشطوب وضع لاگو کریں" + "مسطر وضع لاگو کریں" + "مکمل نمایشگر وضع تبدیل کریں" + "حاشیہ" + "درخط رمز وضع تبدیل کریں" + "ربط متعین کریں" + "عددی فہرست تبدیل کریں" + "تحریر کے اختیارات کھولیں" + "حوالہ تبدیل کریں" + "ربط ہٹائیں" + "غیر حاشیہ" + "ربط" + "ثبت کرنے کیلئے دبا کر رکھیں" + diff --git a/libraries/troubleshoot/impl/src/main/res/values-pt-rBR/translations.xml b/libraries/troubleshoot/impl/src/main/res/values-pt-rBR/translations.xml index 66f6e46cb3..6990ca5dbe 100644 --- a/libraries/troubleshoot/impl/src/main/res/values-pt-rBR/translations.xml +++ b/libraries/troubleshoot/impl/src/main/res/values-pt-rBR/translations.xml @@ -1,4 +1,12 @@ + "Histórico de push" "Execute testes" + "Execute os testes novamente" + "Alguns testes falharam. Verifique os detalhes." + "Execute os testes para detetar qualquer problema na sua configuração que possa fazer com que as notificações não se comportem como esperado." + "Tentativa de corrigir" + "Todos os testes foram aprovados com sucesso." + "Solucionar problemas de notificações" + "Alguns testes exigem sua atenção. Verifique os detalhes." diff --git a/libraries/troubleshoot/impl/src/main/res/values-pt/translations.xml b/libraries/troubleshoot/impl/src/main/res/values-pt/translations.xml index d6972ebc6a..d82bbd2e15 100644 --- a/libraries/troubleshoot/impl/src/main/res/values-pt/translations.xml +++ b/libraries/troubleshoot/impl/src/main/res/values-pt/translations.xml @@ -1,5 +1,6 @@ + "Histórico de notificações" "Correr testes" "Correr testes novamente" "Alguns testes falharam. Por favor, verifica os detalhes." diff --git a/libraries/troubleshoot/impl/src/main/res/values-ur/translations.xml b/libraries/troubleshoot/impl/src/main/res/values-ur/translations.xml new file mode 100644 index 0000000000..509d332d3d --- /dev/null +++ b/libraries/troubleshoot/impl/src/main/res/values-ur/translations.xml @@ -0,0 +1,11 @@ + + + "جانچہا چلائیں" + "جانچہا دوبارہ چلائیں" + "کچھ جانچیں ناکام۔ برائے مہربانی تفصیلات پڑتال کریں۔" + "اپنی تکوین میں کسی بھی مسئلے کا کھوج لگانے کے لیے جانچ ہا چلائیں جس سے اطلاعات توقع کے مطابق برتاؤ نہ کریں۔" + "ٹھیک کرنے کی کوشش کریں" + "تمام جانچیں کامیابی سے گزاریں ہیں۔" + "اطلاعات کا ازالہ کریں" + "کچھ جانچوں کیلئے آپکی توجہ درکار ہے۔ برائے مہربانی تفصیلات پڑتال کریں۔" + diff --git a/libraries/troubleshoot/impl/src/main/res/values-zh-rTW/translations.xml b/libraries/troubleshoot/impl/src/main/res/values-zh-rTW/translations.xml index 64362a6281..4249f8ae5b 100644 --- a/libraries/troubleshoot/impl/src/main/res/values-zh-rTW/translations.xml +++ b/libraries/troubleshoot/impl/src/main/res/values-zh-rTW/translations.xml @@ -1,5 +1,6 @@ + "推播通知歷史紀錄" "執行測試" "再次執行測試" "部份測試失敗。請檢查詳細資訊。" diff --git a/libraries/ui-strings/src/main/res/values-cy/translations.xml b/libraries/ui-strings/src/main/res/values-cy/translations.xml index 893bb71a1f..865c51f741 100644 --- a/libraries/ui-strings/src/main/res/values-cy/translations.xml +++ b/libraries/ui-strings/src/main/res/values-cy/translations.xml @@ -2,6 +2,14 @@ "Afatar" "Dileu" + + "%1$d nodau wedi eu cynnig" + "%1$d nod wedi ei gynnig" + "%1$d nod wedi ei gynnig" + "%1$d nod wedi ei gynnig" + "%1$d nod wedi ei gynnig" + "%1$d nod wedi eu cynnig" + "Cuddio cyfrinair" "Ymuno â galwad" "Symud i\'r gwaelod" @@ -17,6 +25,14 @@ "Ymateb gyda %1$s" "Ymateb gydag emojis eraill" "Wedi\'i ddarllen gan %1$s a %2$s" + + "Wedi\'i ddarllen gan %1$s a %2$d arall" + "Wedi\'i ddarllen gan %1$s a %2$d arall" + "Wedi\'i ddarllen gan %1$s a %2$d arall" + "Wedi\'i ddarllen gan %1$s a %2$d arall" + "Wedi\'i ddarllen gan %1$s a %2$d arall" + "Wedi\'i ddarllen gan %1$s a %2$d arall" + "Wedi\'i ddarllen gan %1$s" "Tapio i ddangos y cyfan" "Wedi dileu adwaith gyda %1$s" @@ -190,6 +206,22 @@ Rheswm: %1$s." "Dolen wedi\'i chopïo i\'r clipfwrdd" "Yn Llwytho…" "Wrthi\'n llwytho mwy…" + + "%d arall" + "%d arall" + "%d arall" + "%d arall" + "%d arall" + "%d arall" + + + "%1$d aelodau" + "%1$d aelod" + "%1$d aelod" + "%1$d aelod" + "%1$d aelod" + "%1$d aelod" + "Neges" "Gweithredoedd neges" "Cynllun y neges" @@ -214,6 +246,14 @@ Rheswm: %1$s." "Pleidlais: %1$s" "Cyfanswm y pleidleisiau: %1$s" "Bydd y canlyniadau\'n dangos ar ôl i\'r bleidlais ddod i ben" + + "%d pleidleisiau" + "%d pleidlais" + "%d pleidlais" + "%d pleidlais" + "%d pleidlais" + "%d pleidlais" + "Polisi preifatrwydd" "Adwaith" "Adweithiau" @@ -346,6 +386,14 @@ Ydych chi\'n siŵr eich bod am barhau?" "Wedi methu llwytho cyfryngau, ceisiwch eto." "Pwyswch ar neges a dewis “%1$s” i\'w cynnwys yma." "Pinio negeseuon pwysig fel y mae modd eu darganfod yn hawdd" + + "%1$d Negeseuon wedi\'u pinio" + "%1$d Neges wedi\'i phinio" + "%1$d Neges wedi\'i phinio" + "%1$d Neges wedi\'i phinio" + "%1$d Neges wedi\'i phinio" + "%1$d Neges wedi\'i phinio" + "Negeseuon wedi\'u pinio" "Rydych chi ar fin mynd i\'ch cyfrif %1$s i ailosod eich hunaniaeth. Wedi hynny byddwch yn cael eich tywys yn ôl i\'r ap." "Methu cadarnhau? Ewch i\'ch cyfrif i ailosod eich hunaniaeth." diff --git a/libraries/ui-strings/src/main/res/values-de/translations.xml b/libraries/ui-strings/src/main/res/values-de/translations.xml index 84fb72c9f3..0e483c85e4 100644 --- a/libraries/ui-strings/src/main/res/values-de/translations.xml +++ b/libraries/ui-strings/src/main/res/values-de/translations.xml @@ -77,8 +77,8 @@ "Zurück" "Ignorieren" "Einladen" - "Personen einladen" - "Zu %1$s einladen" + "Nutzer einladen" + "Lade Personen in %1$s ein" "Lade Personen in %1$s ein" "Einladungen" "Beitreten" @@ -191,7 +191,7 @@ Grund: %1$s." "Bild" "Als Antwort auf %1$s" "APK installieren" - "Diese Matrix-ID kann nicht gefunden werden, daher wird die Einladung möglicherweise nicht empfangen." + "Diese Matrix Kennung wurde nicht gefunden, daher wird die Einladung möglicherweise nicht empfangen." "Raum verlassen" "Hell" "Zeile in die Zwischenablage kopiert" @@ -229,7 +229,7 @@ Grund: %1$s." "Bist du sicher, dass du diese Umfrage beenden möchtest?" "Umfrage: %1$s" "Stimmen insgesamt: %1$s" - "Die Ergebnisse werden nach Ende der Umfrage angezeigt" + "Ergebnisse werden nach Ende der Umfrage angezeigt" "%d Stimme" "%d Stimmen" diff --git a/libraries/ui-strings/src/main/res/values-eu/translations.xml b/libraries/ui-strings/src/main/res/values-eu/translations.xml index a6c62b83dd..a0fb445a4e 100644 --- a/libraries/ui-strings/src/main/res/values-eu/translations.xml +++ b/libraries/ui-strings/src/main/res/values-eu/translations.xml @@ -9,6 +9,7 @@ "Mutututa" "%1$d. orria" "Eten" + "Ahots-mezua, iraupena: %1$s, uneko posizioa: %2$s" "PINaren eremua" "Erreproduzitu" "Inkesta" @@ -28,6 +29,7 @@ "Hasi dei bat" "Erabiltzailea-menua" "Ikusi xehetasunak" + "Ahots-mezua, iraupena: %1$s" "Grabatu ahots-mezua." "Utzi grabatzeari" "Onartu" @@ -103,6 +105,7 @@ "Salatu" "Eman errore baten berri" "Salatu edukia" + "Salatu elkarrizketa" "Salatu gela" "Berrezarri" "Berrezarri identitatea" @@ -131,6 +134,7 @@ "Ikusi iturburua" "Bai" "Bai, saiatu berriro" + "Orain zure zerbitzaria protokolo berri eta azkarrago batekin da bateragarria. Amaitu saioa eta hasi berriro protokolo berria erabiltzeko. Orain eginez gero, etorkizunean protokolo zaharra kentzen denean ez zaizu behartutako saioa ixtera." "Bertsio-berritzea eskuragarri" "Honi buruz" "Testua gehitzen" @@ -213,6 +217,7 @@ Arrazoia: %1$s." "Esteka iraunkorra" "Baimena" "Finkatuta" + "Egiaztatu Interneteko konexioa" "Itxaron…" "Ziur inkesta hau amaitu nahi duzula?" "Inkesta:%1$s" @@ -290,6 +295,7 @@ Arrazoia: %1$s." "%1$s(r)en %2$s identitatea berrezarri da. %3$s" "%1$s(r)en identitatea berrezarri da." "%1$s(r)en %2$s identitatea berrezarri da. %3$s" + "Egiaztatu honako esteka" "Gela salatu da" "Gela salatu eta utzi da" "Baieztapena" diff --git a/libraries/ui-strings/src/main/res/values-fi/translations.xml b/libraries/ui-strings/src/main/res/values-fi/translations.xml index df9098e801..d482f465eb 100644 --- a/libraries/ui-strings/src/main/res/values-fi/translations.xml +++ b/libraries/ui-strings/src/main/res/values-fi/translations.xml @@ -355,6 +355,11 @@ Haluatko varmasti jatkaa?" "Poista huoneesta" "Poistetaanko jäsen huoneesta ja kielletäänkö heitä liittymästä tulevaisuudessa?" "Poistetaan käyttäjää %1$s huoneesta…" + "Poista porttikielto huoneesta" + "Poista porttikielto" + "He voivat liittyä huoneeseen uudelleen, jos heidät kutsutaan" + "Haluatko varmasti poistaa tämän jäsenen porttikiellon?" + "Poistetaan käyttäjän %1$s porttikieltoa" "Median valinta epäonnistui, yritä uudelleen." "Kuvatekstit eivät välttämättä näy ihmisille, jotka käyttävät vanhempia sovelluksia." "Median käsittely epäonnistui, yritä uudelleen." diff --git a/libraries/ui-strings/src/main/res/values-pt-rBR/translations.xml b/libraries/ui-strings/src/main/res/values-pt-rBR/translations.xml index 9e118de08d..f73041b2a7 100644 --- a/libraries/ui-strings/src/main/res/values-pt-rBR/translations.xml +++ b/libraries/ui-strings/src/main/res/values-pt-rBR/translations.xml @@ -138,8 +138,11 @@ "Ver fonte" "Sim" "Sim, tentar novamente" + "Seu servidor agora é compatível com um protocolo novo e mais rápido. Faça logout e login novamente para atualizar agora. Fazendo isso agora, você evitará um logout forçado quando o protocolo antigo for removido mais tarde." + "Atualização disponível" "Sobre" "Política de uso aceitável" + "Adicionando legenda" "Configurações avançadas" "Telemetria" "Aparência" @@ -148,27 +151,42 @@ "Bolhas" "Chamada iniciada" "Backup de conversas" + "Copiado para a área de transferência" "Direitos autorais" "Criando sala…" + "Solicitação cancelada" "Saiu da sala" + "Convite recusado" "Escuro" "Erro de descriptografia" "Opções do desenvolvedor" + "ID do dispositivo" "Conversa privada" "Não mostrar isto novamente" + "O download falhou" + "Baixando" "(editado)" "Editando" + "Editando legenda" "* %1$s %2$s" + "Arquivo vazio" + "Criptografia" "Criptografia ativada" "Insira seu PIN" "Erro" + "Ocorreu​ um ​erro, você ​pode ​não ​receber ​notificações ​de ​novas ​mensagens. ​Você ​pode ​solucionar ​o ​problema ​das ​notificações ​nas ​configurações.↵ +↵ +Motivo:​ %1$s." "Todos" "Falhou" "Favorito" "Favoritado" "Arquivo" + "Arquivo excluído" + "Arquivo salvo" "Arquivo salvo em Downloads" "Encaminhar mensagem" + "Frequentemente usado" "GIF" "Imagem" "Em resposta a %1$s" @@ -176,8 +194,10 @@ "Este ID Matrix não foi encontrado, então o convite pode não ser recebido" "Saindo da sala" "Claro" + "Linha copiada para a área de transferência" "Link copiado para área de transferência" "Carregando…" + "Carregando mais…" "%d outro" "%d outros" @@ -192,8 +212,10 @@ "Mensagem removida" "Moderno" "Silenciar" + "%1$s (%2$s)" "Sem resultados" "Sem nome de sala" + "Não criptografado" "Offline" "Licenças de código aberto" "ou" @@ -201,6 +223,8 @@ "Pessoas" "Link permanente" "Permissão" + "Fixo" + "Verifique sua conexão com a Internet" "Por favor, aguarde…" "Tem certeza de que deseja encerrar esta enquete?" "Enquete: %1$s" @@ -213,6 +237,7 @@ "Política de Privacidade" "Reação" "Reações" + "Motivo" "Chave de recuperação" "Atualizando…" "Respondendo a %1$s" @@ -240,6 +265,7 @@ "Localização compartilhada" "Saindo" "Algo deu errado" + "Encontramos um problema. Tente novamente." "Iniciando o chat…" "Adesivo" "Sucesso" @@ -252,27 +278,47 @@ "Tópico" "Sobre o que é essa sala?" "Não é possível descriptografar" + "Enviado de um dispositivo inseguro" "Você não tem acesso a esta mensagem" + "A identidade verificada do remetente foi redefinida" "Não foi possível enviar convites para um ou mais usuários." "Não foi possível enviar o(s) convite(s)" "Desbloquear" "Desmutar" + "Chamada sem compatibilidade" "Evento não suportado" "Nome do usuário" "Verificação cancelada" "Verificação concluída" + "A verificação falhou" + "Verificado" "Verificar dispositivo" + "Verificar identidade" + "Verificar usuário" "Vídeo" "Mensagem de voz" "Esperando…" "Aguardando esta mensagem" "Você" + "A identidade de %1$s foi redefinida. %2$s" + "A identidade de %1$s em %2$s foi redefinida. %3$s" + "(%1$s)" + "A identidade de %1$s foi redefinida." + "Identidade de %1$s no %2$s foi redefinida. %3$s" + "Retirar verificação" + "O link %1$s está levando você para outro site %2$s + +Você tem certeza de que deseja continuar?" + "Verifique novamente este link" + "Sala denunciada" + "Denunciou e deixou a sala" "Confirmação" "Erro" "Sucesso" "Aviso" "Suas alterações não foram salvas. Tem certeza de que você quer voltar?" "Salvar alterações?" + "Seu servidor doméstico precisa ser atualizado para oferecer suporte ao Matrix Authentication Service e à criação de contas." "Falha ao criar o link permanente" "%1$s não conseguiu carregar o mapa. Por favor, tente novamente mais tarde." "Falha ao carregar mensagens" @@ -282,8 +328,14 @@ "%1$s não tem permissão para acessar sua localização. Você pode ativar o acesso nas Configurações." "%1$s não tem permissão para acessar sua localização. Habilite o acesso abaixo." "%1$s não tem permissão para acessar seu microfone. Permita o acesso para gravar uma mensagem de voz." + "Isso pode ocorrer devido a problemas na rede ou no servidor." + "Este endereço de sala já existe. Tente editar o campo de endereço da sala ou alterar o nome da sala" + "Alguns caracteres não são permitidos. Somente letras, dígitos e os seguintes símbolos são aceitos ! $ & ‘ ( ) * + / ; = ? @ [ ] - . _" "Algumas mensagens não foram enviadas" "Desculpe, ocorreu um erro" + "A autenticidade desta mensagem criptografada não pode ser garantida neste aparelho." + "Criptografado por um usuário previamente verificado." + "Não criptografado." "Criptografada por um dispositivo desconhecido ou apagado." "Criptografado por um dispositivo que não foi verificado pelo seu dono." "Criptografado por um usuário não verificado." @@ -296,22 +348,58 @@ "Eles não poderão entrar nesta sala novamente se forem convidados." "Tem certeza de que quer banir este membro?" "Banindo %1$s" + "Remover" + "Eles poderão entrar nesta sala novamente se forem convidados." + "Tem certeza de que deseja remover este membro?" "Ver perfil" "Remover da sala" "Remover membro e banir de entrar novamente no futuro?" "Removendo %1$s…" "Falha ao selecionar a mídia, tente novamente." + "As legendas podem não ser visíveis para pessoas que usam aplicativos mais antigos." "Falha ao processar mídia para upload. Tente novamente." "Falha ao enviar mídia. Tente novamente." + "Pressione em uma mensagem e escolha \"%1$s\" para incluir aqui." + "Fixe mensagens importantes para que elas possam ser facilmente descobertas" + + "%1$d Mensagem fixada" + "%1$d Mensagens fixadas" + + "Mensagens fixadas" + "Você está prestes a acessar sua conta %1$s para redefinir sua identidade. Depois disso, você será levado de volta ao aplicativo." + "Não consegue confirmar? Acesse sua conta para redefinir sua identidade." + "Retire a verificação e envie" + "Você pode retirar sua verificação e enviar esta mensagem mesmo assim, ou pode cancelar por enquanto e tentar novamente mais tarde depois de reverificar %1$s." + "Sua mensagem não foi enviada porque a identidade verificada de %1$s foi redefinida" + "Enviar mensagem mesmo assim" + "%1$s está usando um ou mais dispositivos não verificados. Você pode enviar a mensagem de qualquer maneira, ou você pode cancelar por enquanto e tentar novamente mais tarde depois que %2$s tiver verificado todos os seus dispositivos." + "Sua mensagem não foi enviada porque %1$s não verificou todos os dispositivos" + "Um ou mais de seus dispositivos não foram verificados. Você pode enviar a mensagem mesmo assim ou pode cancelar por enquanto e tentar novamente mais tarde, depois de ter verificado todos os seus dispositivos." + "Sua mensagem não foi enviada porque você não verificou um ou mais de seus dispositivos" "Falha ao processar mídia para upload. Tente novamente." "Não foi possível recuperar os detalhes do usuário" + "Mensagem em %1$s" + "%1$s de %2$s" + "%1$s Mensagens fixadas" + "Carregando mensagem…" + "Ver tudo" + "Bate-papo" + "Pedido de adesão enviado" "Compartilhar localização" "Compartilhar minha localização" "Abrir no Apple Maps" "Abrir no Google Maps" "Abrir no OpenStreetMap" "Compartilhe esta localização" + "Mensagem não enviada porque a identidade verificada de %1$s foi redefinida." + "A mensagem não foi enviada porque %1$s não verificou todos os dispositivos." + "Mensagem não enviada porque você não verificou um ou mais dos seus dispositivos." "Localização" "Versão: %1$s (%2$s)" "pt-br" + "As mensagens históricas não estão disponíveis neste dispositivo" + "Você precisa verificar este dispositivo para ter acesso a mensagens históricas" + "Você não tem acesso a esta mensagem" + "Não foi possível descriptografar a mensagem" + "Esta mensagem foi bloqueada porque você não verificou seu dispositivo ou porque o remetente precisa verificar sua identidade." diff --git a/libraries/ui-strings/src/main/res/values-pt/translations.xml b/libraries/ui-strings/src/main/res/values-pt/translations.xml index 0f0a498551..d1cf2a258f 100644 --- a/libraries/ui-strings/src/main/res/values-pt/translations.xml +++ b/libraries/ui-strings/src/main/res/values-pt/translations.xml @@ -1,16 +1,19 @@ + "Avatar" "Eliminar" "%1$d dígito inserido" "%1$d dígitos inseridos" "Ocultar senha" + "Juntar-se à chamada" "Saltar para o fundo" "Apenas menções" "Silenciado" "Página %1$d" "Pausar" + "Mensagem de voz, duração: %1$s, posição atual: %2$s" "Campo para PIN" "Reproduzir" "Sondagem" @@ -30,6 +33,7 @@ "Iniciar chamada" "Menu de utilizador" "Ver detalhes" + "Mensagem de voz, duração: %1$s" "Gravar mensagem de voz." "Parar gravação" "Aceitar" @@ -56,9 +60,11 @@ "Desativar" "Desativar conta" "Rejeitar" + "Recusar e bloquear" "Eliminar sondagem" "Desativar" "Descartar" + "Dispensar" "Feito" "Editar" "Editar legenda" @@ -100,8 +106,11 @@ "Remover mensagem" "Responder" "Responder ao tópico" + "Reportar" "Comunicar problema" "Denunciar conteúdo" + "Denunciar conversa" + "Denunciar sala" "Repor" "Repor identidade" "Tentar novamente" @@ -147,7 +156,7 @@ "A criar sala…" "Pedido cancelado" "Saíste da sala" - "Convite recusado" + "Convite rejeitado" "Escuro" "Erro de decifragem" "Opções de programador" @@ -206,6 +215,7 @@ Razão: %1$s." "%1$s (%2$s)" "Sem resultados" "Sala sem nome" + "Não encriptado" "Desligado" "Licenças de código aberto" "ou" @@ -214,6 +224,7 @@ Razão: %1$s." "Ligação permanente" "Permissão" "Afixado" + "Por favor, verifica a tua ligação à Internet" "Por favor, aguarde…" "Tens a certeza que queres concluir esta sondagem?" "Sondagem: %1$s" @@ -226,6 +237,7 @@ Razão: %1$s." "Política de privacidade" "Reação" "Reações" + "Motivo" "Chave de recuperação" "A atualizar…" "Em resposta a %1$s" @@ -253,6 +265,7 @@ Razão: %1$s." "Localização partilhada" "A terminar sessão" "Algo correu mal" + "Encontrámos um erro. Por favor, tenta novamente." "A iniciar conversa…" "Autocolante" "Sucesso" @@ -297,6 +310,8 @@ Razão: %1$s." Tens a certeza de que queres continuar?" "Verifica novamente esta ligação" + "Sala denunciada" + "Sala denunciada e abandonada" "Confirmação" "Erro" "Sucesso" @@ -333,11 +348,18 @@ Tens a certeza de que queres continuar?" "Não poderão voltar a entrar nesta sala, mesmo se forem convidados." "Tens a certeza que queres banir este participante?" "A banir %1$s" + "Remover" "Poderão entrar na sala novamente se convidados." + "Tens a certeza que queres remover este membro?" "Ver perfil" "Remover da sala" "Remover participante e proibir que entre no futuro?" "A remover %1$s…" + "Anular banimento da sala" + "Anular banimento" + "Poderão entrar novamente na sala se forem convidados" + "Tens a certeza que queres anular o banimento deste utilizador?" + "A anular banimento de %1$s" "Falha ao selecionar multimédia, por favor tente novamente." "As legendas poderão não ser visíveis em versões mais antigas da aplicação." "Falha ao processar multimédia para carregamento, por favor tente novamente." diff --git a/libraries/ui-strings/src/main/res/values-sv/translations.xml b/libraries/ui-strings/src/main/res/values-sv/translations.xml index c1293e73d2..75333d408e 100644 --- a/libraries/ui-strings/src/main/res/values-sv/translations.xml +++ b/libraries/ui-strings/src/main/res/values-sv/translations.xml @@ -355,6 +355,11 @@ Anledning:%1$s." "Ta bort från rummet" "Ta bort medlem och banna från att gå med i framtiden?" "Tar bort %1$s …" + "Avbanna från rummet" + "Avbanna" + "De skulle kunna gå med i rummet igen om de blev inbjudna" + "Är du säker på att du vill avbanna den här medlemmen?" + "Avbannar %1$s" "Misslyckades att välja media, vänligen pröva igen." "Bildtexter kanske inte är synliga för personer som använder äldre appar." "Misslyckades att bearbeta media för uppladdning, vänligen pröva igen." diff --git a/libraries/ui-strings/src/main/res/values-uk/translations.xml b/libraries/ui-strings/src/main/res/values-uk/translations.xml index c563417e93..69c5104375 100644 --- a/libraries/ui-strings/src/main/res/values-uk/translations.xml +++ b/libraries/ui-strings/src/main/res/values-uk/translations.xml @@ -360,6 +360,11 @@ "Вилучити з кімнати" "Вилучити учасника та заборонити приєднання в майбутньому?" "Вилучення %1$s…" + "Розблокувати в кімнаті" + "Розблокувати" + "Вони зможуть знову приєднатися до кімнати, якщо їх запросять" + "Ви впевнені, що хочете розблокувати цього учасника?" + "Розблокування %1$s" "Не вдалося вибрати медіафайл, спробуйте ще раз." "Користувачі старих застосунків можуть не бачити підписи." "Не вдалося обробити медіафайл для завантаження, спробуйте ще раз." diff --git a/libraries/ui-strings/src/main/res/values-ur/translations.xml b/libraries/ui-strings/src/main/res/values-ur/translations.xml new file mode 100644 index 0000000000..56864f29b1 --- /dev/null +++ b/libraries/ui-strings/src/main/res/values-ur/translations.xml @@ -0,0 +1,307 @@ + + + "حذف کریں" + + "%1$d ہندسہ درج" + "%1$d ہندسے درج" + + "لفظ عبور چھپائیں" + "نیچے چھلانگ لگائیں" + "صرف تذکرے" + "خاموش" + "صفحہ %1$d" + "متوقف" + "PIN میدان" + "چلائیں" + "رائے شماری" + "رائے شماری ختم کردی" + "%1$s کے ساتھ رد عمل کریں" + "دیگر رموز تعبیری سے رد عمل کریں" + "%1$s اور %2$s نے پڑھا" + + "%1$s اور %2$d دیگر نے پڑھا" + "%1$s اور %2$d دیگر نے لڑھا" + + "%1$s نے پڑھا" + "سب دکھانے کے لیے تھپتھپائیں" + "%1$s کے ساتھ رد عمل ہٹائیں" + "مسلیں بھیجیں" + "لفظ عبور دکھائیں" + "مکالمہ شروع کریں" + "لائحۂ صارف" + "صوتی پیغام ثبت کریں۔" + "ثبت کاری بند کریں" + "قبول کریں" + "جدول زمانی میں شامل کریں" + "واپس" + "مکالمہ کریں" + "منسوخ کریں" + "تصویر چنیں" + "صاف کریں" + "بند کریں" + "توثیق مکمل کریں" + "تصدیق کریں" + "جاری رکھیں" + "نقل" + "ربط نقل کریں" + "پیغام کا ربط نقل کریں" + "تخلیق کریں" + "ایک کمرہ بنائیں" + "مسترد کریں" + "رائے شماری حذف کریں" + "غیر فعال کریں" + "رد کریں" + "ہوگیا" + "تدوین کریں" + "رائے شماری میں ترمیم کریں" + "فعال کریں" + "رائے شماری ختم کریں" + "‏PIN درج کریں" + "لفظِ عبور بھول گئے؟" + "آگے کریں" + "واپس جائیں" + "مدعو کریں" + "لوگوں کو مدعو کریں" + "لوگوں کو %1$s پر مدعو کریں" + "لوگوں کو %1$s پر مدعو کریں" + "دعوت نامے" + "شامل ہوں" + "مزید جانئے" + "چھوڑ دیں" + "گفتگو چھوڑیں" + "کمرہ چھوڑ دیں" + "مزید لادیں" + "کھاتہ کا انتظام کریں" + "آلات کا نظم کریں" + "ارسال" + "اگلا" + "نہیں" + "ابھی نہیں" + "ٹھیک" + "ترتیبات" + "کھولیں مع" + "تثبیت کریں" + "فوری جواب" + "حوالہ دیں" + "رد عمل" + "مسترد کریں" + "ہٹائیں" + "جواب دیں" + "دھاگے میں جواب دیں" + "خطاء کی اطلاع دیں" + "مواد کی اطلاع دیں" + "بحال کریں" + "شناخت بحال کر دیں" + "پھر کوشش کریں" + "رمزکشائی کی پھر کوشش کریں" + "محفوظ کریں" + "تلاش کریں" + "بھیجیں" + "پیغام بھیجیں" + "اشتراک کریں" + "ربط کا اشتراک کریں" + "دوبارہ داخل ہوں" + "خارج ہوں" + "بہرحال خارج ہوں" + "چھوڑیں" + "شروع کریں" + "گفتگو شروع کریں" + "توثیق شروع کریں" + "نقشہ لادنے کیلئے تھپتھپائیں" + "تصویر لیں" + "اختیارات کے لیے تھپتھپائیں" + "دوبارہ کوشش کریں" + "غیر تثبیت کریں" + "ماخذ دیکھیں" + "ہاں" + "بمتعلق" + "قابل قبول استعمال کی سیاست" + "اعلیٰ ترتیبات" + "تجزیات" + "ظہور" + "صوت" + "مسدود صارفین" + "بلبلے" + "مکالمہ شروع" + "گفتگو کا پشتارہ" + "حقوقِ طبع و نشر" + "کمرہ تخلیق کررہاہے…" + "کمرہ چھوڑ لیا" + "اندھیرا" + "رمزکشائی کی خرابی" + "مطور اختیارات" + "براہ راست گفتگو" + "اسے دوبارہ نہ دکھائیں" + "(تدوین شدہ)" + "تدوین" + "* %1$s %2$s" + "مرموزکاری فعال ہے" + "اپنا PIN درج کریں" + "خرابی" + "کوئی نقص واقع ہوا ہے، ہوسکتا ہے کہ آپ کو نئے پیغامات کی اطلاعات موصول نہ ہوں۔ براہ کرم ترتیبات سے اطلاعات کا ازالہ کریں۔ + +وجہ: %1$s۔" + "ہر کوئی" + "ناکام" + "پسندیدہ" + "پسندیدہ" + "مسل" + "مسل تنزیلات میں محفوظ کر دی" + "پیغام آگے بھیجیں" + "GIF" + "تصویر" + "%1$s کے جواب میں" + "APK تنصیب کریں" + "یہ میٹرکس شناخت نہیں مل سکتی، تو ہو سکتا ہے کہ دعوت نامہ موصول نہ ہو۔" + "کمرہ چھوڑنا" + "روشنی" + "ربط تختہ تراشہ پر نقل کردا گیا" + "لاد رہا ہے…" + + "%d دیگر" + "%d دیگر" + + + "%1$d رکن" + "%1$d اراکین" + + "پیغام" + "پیغام کے اعمال" + "ترتیب پیغام" + "پیغام ہٹا دیا گیا" + "جدید" + "خاموش کریں" + "کوئی نتائج نہیں" + "کمرے کا کوئی نام نہیں" + "پرے خط" + "کھلا ماخذ رخصات" + "یا" + "لفظ عبور" + "لوگ" + "مستقل ربط" + "اجازت" + "براہ کرم انتظار کریں…" + "کیا آپ واقعی اس رائے شماری کو ختم کرنا چاہتے ہیں؟" + "رائے شماری: %1$s" + "ک آراء: %1$s" + "رائے شماری ختم ہونے کے بعد نتائج ظاہر ہوں گے" + + "%d رائے" + "%d آراء" + + "سیاستِ نجیت" + "ردعمل" + "ردود عمل" + "بازیابی کی کلید" + "تاکہ کر رہا ہے…" + "%1$s کا جواب دے رہے ہیں" + "ایک خطاء کی اطلاع دیں" + "کسی مسئلے کی اطلاع دیں" + "گزارش جمع ہوگئی" + "امیر مدیرِ متن" + "کمرہ" + "کمرے کا نام" + "e.g. your project name" + "محفوظ شدہ تبدیلیاں" + "محفوظ کر رہا ہے" + "صفحۂ نمائش قفل" + "کسی کیلئے تلاش کریں" + "تلاش کے نتائج" + "حفاظت" + "دیکھا گیا بہ" + "بھیجیں تا" + "بھیج رہا ہے…" + "بھیجنا ناکام" + "ارسال کردہ" + "خادم تعاون یافتہ نہیں" + "خادم عنوان" + "ترتیبات" + "مشترکہ مقام" + "خارج ہو رہا ہے" + "کچھ غلط ہو گیا" + "گفتگو شروع کر رہا ہے۔۔۔" + "برچسب" + "کامیابی" + "تجاویز" + "ہمسات سازی" + "نظام" + "متن" + "فریق ثالث کے اشعارات" + "دھاگہ" + "موضوع" + "یہ کمرہ کس کے بارے میں ہے؟" + "رمزکشائی کرنے سے قاصر" + "آپ کو اس پیغام تک رسائی حاصل نہیں" + "دعوت نامے ایک یا زیادہ صارفین کو نہیں بھیجے جا سکے۔" + "دعوت نامہ بھیجنے سے قاصر" + "غیر مقفل کریں" + "غیر خاموش کریں" + "غیر تعاون یافتہ واقعہ" + "صارف نام" + "توثیق منسوخ کردہ" + "توثیق مکمل" + "آلہ کی توثیق کریں" + "ویڈیو" + "صوتی پیغام" + "منتظر…" + "اس پیغام کا منتظر" + "تصدیق" + "خرابی" + "کامیابی" + "انتباہ" + "آپ کی تبدیلیاں محفوظ نہیں کی گئیں۔ کیا آپ کو یقین ہے کہ آپ واپس جانا چاہتے ہیں؟" + "تبدیلیاں محفوظ کریں؟" + "مستقل ربط تخلیق کرنا ناکام" + "%1$s نقشہ لاد نہیں سکا۔ برائے مہربانی بعد میں دوبارہ کوشش کریں۔" + "پیغامات لادنا ناکام" + "%1$s آپ کے مقام تک رسائی حاصل نہیں کر سکا۔ برائے مہربانی بعد میں دوبارہ کوشش کریں۔" + "آپکا صوتی پیغام رفع کرنے میں ناکام۔" + "پیغام نہیں ملا" + "%1$sآپ کے مقام تک رسائی کی اجازت نہیں ہے۔ آپ ترتیبات میں رسائی کو فعال کر سکتے ہیں۔" + "%1$s کو آپ کے مقام تک رسائی حاصل کرنے کی اجازت نہیں ہے۔ نیچے رسائی کو فعال کریں۔" + "%1$s کو آپ کے صوتگر تک رسائی حاصل کرنے کی اجازت نہیں ہے۔ صوتی پیغام ثبت کرنے کیلئے رسائی فعال کریں۔" + "کچھ پیغامات ارسال نہیں ہوئے" + "معذرت، ایک خرابی واقع ہوگئی" + "اس آلہ پر اس مرموز کردہ پیغام کی صداقت کی ضمانت نہیں دی جا سکتی۔" + "مرموز کردہ نہیں۔" + "کسی نامعلوم یا حذف شدہ آلے کے ذریعے مرموز کردہ۔" + "کسی ایسے آلے کے ذریعے مرموز کردہ جس کی توثیق اسکے مالک سے نہیں ہوئی۔" + "ایک غیر توثیق شدہ صارف کے ذریعے مرموز کردہ۔" + "🔐️ %1$s پر میرے ساتھ شامل ہوں" + "ارے، مجھ سے %1$s پر بات کریں: %2$s" + "%1$s Android" + "خطاء کی اطلاع دینے کیلئے غصے سے ہلائیں" + "کمرے سے محظور کریں" + "محظور کریں" + "اگر وہ مدعو کیا گیا تو وہ دوبارہ اس کمرے میں شامل نہیں ہوسکیں گے۔" + "کیا آپ کو یقین ہے کہ آپ اس رکن کو محظور کرنا چاہتے ہیں؟" + "%1$s کو محظور کر رہا ہے" + "نمایہ ملاحظہ کریں" + "کمرے سے ہٹائیں" + "رکن کو ہٹائیں اور مستقبل میں شمولیت پر پابندی لگائیں؟" + "%1$s کو ہٹا رہا ہے…" + "وسائط منتخب کرنا ناکام، برائے مہربانی دوبارہ کوشش کریں۔" + "وسائط کا معالجہ برائے ترفیع ناکام، برائے مہربانی دوبارہ کوشش کریں۔" + "وسائط رفع کرنے میں ناکام، برائے مہربانی دوبارہ کوشش کریں۔" + + "%1$d مثبوتہ پیغام" + "%1$d مثبوتہ پیغامات" + + "مثبوتہ پیغامات" + "وسائط کا معالجہ برائے ترفیع ناکام، برائے مہربانی دوبارہ کوشش کریں۔" + "صارف کی تفصیلات بازیافت نہیں ہوسکیں" + "%1$s از %2$s" + "%1$s مثبتہ پیغامات" + "پیغام لاد رہا ہے…" + "تمام ملاحظہ کریں" + "گفتگو" + "مقام کا اشتراک کریں" + "میرے مقام کا اشتراک کریں" + "ایپل میپس میں کھولیں" + "گوگل میپس میں کھولیں۔ل" + "اوپن اسٹریٹ میپ میں کھولیں" + "اس مقام کا اشتراک کریں" + "مقام" + "نسخہ %1$s (%2$s)" + "ur" + diff --git a/libraries/ui-strings/src/main/res/values-zh-rTW/translations.xml b/libraries/ui-strings/src/main/res/values-zh-rTW/translations.xml index 7d1e291fa4..eb7ca3eaf2 100644 --- a/libraries/ui-strings/src/main/res/values-zh-rTW/translations.xml +++ b/libraries/ui-strings/src/main/res/values-zh-rTW/translations.xml @@ -107,6 +107,7 @@ "回報" "回報程式錯誤" "檢舉內容" + "回報對話" "回報聊天室" "重設" "重設身份" @@ -259,6 +260,7 @@ "位置分享" "正在登出" "有錯誤發生" + "我們了遇到了問題。請再試一次。" "開始聊天…" "貼圖" "成功" diff --git a/plugins/src/main/kotlin/extension/locales.kt b/plugins/src/main/kotlin/extension/locales.kt index 4af9c3e20b..8e2f9544b9 100644 --- a/plugins/src/main/kotlin/extension/locales.kt +++ b/plugins/src/main/kotlin/extension/locales.kt @@ -33,6 +33,7 @@ val locales = setOf( "sv", "tr", "uk", + "ur", "uz", "zh-rCN", "zh-rTW", diff --git a/screenshots/de/appnav.root_RootView_Day_0_de.png b/screenshots/de/appnav.root_RootView_Day_0_de.png index c6fc025d79..a744d9fe8a 100644 --- a/screenshots/de/appnav.root_RootView_Day_0_de.png +++ b/screenshots/de/appnav.root_RootView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3ef98f89254f7c8e2172d9a340af7983a17b6d944d7305bddc5bd38aad72cc57 -size 26306 +oid sha256:d78407b5a9f4ff3fc9579ca734436fb9096fab35a1edcefd117c6a366a9640a7 +size 26395 diff --git a/screenshots/de/appnav.root_RootView_Day_1_de.png b/screenshots/de/appnav.root_RootView_Day_1_de.png index 72e9d4226b..02cbca77b6 100644 --- a/screenshots/de/appnav.root_RootView_Day_1_de.png +++ b/screenshots/de/appnav.root_RootView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:87b47b5d2e77e45551ba0061d53b9a115e7ee8e6f0b46ef655aa2281017711e4 -size 30334 +oid sha256:4419206d6e95d6de97c7594d19157e93791aee7826fb881d889e1552d10989f5 +size 30785 diff --git a/screenshots/de/features.analytics.api.preferences_AnalyticsPreferencesView_Day_0_de.png b/screenshots/de/features.analytics.api.preferences_AnalyticsPreferencesView_Day_0_de.png index ad60685d5a..d082e89bfc 100644 --- a/screenshots/de/features.analytics.api.preferences_AnalyticsPreferencesView_Day_0_de.png +++ b/screenshots/de/features.analytics.api.preferences_AnalyticsPreferencesView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c7faebef3489d141d6d62159d13824ea700daeb581c31c85b1eeb8900929d3c3 -size 24982 +oid sha256:8725accabc4de494b460b769686787c8e16801ff4249d32e74cde7be013e339e +size 25505 diff --git a/screenshots/de/features.analytics.impl_AnalyticsOptInView_Day_0_de.png b/screenshots/de/features.analytics.impl_AnalyticsOptInView_Day_0_de.png index b62f41bcdd..7f499e1a1f 100644 --- a/screenshots/de/features.analytics.impl_AnalyticsOptInView_Day_0_de.png +++ b/screenshots/de/features.analytics.impl_AnalyticsOptInView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:03557f342210661a094936ed6d24ef23be1c1ccc58752ba717844cb2f120915e -size 84222 +oid sha256:68d4a226ac51845b139f18e51bba0dfc2b9a6bd713a8cb72d379eb9ea9b72818 +size 84909 diff --git a/screenshots/de/features.analytics.impl_AnalyticsOptInView_Day_1_de.png b/screenshots/de/features.analytics.impl_AnalyticsOptInView_Day_1_de.png index 8bcae86780..800f0f03bf 100644 --- a/screenshots/de/features.analytics.impl_AnalyticsOptInView_Day_1_de.png +++ b/screenshots/de/features.analytics.impl_AnalyticsOptInView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e5a6d3e1fafa9aad0e21c4875eeb12daa69a141fcfee07c4650b1702adbaec0a -size 83723 +oid sha256:60cd358c1a76e51a9b4b9a7580a758519aa03618e0f13e3cf6ded80e433a3d1a +size 84184 diff --git a/screenshots/de/features.createroom.impl.addpeople_AddPeopleView_Day_0_de.png b/screenshots/de/features.createroom.impl.addpeople_AddPeopleView_Day_0_de.png index dbe48bd510..4d45624b4a 100644 --- a/screenshots/de/features.createroom.impl.addpeople_AddPeopleView_Day_0_de.png +++ b/screenshots/de/features.createroom.impl.addpeople_AddPeopleView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d67dd602ead4c0c58b91aa388d4b25edfb1cbb083272d68d242f76cba8013206 -size 16813 +oid sha256:c0aaddb6b3cfb442b17c0b2b494ee65127bb0cb7c864849c0c25652f8822f344 +size 15631 diff --git a/screenshots/de/features.createroom.impl.addpeople_AddPeopleView_Day_1_de.png b/screenshots/de/features.createroom.impl.addpeople_AddPeopleView_Day_1_de.png index df53bac8ba..14f820e342 100644 --- a/screenshots/de/features.createroom.impl.addpeople_AddPeopleView_Day_1_de.png +++ b/screenshots/de/features.createroom.impl.addpeople_AddPeopleView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a613158ae574adcf48344204588d854c04bd95cdb3dc6700058f579e64550dd6 -size 26099 +oid sha256:d5d4134ba0b967c7639134044c64251687a44a6066b35f32c1f9f2b64611fc5e +size 25480 diff --git a/screenshots/de/features.createroom.impl.addpeople_AddPeopleView_Day_2_de.png b/screenshots/de/features.createroom.impl.addpeople_AddPeopleView_Day_2_de.png index 6be0101454..57134784b8 100644 --- a/screenshots/de/features.createroom.impl.addpeople_AddPeopleView_Day_2_de.png +++ b/screenshots/de/features.createroom.impl.addpeople_AddPeopleView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5159fcd3015b48386b65380e58600fb0a57a32c2e84d8ccf993ec8d409cc06a3 -size 87784 +oid sha256:0236538a54605f6ebf22a2e13140d0b2c2531f857310ea52ee2dbfc1af83a48c +size 87006 diff --git a/screenshots/de/features.createroom.impl.addpeople_AddPeopleView_Day_3_de.png b/screenshots/de/features.createroom.impl.addpeople_AddPeopleView_Day_3_de.png index 425510fe87..7c7700d4e3 100644 --- a/screenshots/de/features.createroom.impl.addpeople_AddPeopleView_Day_3_de.png +++ b/screenshots/de/features.createroom.impl.addpeople_AddPeopleView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bd241e34e59cb9a80d8fabe4584ea53af7e8f439ea9b8be1e370fe33c6f44f39 -size 44585 +oid sha256:beebb1791d4b326ecab5f90c9a1d1acee6af667687438bf8510f804197848d33 +size 43490 diff --git a/screenshots/de/features.createroom.impl.components_SearchMultipleUsersResultItem_de.png b/screenshots/de/features.createroom.impl.components_SearchMultipleUsersResultItem_de.png index c98f19e6df..47311f0649 100644 --- a/screenshots/de/features.createroom.impl.components_SearchMultipleUsersResultItem_de.png +++ b/screenshots/de/features.createroom.impl.components_SearchMultipleUsersResultItem_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a2f999828c602e2027859231a039e8ae7cbe2ae494e0c988433031f16414aa9f -size 99971 +oid sha256:36c2612774a37b20202d2f6e9132f9fa8aaa65567def256f072dcaa532233659 +size 100794 diff --git a/screenshots/de/features.createroom.impl.components_SearchSingleUserResultItem_de.png b/screenshots/de/features.createroom.impl.components_SearchSingleUserResultItem_de.png index 12537c1811..2b2b08eefe 100644 --- a/screenshots/de/features.createroom.impl.components_SearchSingleUserResultItem_de.png +++ b/screenshots/de/features.createroom.impl.components_SearchSingleUserResultItem_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6576c5c95095d50e1c4b734609bf1e476a80e5f8f6c4c54ed5a6785074281d4b -size 51412 +oid sha256:742bbbcf30ae502a2d13475fc1f2b045bb239cb04995c74deadef630dacfae7d +size 51494 diff --git a/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewDark_0_de.png b/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewDark_0_de.png index 3c7d4bcb43..4afc5c3f0c 100644 --- a/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewDark_0_de.png +++ b/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewDark_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b0658b40ed185ee21c1a750fa7a6912d1c9a98d703dbe2c700eab49de1fa69ec -size 36300 +oid sha256:c86133bc1055fb12fc5648f19d7e9681aec831a6adae6fe1a6c3f4cfd36b3bf7 +size 36334 diff --git a/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewDark_1_de.png b/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewDark_1_de.png index b5d4021ce3..86cdff977b 100644 --- a/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewDark_1_de.png +++ b/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewDark_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e7441b50e55ec94e0b8363c060bb00a48c862402b45641d1bfd5af729ea8c0b7 -size 49172 +oid sha256:d373d4113ea7005d53cfce5e37e81583173d06cc07026b6e06de48d770eba322 +size 49190 diff --git a/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewDark_2_de.png b/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewDark_2_de.png index 9b960d88a8..45cb018e70 100644 --- a/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewDark_2_de.png +++ b/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewDark_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:38b4ef8022df4ec144c1ac6d67efe5d49749f43414ca93e89178d49f2ee68fb2 -size 63170 +oid sha256:255f5f7b25c8bd2460eca7d9acb46d5636e7d6b984d7fcd3d8e1321909682786 +size 63191 diff --git a/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewDark_3_de.png b/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewDark_3_de.png index 0882e41b60..7e692237e9 100644 --- a/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewDark_3_de.png +++ b/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewDark_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:539579963d1706e52915f9a34c59751cb7fc9c0999633aa2436f056ff67b85f4 -size 63278 +oid sha256:3aadf29a54c5bed1d98f310b4a0bbcd231fe02f4d93bd1a21834bf564c181c69 +size 63301 diff --git a/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewDark_4_de.png b/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewDark_4_de.png index 2f21b59d71..953f2be73a 100644 --- a/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewDark_4_de.png +++ b/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewDark_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7b52c446a1de739520d1eef631362de5572e2d69a257e3ef2a241cb121b4db25 -size 63175 +oid sha256:64cc8989b37f610daaf2cbf08e1f964e0a0f151c049f84a288c931e187a36149 +size 63202 diff --git a/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewDark_5_de.png b/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewDark_5_de.png index 25c8fccbff..aabb153b2f 100644 --- a/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewDark_5_de.png +++ b/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewDark_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:37f47205eeb1e883f187e505af46bebed1177a2ecc437860c40f64e95458abb9 -size 62656 +oid sha256:a737fb343eba8c22c5686406a7d89dc47907895edff06a5912f87cf03b6fe102 +size 62680 diff --git a/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewLight_0_de.png b/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewLight_0_de.png index 2c0815fde6..938c21b352 100644 --- a/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewLight_0_de.png +++ b/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewLight_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cd70023d36e488e1ae5fa74100fd9d10c1406e652ca0057ae8d29b61d52a7d83 -size 37299 +oid sha256:5d7a4d0453da7a91bcaabc426379b996648469114468f5b153c1f0fee699ae42 +size 37321 diff --git a/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewLight_1_de.png b/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewLight_1_de.png index e1ea546723..1b24f9bb3e 100644 --- a/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewLight_1_de.png +++ b/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewLight_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0321eb16d7262e411af292d162e4063f9883e33a9f2ca0bf46715ae91c60ae12 -size 50109 +oid sha256:8dbb04991ea8e60de9abc3251400c65fa9a2cc43d52d4d8117dbbf1ee9d56bd8 +size 50146 diff --git a/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewLight_2_de.png b/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewLight_2_de.png index 0596dbd6f1..8abaa95e65 100644 --- a/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewLight_2_de.png +++ b/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewLight_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6e055e5056533eb3f77b3c5d548c3aa5de0606f04b8a5962baed1f1af6f53ae5 -size 64655 +oid sha256:4d651f1ce452283c09d2b3b2e7f075e96e35ef878eef641072636b2f453f6850 +size 64694 diff --git a/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewLight_3_de.png b/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewLight_3_de.png index 31644265b6..3dd7c1f334 100644 --- a/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewLight_3_de.png +++ b/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewLight_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6edef6a596039bb4b4f7870cdfb884811028862554d3bf9788d5e197ade4fe5a -size 65454 +oid sha256:45606e3d5806dc6fcd86df1406a955a0778c4f7629fcba8dfdf878c539f509d9 +size 65488 diff --git a/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewLight_4_de.png b/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewLight_4_de.png index 2da6dd6f6b..2e67fcfdf9 100644 --- a/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewLight_4_de.png +++ b/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewLight_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:84eed38dd20babb3ab08a3576c3c7af9401c99c0be804bb258db13ce67b00a73 -size 65369 +oid sha256:8185ffe05f8f720191e31ab768a40f305ed1713006a13ce695b4c090d4bdbc5c +size 65402 diff --git a/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewLight_5_de.png b/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewLight_5_de.png index 0c00c34820..7701b3a6c9 100644 --- a/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewLight_5_de.png +++ b/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewLight_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0481e5d7ddf98de3baea050a949fec0b6aa0757fa3396f0d9dbd2a91a9b83943 -size 64793 +oid sha256:ffd5e28b08d7526d31bc8214cc250ea3f5cc8af699886f128b83e858dc425e81 +size 64827 diff --git a/screenshots/de/features.createroom.impl.root_CreateRoomRootView_Day_0_de.png b/screenshots/de/features.createroom.impl.root_CreateRoomRootView_Day_0_de.png index 3016f9b637..73d157ad29 100644 --- a/screenshots/de/features.createroom.impl.root_CreateRoomRootView_Day_0_de.png +++ b/screenshots/de/features.createroom.impl.root_CreateRoomRootView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1b0db5a0326b9331c3873948d80d6f5ccf956f9c0d46a13bb3a10fa3f4693dcd -size 26675 +oid sha256:9bc8290faf20b4ea95bf0e7a86c2306b6f9d15b5bc764a48b78051b4d7c02655 +size 28052 diff --git a/screenshots/de/features.createroom.impl.root_CreateRoomRootView_Day_3_de.png b/screenshots/de/features.createroom.impl.root_CreateRoomRootView_Day_3_de.png index 0773aaf4ad..8d399c2c6a 100644 --- a/screenshots/de/features.createroom.impl.root_CreateRoomRootView_Day_3_de.png +++ b/screenshots/de/features.createroom.impl.root_CreateRoomRootView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c0ecabe5479d3e0ecb9a41e5ef8f1eedf4acbe5ba9857a772f4bfafb16531c38 -size 53776 +oid sha256:922537688cdeb949b116e699358f886314a87242b0bdfb970c04143d9df0de9d +size 55087 diff --git a/screenshots/de/features.createroom.impl.root_CreateRoomRootView_Day_4_de.png b/screenshots/de/features.createroom.impl.root_CreateRoomRootView_Day_4_de.png index cfac5574d5..b380c1f5e2 100644 --- a/screenshots/de/features.createroom.impl.root_CreateRoomRootView_Day_4_de.png +++ b/screenshots/de/features.createroom.impl.root_CreateRoomRootView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:762f3b8279749512ced7deae1a909713699f3185ae0fa4983cf9a837770ee39a -size 44484 +oid sha256:96f00525ce15b20bda129396fb74c40168513e3e3010056908187a53b01c7b0d +size 45678 diff --git a/screenshots/de/features.createroom.impl.root_CreateRoomRootView_Day_5_de.png b/screenshots/de/features.createroom.impl.root_CreateRoomRootView_Day_5_de.png index 5babaa42f7..92c28ceeb8 100644 --- a/screenshots/de/features.createroom.impl.root_CreateRoomRootView_Day_5_de.png +++ b/screenshots/de/features.createroom.impl.root_CreateRoomRootView_Day_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f5a9b80e68360022416d46a32609b0faaf935872dade6c8a8de6ab327f94d84f -size 30677 +oid sha256:1fa4bc20f0199ac31acf1d9d93d1457004769bfe89957a769fb06a97435becbb +size 32125 diff --git a/screenshots/de/features.ftue.impl.notifications_NotificationsOptInView_Day_0_de.png b/screenshots/de/features.ftue.impl.notifications_NotificationsOptInView_Day_0_de.png index 1637b4b00e..6caf3c9a0f 100644 --- a/screenshots/de/features.ftue.impl.notifications_NotificationsOptInView_Day_0_de.png +++ b/screenshots/de/features.ftue.impl.notifications_NotificationsOptInView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9dd80a73d67f1d18c52606aeebc9dcf971857a5f52e4490932499487ca350d08 -size 70530 +oid sha256:cbc979b60abb037029d820842169a8c441ab70ed3332c5103bd9b348c2b70d1f +size 70501 diff --git a/screenshots/de/features.invite.impl.acceptdecline_AcceptDeclineInviteView_Day_1_de.png b/screenshots/de/features.invite.impl.acceptdecline_AcceptDeclineInviteView_Day_1_de.png index c1e11cb5f0..41b1a9cc8e 100644 --- a/screenshots/de/features.invite.impl.acceptdecline_AcceptDeclineInviteView_Day_1_de.png +++ b/screenshots/de/features.invite.impl.acceptdecline_AcceptDeclineInviteView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:04e2998e9387d12ce7d2687d902fa8968170d8a0a79484366cb7925ffccf63f2 -size 24709 +oid sha256:1d0de166a7eaa29c991807b4f6052b75e34c504add3f58eb5e686df3013fc050 +size 24716 diff --git a/screenshots/de/features.invite.impl.acceptdecline_AcceptDeclineInviteView_Day_2_de.png b/screenshots/de/features.invite.impl.acceptdecline_AcceptDeclineInviteView_Day_2_de.png index 7d976baa5b..3887eb7e48 100644 --- a/screenshots/de/features.invite.impl.acceptdecline_AcceptDeclineInviteView_Day_2_de.png +++ b/screenshots/de/features.invite.impl.acceptdecline_AcceptDeclineInviteView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:871931282cefa516c00fd3a3849e5b357f6ce95fdca9593ca15fa67ce52fdce3 -size 31029 +oid sha256:d1f88209962378739a4896764dda23426510c5909400007f929c2f80cc084d83 +size 30994 diff --git a/screenshots/de/features.leaveroom.api_LeaveRoomView_Day_1_de.png b/screenshots/de/features.leaveroom.api_LeaveRoomView_Day_1_de.png index 7bd8cfd6d7..361f000322 100644 --- a/screenshots/de/features.leaveroom.api_LeaveRoomView_Day_1_de.png +++ b/screenshots/de/features.leaveroom.api_LeaveRoomView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fa5f697707cfc2e6b8043575f39872b9347779447f3df1119dc486aef1031ad4 -size 21987 +oid sha256:68918b40c4e738d943f2f9fb94736b820303282d0eb9e0520f3d1c6b77169eae +size 22879 diff --git a/screenshots/de/features.leaveroom.api_LeaveRoomView_Day_2_de.png b/screenshots/de/features.leaveroom.api_LeaveRoomView_Day_2_de.png index f949f43d57..0c7f70d4a9 100644 --- a/screenshots/de/features.leaveroom.api_LeaveRoomView_Day_2_de.png +++ b/screenshots/de/features.leaveroom.api_LeaveRoomView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b6f0565f64493b55beedb27fbd35cae1ddab6b25af667776d1a6802dd532ca92 -size 33375 +oid sha256:07645650921e92047a02fc99c5a3ad0f117bb7f3da27f41434e55867970b6e27 +size 35414 diff --git a/screenshots/de/features.leaveroom.api_LeaveRoomView_Day_3_de.png b/screenshots/de/features.leaveroom.api_LeaveRoomView_Day_3_de.png index f1086720d4..248060117a 100644 --- a/screenshots/de/features.leaveroom.api_LeaveRoomView_Day_3_de.png +++ b/screenshots/de/features.leaveroom.api_LeaveRoomView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cb52a59a5fd4a917aea1abb9dd69025ad182fa53633904a43abbc295e36944a3 -size 35521 +oid sha256:22a2d91e9cbecf7903e70f885e3fc7807345c770ad73c1dd81487bc0655f8413 +size 39957 diff --git a/screenshots/de/features.leaveroom.api_LeaveRoomView_Day_6_de.png b/screenshots/de/features.leaveroom.api_LeaveRoomView_Day_6_de.png index f949f43d57..0c7f70d4a9 100644 --- a/screenshots/de/features.leaveroom.api_LeaveRoomView_Day_6_de.png +++ b/screenshots/de/features.leaveroom.api_LeaveRoomView_Day_6_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b6f0565f64493b55beedb27fbd35cae1ddab6b25af667776d1a6802dd532ca92 -size 33375 +oid sha256:07645650921e92047a02fc99c5a3ad0f117bb7f3da27f41434e55867970b6e27 +size 35414 diff --git a/screenshots/de/features.login.impl.accountprovider_AccountProviderOtherView_Day_0_de.png b/screenshots/de/features.login.impl.accountprovider_AccountProviderOtherView_Day_0_de.png new file mode 100644 index 0000000000..be38e64a2d --- /dev/null +++ b/screenshots/de/features.login.impl.accountprovider_AccountProviderOtherView_Day_0_de.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cf1d3c46c9e8d5e68052bbc741dc987f6b005dfc5bba8eb80976895a790d953e +size 6856 diff --git a/screenshots/de/features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Day_0_de.png b/screenshots/de/features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Day_0_de.png index 4605e3d690..de8230291f 100644 --- a/screenshots/de/features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Day_0_de.png +++ b/screenshots/de/features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:413d5a7e4717c03eaa6f6a023f021f49c21e74f0eff5718fc7b415063a16a065 -size 55534 +oid sha256:791f83c78afb4cd33f82c9fa7480b9d986ca38fdae7140e0ab66d191023e6ce4 +size 55516 diff --git a/screenshots/de/features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Day_1_de.png b/screenshots/de/features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Day_1_de.png new file mode 100644 index 0000000000..a30ec54681 --- /dev/null +++ b/screenshots/de/features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Day_1_de.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:65711d9881cd4a62e7cb9b0c8f4624480adf42cd79d9207e76c2c64212a164b5 +size 52641 diff --git a/screenshots/de/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_0_de.png b/screenshots/de/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_0_de.png new file mode 100644 index 0000000000..9383553294 --- /dev/null +++ b/screenshots/de/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_0_de.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e6265e682e30da31b8e73687990a05e5aa1bf7b124cee017cad7ea4126270a9b +size 22494 diff --git a/screenshots/de/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_1_de.png b/screenshots/de/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_1_de.png new file mode 100644 index 0000000000..6a7aab5469 --- /dev/null +++ b/screenshots/de/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_1_de.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7129c322a45517e31359e322d2e7efe9d3fb37ddf2f855d00b68fb75dee181f4 +size 23419 diff --git a/screenshots/de/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_2_de.png b/screenshots/de/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_2_de.png new file mode 100644 index 0000000000..9c199a1755 --- /dev/null +++ b/screenshots/de/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_2_de.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7e1343dce4e1741ca47eae2946f5e45725a46786a2e4a0c89422513667991d35 +size 24020 diff --git a/screenshots/de/features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_0_de.png b/screenshots/de/features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_0_de.png index 52751f05ea..08907f39ca 100644 --- a/screenshots/de/features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_0_de.png +++ b/screenshots/de/features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:603a03e19394034699623217414bacf20539c0300d29a9b2d7f4c61b348b0152 -size 39063 +oid sha256:3cebf81ebd8a9a4d0576b20d56dc83c393c72e89f4a9bed0cf6e79d9c7c57494 +size 39562 diff --git a/screenshots/de/features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_1_de.png b/screenshots/de/features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_1_de.png index 904edfb7f8..371127dc50 100644 --- a/screenshots/de/features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_1_de.png +++ b/screenshots/de/features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:79b004c7bda98578f07192f153a55b088f14a7a47d99af28e91e6893d67e40d6 -size 39931 +oid sha256:2a282b7412ac64e5b209f00d6a70b2da1d9b717a973003f679dc37ed9694e348 +size 40411 diff --git a/screenshots/de/features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_2_de.png b/screenshots/de/features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_2_de.png index 969bd316b3..23e64810c4 100644 --- a/screenshots/de/features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_2_de.png +++ b/screenshots/de/features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3c385d7c1d9479c65f2a67f762e36108d73b6ce718652fbda2c5d3af748dfc53 -size 41189 +oid sha256:784f55a9e6780fffa237a1e55f3033ee0a59f4c1066e385a81f075cac58172a0 +size 41609 diff --git a/screenshots/de/features.login.impl.screens.loginpassword_LoginPasswordView_Day_0_de.png b/screenshots/de/features.login.impl.screens.loginpassword_LoginPasswordView_Day_0_de.png index f3fcb17a1a..6874f9dba4 100644 --- a/screenshots/de/features.login.impl.screens.loginpassword_LoginPasswordView_Day_0_de.png +++ b/screenshots/de/features.login.impl.screens.loginpassword_LoginPasswordView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6454a51018bb1a65439b21db92295dba9de63d7d25295676908214d27ed1c482 -size 38875 +oid sha256:696f9587a2ef0f7d017062dab6348cfddf5e82169673530b10241dced459f728 +size 39341 diff --git a/screenshots/de/features.login.impl.screens.loginpassword_LoginPasswordView_Day_1_de.png b/screenshots/de/features.login.impl.screens.loginpassword_LoginPasswordView_Day_1_de.png index 0b553dd295..4b1c3e1bfc 100644 --- a/screenshots/de/features.login.impl.screens.loginpassword_LoginPasswordView_Day_1_de.png +++ b/screenshots/de/features.login.impl.screens.loginpassword_LoginPasswordView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:82cb40c56017837f9b76b5f6bbb9df6ee13c5b699ea0385efc5eb54a9ef46c92 -size 40075 +oid sha256:f4a8645df197255a5fa44a7ae582aa1d1126a5d00f4db56777b26e7b7321c5a8 +size 40523 diff --git a/screenshots/de/features.login.impl.screens.loginpassword_LoginPasswordView_Day_2_de.png b/screenshots/de/features.login.impl.screens.loginpassword_LoginPasswordView_Day_2_de.png index 1a51a05ca6..c3b56e7978 100644 --- a/screenshots/de/features.login.impl.screens.loginpassword_LoginPasswordView_Day_2_de.png +++ b/screenshots/de/features.login.impl.screens.loginpassword_LoginPasswordView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fd752daa28348a3ca13718020509519830bc2d05f97c0ee0389954fa87356167 -size 30221 +oid sha256:3ccf8db965c240d06ade404cca64607ebd7392660f091c0a71c875e937045222 +size 30675 diff --git a/screenshots/de/features.onboarding.impl_OnBoardingView_Day_0_de.png b/screenshots/de/features.login.impl.screens.onboarding_OnBoardingView_Day_0_de.png similarity index 100% rename from screenshots/de/features.onboarding.impl_OnBoardingView_Day_0_de.png rename to screenshots/de/features.login.impl.screens.onboarding_OnBoardingView_Day_0_de.png diff --git a/screenshots/de/features.onboarding.impl_OnBoardingView_Day_1_de.png b/screenshots/de/features.login.impl.screens.onboarding_OnBoardingView_Day_1_de.png similarity index 100% rename from screenshots/de/features.onboarding.impl_OnBoardingView_Day_1_de.png rename to screenshots/de/features.login.impl.screens.onboarding_OnBoardingView_Day_1_de.png diff --git a/screenshots/de/features.onboarding.impl_OnBoardingView_Day_2_de.png b/screenshots/de/features.login.impl.screens.onboarding_OnBoardingView_Day_2_de.png similarity index 100% rename from screenshots/de/features.onboarding.impl_OnBoardingView_Day_2_de.png rename to screenshots/de/features.login.impl.screens.onboarding_OnBoardingView_Day_2_de.png diff --git a/screenshots/de/features.onboarding.impl_OnBoardingView_Day_3_de.png b/screenshots/de/features.login.impl.screens.onboarding_OnBoardingView_Day_3_de.png similarity index 100% rename from screenshots/de/features.onboarding.impl_OnBoardingView_Day_3_de.png rename to screenshots/de/features.login.impl.screens.onboarding_OnBoardingView_Day_3_de.png diff --git a/screenshots/de/features.onboarding.impl_OnBoardingView_Day_4_de.png b/screenshots/de/features.login.impl.screens.onboarding_OnBoardingView_Day_4_de.png similarity index 100% rename from screenshots/de/features.onboarding.impl_OnBoardingView_Day_4_de.png rename to screenshots/de/features.login.impl.screens.onboarding_OnBoardingView_Day_4_de.png diff --git a/screenshots/de/features.login.impl.screens.onboarding_OnBoardingView_Day_5_de.png b/screenshots/de/features.login.impl.screens.onboarding_OnBoardingView_Day_5_de.png new file mode 100644 index 0000000000..ed53bf331c --- /dev/null +++ b/screenshots/de/features.login.impl.screens.onboarding_OnBoardingView_Day_5_de.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:de633e14295a7e2946c6e130a511d6497514c5f1eb17fa344fe8ac7382e37492 +size 316881 diff --git a/screenshots/de/features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Day_1_de.png b/screenshots/de/features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Day_1_de.png index 9a786c5f19..caec7cbaf6 100644 --- a/screenshots/de/features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Day_1_de.png +++ b/screenshots/de/features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5c1f0c972c34190eb1879dc1eed7a086949df5bea2cb1e91cd8de00250ead618 -size 60325 +oid sha256:21d17c76d225999c8358d4a22b17f137b8dc9a5536dda9299eae43f36d41fd4e +size 59773 diff --git a/screenshots/de/features.logout.impl.direct_DefaultDirectLogoutView_Day_1_de.png b/screenshots/de/features.logout.impl.direct_DefaultDirectLogoutView_Day_1_de.png index d0eb6fc40f..3b4a617600 100644 --- a/screenshots/de/features.logout.impl.direct_DefaultDirectLogoutView_Day_1_de.png +++ b/screenshots/de/features.logout.impl.direct_DefaultDirectLogoutView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:941c0bd316c55ce06eca86a109326acd7976f9c9b1c64ddac1673a77c8ff9764 -size 20601 +oid sha256:0fbcdc832a671f2e55b39b4c6d14860e320c9dd5e5f0087c6ac58832424d21d5 +size 19314 diff --git a/screenshots/de/features.logout.impl_LogoutView_Day_4_de.png b/screenshots/de/features.logout.impl_LogoutView_Day_4_de.png index 97db980903..1c7f3f566a 100644 --- a/screenshots/de/features.logout.impl_LogoutView_Day_4_de.png +++ b/screenshots/de/features.logout.impl_LogoutView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:71b1163c7405cef65b6cde349ab882c3c8ff2bf036c96db07ed5b45adcab54cb -size 27022 +oid sha256:89431cdede17d672f5c6b5f4218c006a1392b1e2f9faaecc368ed99ad87b55b9 +size 25878 diff --git a/screenshots/de/features.messages.impl.report_ReportMessageView_Day_0_de.png b/screenshots/de/features.messages.impl.report_ReportMessageView_Day_0_de.png index 959ac4d15f..cadfe7fde5 100644 --- a/screenshots/de/features.messages.impl.report_ReportMessageView_Day_0_de.png +++ b/screenshots/de/features.messages.impl.report_ReportMessageView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b22d1772e0778b5cc298871d1fabf39809d8dc7eaf4c74bb5319a0889e3b7ae8 -size 48742 +oid sha256:ee0e18147ee167f32a39fa7dc04ff121982e920a3c8e1a754bbae5d789128d33 +size 48962 diff --git a/screenshots/de/features.messages.impl.report_ReportMessageView_Day_1_de.png b/screenshots/de/features.messages.impl.report_ReportMessageView_Day_1_de.png index 280331df35..b39f00cdd4 100644 --- a/screenshots/de/features.messages.impl.report_ReportMessageView_Day_1_de.png +++ b/screenshots/de/features.messages.impl.report_ReportMessageView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2f80e0016a9a024ccfb9421c4ca459060e6efd7f2277a174d0df355537e7b0e4 -size 49757 +oid sha256:bab8b0cde9ef83f61261f25f8174b6a3129c3a542590e1bc74a056521082a014 +size 49952 diff --git a/screenshots/de/features.messages.impl.report_ReportMessageView_Day_2_de.png b/screenshots/de/features.messages.impl.report_ReportMessageView_Day_2_de.png index ec231d6d89..99fc4fe6b9 100644 --- a/screenshots/de/features.messages.impl.report_ReportMessageView_Day_2_de.png +++ b/screenshots/de/features.messages.impl.report_ReportMessageView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:53e5b70eff1acd9e76c522b5a2f6b6a8eb95e918c43b7dac912c3a57409a3745 -size 49265 +oid sha256:3075a505cd110ab7657830878dea94f4fba92261fb492685bdd5ee37686252dc +size 49458 diff --git a/screenshots/de/features.messages.impl.report_ReportMessageView_Day_3_de.png b/screenshots/de/features.messages.impl.report_ReportMessageView_Day_3_de.png index fa22bc328d..692de9f3a2 100644 --- a/screenshots/de/features.messages.impl.report_ReportMessageView_Day_3_de.png +++ b/screenshots/de/features.messages.impl.report_ReportMessageView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:251236d638c52f3c35c32f42f1f8bef6ec761079cec094e6ac71f42b49968d4d -size 48846 +oid sha256:623e8bfd20bddcd57b8b24d2077b3c3b8f7d6ac393b02c89ed0fe7af7970543a +size 49046 diff --git a/screenshots/de/features.messages.impl.report_ReportMessageView_Day_4_de.png b/screenshots/de/features.messages.impl.report_ReportMessageView_Day_4_de.png index c2dce2be22..e8a2ae3d59 100644 --- a/screenshots/de/features.messages.impl.report_ReportMessageView_Day_4_de.png +++ b/screenshots/de/features.messages.impl.report_ReportMessageView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:aee180d2e0a75df51888686ca72af1c98073926b82cec2cba4c056887ed04773 -size 28871 +oid sha256:7740aa5ce68ea8f5408e9463bd367a985d91570bbef40829eb7b15bab3f14d47 +size 28865 diff --git a/screenshots/de/features.messages.impl.report_ReportMessageView_Day_5_de.png b/screenshots/de/features.messages.impl.report_ReportMessageView_Day_5_de.png index ec231d6d89..99fc4fe6b9 100644 --- a/screenshots/de/features.messages.impl.report_ReportMessageView_Day_5_de.png +++ b/screenshots/de/features.messages.impl.report_ReportMessageView_Day_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:53e5b70eff1acd9e76c522b5a2f6b6a8eb95e918c43b7dac912c3a57409a3745 -size 49265 +oid sha256:3075a505cd110ab7657830878dea94f4fba92261fb492685bdd5ee37686252dc +size 49458 diff --git a/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemPollView_Day_1_de.png b/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemPollView_Day_1_de.png index 23710a9316..7cfd51b4b7 100644 --- a/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemPollView_Day_1_de.png +++ b/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemPollView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a8efa3ec59b2d3ca4f01b84b2ae98a14243a3de826db41f3acaebaf9b2be58ab -size 51047 +oid sha256:8e806543ceb3c25c58562785cec74d2f5064d2c94e6ae558811ce0fd76ebfe76 +size 50774 diff --git a/screenshots/de/features.messages.impl_MessagesView_Day_4_de.png b/screenshots/de/features.messages.impl_MessagesView_Day_4_de.png index f0fc9507fe..8e60bb99a2 100644 --- a/screenshots/de/features.messages.impl_MessagesView_Day_4_de.png +++ b/screenshots/de/features.messages.impl_MessagesView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:723700294f08916e6f448898ea4c7d633a59c9b2d007f6ba8281c73be39128a7 -size 55769 +oid sha256:2acc6a4f19c60d5ff416e02ac6d024bf8291f95a08ea2fabb29049c1240abcf0 +size 55524 diff --git a/screenshots/de/features.poll.api.pollcontent_PollContentViewUndisclosed_Day_0_de.png b/screenshots/de/features.poll.api.pollcontent_PollContentViewUndisclosed_Day_0_de.png index 773a7d019f..174016671b 100644 --- a/screenshots/de/features.poll.api.pollcontent_PollContentViewUndisclosed_Day_0_de.png +++ b/screenshots/de/features.poll.api.pollcontent_PollContentViewUndisclosed_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:feeb1e52db922694d6065f1083ed082cc47f2253a79d04868b257be33ec6a5da -size 46337 +oid sha256:e0b487a828e25112c2c60a2bec570c4965a5c30de8bea785da32d75af4b807a6 +size 46071 diff --git a/screenshots/de/features.preferences.impl.analytics_AnalyticsSettingsView_Day_0_de.png b/screenshots/de/features.preferences.impl.analytics_AnalyticsSettingsView_Day_0_de.png index a22e6c4a81..0da6e2bf8a 100644 --- a/screenshots/de/features.preferences.impl.analytics_AnalyticsSettingsView_Day_0_de.png +++ b/screenshots/de/features.preferences.impl.analytics_AnalyticsSettingsView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b740e9fa4983a377d4903c0ae552c275d7df75829b17fe9eb9623915d0823163 -size 28479 +oid sha256:1c86db28bbcb1da58f4dc0c4accb81689590af1dbaf1e78da76fff173cb1d0a6 +size 28915 diff --git a/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_6_de.png b/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_6_de.png index cf4a0f237a..602c12990d 100644 --- a/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_6_de.png +++ b/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_6_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:146c9ef4555aac5cfa99a2c637f3a969061a95e06586f12eb341dddd8bcdd380 -size 47008 +oid sha256:7c10adfcd02d9fb59ab9bf631f79b075b60d643e668a589597a8c700d612ef38 +size 47153 diff --git a/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_7_de.png b/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_7_de.png index cd33784256..66896dc9ed 100644 --- a/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_7_de.png +++ b/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_7_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1cf3de8579b29920cf6e766b33450ecbfef7cb10f324558985a5e6f0785130ff -size 52129 +oid sha256:484b957e2f6299574b5718266584e58b4af3e0c3a64414b9da40bd4a979e62f0 +size 52251 diff --git a/screenshots/de/features.rageshake.api.crash_CrashDetectionView_Day_0_de.png b/screenshots/de/features.rageshake.api.crash_CrashDetectionView_Day_0_de.png index d75932ca37..11c218360b 100644 --- a/screenshots/de/features.rageshake.api.crash_CrashDetectionView_Day_0_de.png +++ b/screenshots/de/features.rageshake.api.crash_CrashDetectionView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0ffa68144d62b53507e8f4bd9d96b2a8349457b0c4647e385cd3ec67d647331e -size 24864 +oid sha256:2c063991616a5bdee93cf1cc121a4959a225053592a5c0cc3a0bda7416072226 +size 24943 diff --git a/screenshots/de/features.rageshake.api.detection_RageshakeDialogContent_Day_0_de.png b/screenshots/de/features.rageshake.api.detection_RageshakeDialogContent_Day_0_de.png index 6ecd0ec289..348ee35044 100644 --- a/screenshots/de/features.rageshake.api.detection_RageshakeDialogContent_Day_0_de.png +++ b/screenshots/de/features.rageshake.api.detection_RageshakeDialogContent_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4c6ef6d8a266e8da6473ec3f50ffce1d42d25c62dc698aa41742791ec1855579 -size 28644 +oid sha256:120d0f6f4d2221e405544688c16688523a0a5fb5fa2ff789758482cc2a3aefbf +size 29117 diff --git a/screenshots/de/features.rageshake.impl.bugreport_BugReportView_Day_0_de.png b/screenshots/de/features.rageshake.impl.bugreport_BugReportView_Day_0_de.png index 10311a7f16..f9336cfa38 100644 --- a/screenshots/de/features.rageshake.impl.bugreport_BugReportView_Day_0_de.png +++ b/screenshots/de/features.rageshake.impl.bugreport_BugReportView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:70a1bfa574e92a44e6f79885060ec217d285e799ca438506d60cf54a40f093f0 -size 80089 +oid sha256:26bd919aa064af2fd0b66120a7a18b1d942e629343ea73789c23d8b96eff581c +size 82179 diff --git a/screenshots/de/features.rageshake.impl.bugreport_BugReportView_Day_1_de.png b/screenshots/de/features.rageshake.impl.bugreport_BugReportView_Day_1_de.png index ac898dcdd8..f418041a36 100644 --- a/screenshots/de/features.rageshake.impl.bugreport_BugReportView_Day_1_de.png +++ b/screenshots/de/features.rageshake.impl.bugreport_BugReportView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a86fd89f01d65d05e3c98842ffc3b8e1bae2be8531b8b78f2ff5f6268a58c591 -size 99384 +oid sha256:28baf0d6180bf3fa723152612499098c5489d746c419be445d7954c72c4623d5 +size 88463 diff --git a/screenshots/de/features.rageshake.impl.bugreport_BugReportView_Day_2_de.png b/screenshots/de/features.rageshake.impl.bugreport_BugReportView_Day_2_de.png index 1233c6bf45..1e9d761258 100644 --- a/screenshots/de/features.rageshake.impl.bugreport_BugReportView_Day_2_de.png +++ b/screenshots/de/features.rageshake.impl.bugreport_BugReportView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:be82a20eb47859c6879524dd2c8341a2265d52859a28a4fe61245dc2bd6a2f63 -size 75654 +oid sha256:00c70fff807ae67d65b909a98dd270108ffa92a6c5ba5351353e276db6547b18 +size 77891 diff --git a/screenshots/de/features.rageshake.impl.bugreport_BugReportView_Day_3_de.png b/screenshots/de/features.rageshake.impl.bugreport_BugReportView_Day_3_de.png index 10311a7f16..f9336cfa38 100644 --- a/screenshots/de/features.rageshake.impl.bugreport_BugReportView_Day_3_de.png +++ b/screenshots/de/features.rageshake.impl.bugreport_BugReportView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:70a1bfa574e92a44e6f79885060ec217d285e799ca438506d60cf54a40f093f0 -size 80089 +oid sha256:26bd919aa064af2fd0b66120a7a18b1d942e629343ea73789c23d8b96eff581c +size 82179 diff --git a/screenshots/de/features.rageshake.impl.bugreport_BugReportView_Day_4_de.png b/screenshots/de/features.rageshake.impl.bugreport_BugReportView_Day_4_de.png index 77b81eae8f..249198d34c 100644 --- a/screenshots/de/features.rageshake.impl.bugreport_BugReportView_Day_4_de.png +++ b/screenshots/de/features.rageshake.impl.bugreport_BugReportView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:004173795f326a2766845370ae400b89bc662ec614b40041bc0a9a2129911691 -size 57069 +oid sha256:fe9dea15ec1c9b8f00d5acfb7ea96d49a8e74c02abd538d1d7461a8ccb20721f +size 59337 diff --git a/screenshots/de/features.roomdetails.impl.invite_RoomInviteMembersView_Day_0_de.png b/screenshots/de/features.roomdetails.impl.invite_RoomInviteMembersView_Day_0_de.png index 59148bdc37..af77b3d916 100644 --- a/screenshots/de/features.roomdetails.impl.invite_RoomInviteMembersView_Day_0_de.png +++ b/screenshots/de/features.roomdetails.impl.invite_RoomInviteMembersView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e12074298b55bc1e79d39dbf7200933653698417fc3bf9a40775989f33c0d114 -size 15458 +oid sha256:016833cdfd1d7dc4b50766a611fb90c1389edb634139d13f5aba456f0eddcb8e +size 14698 diff --git a/screenshots/de/features.roomdetails.impl.invite_RoomInviteMembersView_Day_1_de.png b/screenshots/de/features.roomdetails.impl.invite_RoomInviteMembersView_Day_1_de.png index 13d90fca34..ea306c4dc7 100644 --- a/screenshots/de/features.roomdetails.impl.invite_RoomInviteMembersView_Day_1_de.png +++ b/screenshots/de/features.roomdetails.impl.invite_RoomInviteMembersView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fe94e25696521e9ed30951109002523f03c27d5bc8c12e934e1e987d3df159b8 -size 26098 +oid sha256:3368acb55a193d98ff2208c9d2e3bb1b1214c61ba4468a88a3f9049ac5db2fc6 +size 25458 diff --git a/screenshots/de/features.roomdetails.impl.invite_RoomInviteMembersView_Day_2_de.png b/screenshots/de/features.roomdetails.impl.invite_RoomInviteMembersView_Day_2_de.png index 46c04d63c9..317117e793 100644 --- a/screenshots/de/features.roomdetails.impl.invite_RoomInviteMembersView_Day_2_de.png +++ b/screenshots/de/features.roomdetails.impl.invite_RoomInviteMembersView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0ba5447b42b04b1b7d75ab8f6e36b660ddba149806de29d420bc53420fa2ca65 -size 12566 +oid sha256:266041ac236302fef0f1f6b40f0271574bbe8a34d4f56a156c1af00e54ed58be +size 11816 diff --git a/screenshots/de/features.roomdetails.impl.invite_RoomInviteMembersView_Day_3_de.png b/screenshots/de/features.roomdetails.impl.invite_RoomInviteMembersView_Day_3_de.png index 5f84667321..faf1062c3b 100644 --- a/screenshots/de/features.roomdetails.impl.invite_RoomInviteMembersView_Day_3_de.png +++ b/screenshots/de/features.roomdetails.impl.invite_RoomInviteMembersView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:edebb0083cb0bd161a58f6997d675220ebaee980d7cae1373f92c16eb960358e -size 23693 +oid sha256:22c5455db75e82a22e2af5a5a420abe8e8c622cfa42a92a920620ae2c8f20ee7 +size 23020 diff --git a/screenshots/de/features.roomdetails.impl.invite_RoomInviteMembersView_Day_4_de.png b/screenshots/de/features.roomdetails.impl.invite_RoomInviteMembersView_Day_4_de.png index e0b916854c..e08d86610c 100644 --- a/screenshots/de/features.roomdetails.impl.invite_RoomInviteMembersView_Day_4_de.png +++ b/screenshots/de/features.roomdetails.impl.invite_RoomInviteMembersView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d6fddc0b54320ff565d7a734fbc8d83001a399d9c9a1446c00b0117c7eb38bae -size 15834 +oid sha256:fa968b2e0d72f9c66be0dd39b5b2ca33148bcd60b9bf9f6987b1a867c8d9d579 +size 15082 diff --git a/screenshots/de/features.roomdetails.impl.invite_RoomInviteMembersView_Day_5_de.png b/screenshots/de/features.roomdetails.impl.invite_RoomInviteMembersView_Day_5_de.png index 0bc18ff968..19d8f833f4 100644 --- a/screenshots/de/features.roomdetails.impl.invite_RoomInviteMembersView_Day_5_de.png +++ b/screenshots/de/features.roomdetails.impl.invite_RoomInviteMembersView_Day_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5ec6343e465626aafa1b3642403ab72b94dfcd2ea1100871309113e5a1009548 -size 44765 +oid sha256:d00b52b81391dc4770e6850dc30a20702081b4db3fa39a38d6a33d5ad7d914c6 +size 44038 diff --git a/screenshots/de/features.roomdetails.impl.invite_RoomInviteMembersView_Day_6_de.png b/screenshots/de/features.roomdetails.impl.invite_RoomInviteMembersView_Day_6_de.png index 74988a33fb..cd416194a7 100644 --- a/screenshots/de/features.roomdetails.impl.invite_RoomInviteMembersView_Day_6_de.png +++ b/screenshots/de/features.roomdetails.impl.invite_RoomInviteMembersView_Day_6_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4f5f58c74b631e23f9e81e6c280fbf48109ae62990dac36789e7761318695cf4 -size 44070 +oid sha256:45804afdb362b238baf689feabf6aee00e5c0cf766ab41941097df48114cabaa +size 43381 diff --git a/screenshots/de/features.roomdetails.impl.invite_RoomInviteMembersView_Day_7_de.png b/screenshots/de/features.roomdetails.impl.invite_RoomInviteMembersView_Day_7_de.png index ca2c08cf37..9149bb8ac9 100644 --- a/screenshots/de/features.roomdetails.impl.invite_RoomInviteMembersView_Day_7_de.png +++ b/screenshots/de/features.roomdetails.impl.invite_RoomInviteMembersView_Day_7_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f610960fed97b4fdb20b1154e1a4355252ef203e4a4a88ac44872e02cfca49e8 -size 36599 +oid sha256:8d946653a9a52e8a92b0c88dce6fb0cf52950fb54fc5ea8687044426b8df0833 +size 35729 diff --git a/screenshots/de/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_0_de.png b/screenshots/de/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_0_de.png index 413a74a7fb..4a21c88bd0 100644 --- a/screenshots/de/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_0_de.png +++ b/screenshots/de/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:59bdccb73987b701b93fc097e06783cd244107b5dfd6076e5fe24a46ce1c2e7d -size 48537 +oid sha256:348e60ce0a5e1f0ae233ccd31e7737c383d8982726972c90f9f5bcf576b9dfde +size 44126 diff --git a/screenshots/de/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_1_de.png b/screenshots/de/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_1_de.png index f0842b4d78..4bdd14e23b 100644 --- a/screenshots/de/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_1_de.png +++ b/screenshots/de/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8083186cfef27c2db79f04ff8b3f37f221b0e9f9537f816d6a1ee317b13d1fba -size 50140 +oid sha256:9691b46c25e47bf856aa3c6aff42746c732c2e74af40348d5904c32c07dbb2aa +size 46429 diff --git a/screenshots/de/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_2_de.png b/screenshots/de/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_2_de.png index 2b1558dcee..20037ff02f 100644 --- a/screenshots/de/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_2_de.png +++ b/screenshots/de/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bf7d1f09bab959388076676f703e452bf38b897992cce533c65459dff6a84358 -size 41018 +oid sha256:596170a7b2c00ac6eb404480a1759a1906922684c04bc7c2f43792c7bb05ae53 +size 37312 diff --git a/screenshots/de/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_3_de.png b/screenshots/de/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_3_de.png index 0e3220cc19..0179ead8fb 100644 --- a/screenshots/de/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_3_de.png +++ b/screenshots/de/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5c1990356bc445d80fded93320e5f9ec067d2cdf03730dd4e528af6655f9bf40 -size 42841 +oid sha256:f749d6fa0d163cf7375a7b541ce19972ab53d66d4c85e0aa19fd9ca74ecb6cf4 +size 39354 diff --git a/screenshots/de/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_4_de.png b/screenshots/de/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_4_de.png index 2b1558dcee..20037ff02f 100644 --- a/screenshots/de/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_4_de.png +++ b/screenshots/de/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bf7d1f09bab959388076676f703e452bf38b897992cce533c65459dff6a84358 -size 41018 +oid sha256:596170a7b2c00ac6eb404480a1759a1906922684c04bc7c2f43792c7bb05ae53 +size 37312 diff --git a/screenshots/de/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_5_de.png b/screenshots/de/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_5_de.png index 0e3220cc19..0179ead8fb 100644 --- a/screenshots/de/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_5_de.png +++ b/screenshots/de/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5c1990356bc445d80fded93320e5f9ec067d2cdf03730dd4e528af6655f9bf40 -size 42841 +oid sha256:f749d6fa0d163cf7375a7b541ce19972ab53d66d4c85e0aa19fd9ca74ecb6cf4 +size 39354 diff --git a/screenshots/de/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_6_de.png b/screenshots/de/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_6_de.png index 413a74a7fb..4a21c88bd0 100644 --- a/screenshots/de/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_6_de.png +++ b/screenshots/de/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_6_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:59bdccb73987b701b93fc097e06783cd244107b5dfd6076e5fe24a46ce1c2e7d -size 48537 +oid sha256:348e60ce0a5e1f0ae233ccd31e7737c383d8982726972c90f9f5bcf576b9dfde +size 44126 diff --git a/screenshots/de/features.roomlist.impl.components_RoomListContentView_Day_3_de.png b/screenshots/de/features.roomlist.impl.components_RoomListContentView_Day_3_de.png index cbd669d566..971888c147 100644 --- a/screenshots/de/features.roomlist.impl.components_RoomListContentView_Day_3_de.png +++ b/screenshots/de/features.roomlist.impl.components_RoomListContentView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bf817ab6793f7cd3c437a51d347f210cee61d1974d17b89a3a1a21a2befc7e22 -size 21350 +oid sha256:a8de94c413f4dae795c37e7ec2c0790cccb007ffa24f1877d0ae20d3b141574e +size 22646 diff --git a/screenshots/de/features.roomlist.impl.components_RoomListContentView_Day_4_de.png b/screenshots/de/features.roomlist.impl.components_RoomListContentView_Day_4_de.png index cf5fa28046..a2fb2f9928 100644 --- a/screenshots/de/features.roomlist.impl.components_RoomListContentView_Day_4_de.png +++ b/screenshots/de/features.roomlist.impl.components_RoomListContentView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:65e0dc96d3c321ff60f1ce24a119ceb17c6f3262f8c0174729015fd01828dac0 -size 55622 +oid sha256:63a544533408997cd21e53f4303b062b2bfc5fc6833210e9e813e54a2b9f6f8a +size 56945 diff --git a/screenshots/de/features.roomlist.impl_RoomListDeclineInviteMenuContent_Day_0_de.png b/screenshots/de/features.roomlist.impl_RoomListDeclineInviteMenuContent_Day_0_de.png index c18558eb18..0b9bf1ebba 100644 --- a/screenshots/de/features.roomlist.impl_RoomListDeclineInviteMenuContent_Day_0_de.png +++ b/screenshots/de/features.roomlist.impl_RoomListDeclineInviteMenuContent_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bd8ed72b4e9a2daf9981429b15017c587351a042e50d11ba1ef5c5305caa2bbf -size 29469 +oid sha256:ccf1dfef74f6e7d7237f65d51e8beccb332e562a90b736f8fb6abf5f2a2780c8 +size 29514 diff --git a/screenshots/de/features.roomlist.impl_RoomListView_Day_7_de.png b/screenshots/de/features.roomlist.impl_RoomListView_Day_7_de.png index 4140aa5b02..2b16436820 100644 --- a/screenshots/de/features.roomlist.impl_RoomListView_Day_7_de.png +++ b/screenshots/de/features.roomlist.impl_RoomListView_Day_7_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:455d024e2b89fbbc27d80b87ad35f378aaae54e2d5e53804b0f43a92a9ece072 -size 49170 +oid sha256:1125f3cc2f072a6dbb20a4b5ec2a38e6b64ce4f63999f07076978ee61aada93d +size 50269 diff --git a/screenshots/de/features.userprofile.shared_UserProfileView_Day_0_de.png b/screenshots/de/features.userprofile.shared_UserProfileView_Day_0_de.png index 0fc6b92e29..9b265262bc 100644 --- a/screenshots/de/features.userprofile.shared_UserProfileView_Day_0_de.png +++ b/screenshots/de/features.userprofile.shared_UserProfileView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4945f14720c561504ee460fb88294683881f96ec6038008806100a76f528a308 -size 26163 +oid sha256:c306232fc144adf7089d62cd867daf9a9abab26dadc3970330c3115196b3d712 +size 25733 diff --git a/screenshots/de/features.userprofile.shared_UserProfileView_Day_1_de.png b/screenshots/de/features.userprofile.shared_UserProfileView_Day_1_de.png index 7fa7119dfe..b388b44d13 100644 --- a/screenshots/de/features.userprofile.shared_UserProfileView_Day_1_de.png +++ b/screenshots/de/features.userprofile.shared_UserProfileView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c2fd05a1ff0319b83914fa09677e5347bfa73cb9926cfef0e935bb91f6ea8135 -size 24100 +oid sha256:1693b3caa69c3da46ca80b7d36edd6ae69b8596b376c92f0c446457329f58e9e +size 23749 diff --git a/screenshots/de/features.userprofile.shared_UserProfileView_Day_3_de.png b/screenshots/de/features.userprofile.shared_UserProfileView_Day_3_de.png index 9c009c53cd..eaed9fdd2a 100644 --- a/screenshots/de/features.userprofile.shared_UserProfileView_Day_3_de.png +++ b/screenshots/de/features.userprofile.shared_UserProfileView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:80af780db60b2804086e405cc33a3a05d511ec9cc9582b930d1ea4828467d153 -size 45134 +oid sha256:1224eff2644a6aaea8b429f9a2e228dc16ec6d5adaa753197f9f580dc16dc43a +size 43605 diff --git a/screenshots/de/features.userprofile.shared_UserProfileView_Day_4_de.png b/screenshots/de/features.userprofile.shared_UserProfileView_Day_4_de.png index cafaf6d7fe..8e839d09c0 100644 --- a/screenshots/de/features.userprofile.shared_UserProfileView_Day_4_de.png +++ b/screenshots/de/features.userprofile.shared_UserProfileView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d4efaf4cfae0738d3ea3e6640e4fa0b2f6ccfd4b5c5a48505571e8442f63765d -size 37323 +oid sha256:9762e6ba62819e125f207ff88638383e8af90ea57b1e02b083718ce0df3e9391 +size 37210 diff --git a/screenshots/de/features.userprofile.shared_UserProfileView_Day_6_de.png b/screenshots/de/features.userprofile.shared_UserProfileView_Day_6_de.png index 2d54ddb4c0..a49110d286 100644 --- a/screenshots/de/features.userprofile.shared_UserProfileView_Day_6_de.png +++ b/screenshots/de/features.userprofile.shared_UserProfileView_Day_6_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d0b871a866f4ad090f4559ef636e709b332dbfdbe002caaa6fb162d6edde63c7 -size 25680 +oid sha256:cf53dfe0613ded9f9560231b44b91513626ffc7bc207bc907f85d210fa02468d +size 25327 diff --git a/screenshots/de/features.userprofile.shared_UserProfileView_Day_7_de.png b/screenshots/de/features.userprofile.shared_UserProfileView_Day_7_de.png index 0f162ab3ea..1473c91fda 100644 --- a/screenshots/de/features.userprofile.shared_UserProfileView_Day_7_de.png +++ b/screenshots/de/features.userprofile.shared_UserProfileView_Day_7_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9bc59d332e03ec30c2400420d20a0dda23face75ac40462282f36ecf0042128d -size 27262 +oid sha256:97fbfad0ad0fb7f73d04cfeeb1e3f452ea0704a32828036bf5023a7b94f12379 +size 26839 diff --git a/screenshots/de/features.userprofile.shared_UserProfileView_Day_9_de.png b/screenshots/de/features.userprofile.shared_UserProfileView_Day_9_de.png index 070569718d..cbec65fcb8 100644 --- a/screenshots/de/features.userprofile.shared_UserProfileView_Day_9_de.png +++ b/screenshots/de/features.userprofile.shared_UserProfileView_Day_9_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:39ad338c3bc4280fc1d55e2be7fad89ab82a067169df6b03375e9bd6e82b5523 -size 34587 +oid sha256:16a5afedfc4fc23f47af53cf6767cce771ab4df495e79916816179ebc09a3306 +size 34210 diff --git a/screenshots/de/libraries.matrix.ui.components_CheckableUnresolvedUserRow_de.png b/screenshots/de/libraries.matrix.ui.components_CheckableUnresolvedUserRow_de.png index 25574462ef..0a2c8f25a4 100644 --- a/screenshots/de/libraries.matrix.ui.components_CheckableUnresolvedUserRow_de.png +++ b/screenshots/de/libraries.matrix.ui.components_CheckableUnresolvedUserRow_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:83db85d069c295efdf33480db57b8704d2ec9b62cb24dda7fea4f1dc8b72dc45 -size 114344 +oid sha256:135a117af875a1b8ebecbaf4bf4ef86b69ad1ff2d6e207e6d8be5991ba92e658 +size 130475 diff --git a/screenshots/de/libraries.matrix.ui.components_UnresolvedUserRow_de.png b/screenshots/de/libraries.matrix.ui.components_UnresolvedUserRow_de.png index 68cbcb2387..f41c9309ec 100644 --- a/screenshots/de/libraries.matrix.ui.components_UnresolvedUserRow_de.png +++ b/screenshots/de/libraries.matrix.ui.components_UnresolvedUserRow_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:645e78d8341e1cf0424dc16afd5c3d7b71edb9e78dcd8e531e79017b6ce49e89 -size 40393 +oid sha256:ac4dea47d3ad41ada5222a3b5f234b68b4d71189ce5454aa35551de7d3cdf786 +size 40444 diff --git a/screenshots/de/libraries.permissions.api_PermissionsView_Day_0_de.png b/screenshots/de/libraries.permissions.api_PermissionsView_Day_0_de.png index 411feb8410..103e1688da 100644 --- a/screenshots/de/libraries.permissions.api_PermissionsView_Day_0_de.png +++ b/screenshots/de/libraries.permissions.api_PermissionsView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:22132852b0988b54c0f4cafab0fccdc63abaf6a32bbb41d91f3cb0f326f88d17 -size 30879 +oid sha256:809786fd1963b6ffc673655e2eec299c7488636e3bab0f064d513a0901cfd1b3 +size 32773 diff --git a/screenshots/html/data.js b/screenshots/html/data.js index f185b33b3d..1f3ed04ce5 100644 --- a/screenshots/html/data.js +++ b/screenshots/html/data.js @@ -1,69 +1,70 @@ // Generated file, do not edit export const screenshots = [ ["en","en-dark","de",], -["features.preferences.impl.about_AboutView_Day_0_en","features.preferences.impl.about_AboutView_Night_0_en",20224,], +["features.preferences.impl.about_AboutView_Day_0_en","features.preferences.impl.about_AboutView_Night_0_en",20236,], ["features.invite.impl.acceptdecline_AcceptDeclineInviteView_Day_0_en","features.invite.impl.acceptdecline_AcceptDeclineInviteView_Night_0_en",0,], -["features.invite.impl.acceptdecline_AcceptDeclineInviteView_Day_1_en","features.invite.impl.acceptdecline_AcceptDeclineInviteView_Night_1_en",20224,], -["features.invite.impl.acceptdecline_AcceptDeclineInviteView_Day_2_en","features.invite.impl.acceptdecline_AcceptDeclineInviteView_Night_2_en",20224,], -["features.invite.impl.acceptdecline_AcceptDeclineInviteView_Day_3_en","features.invite.impl.acceptdecline_AcceptDeclineInviteView_Night_3_en",20224,], -["features.invite.impl.acceptdecline_AcceptDeclineInviteView_Day_4_en","features.invite.impl.acceptdecline_AcceptDeclineInviteView_Night_4_en",20224,], -["features.logout.impl_AccountDeactivationView_Day_0_en","features.logout.impl_AccountDeactivationView_Night_0_en",20224,], -["features.logout.impl_AccountDeactivationView_Day_1_en","features.logout.impl_AccountDeactivationView_Night_1_en",20224,], -["features.logout.impl_AccountDeactivationView_Day_2_en","features.logout.impl_AccountDeactivationView_Night_2_en",20224,], -["features.logout.impl_AccountDeactivationView_Day_3_en","features.logout.impl_AccountDeactivationView_Night_3_en",20224,], -["features.logout.impl_AccountDeactivationView_Day_4_en","features.logout.impl_AccountDeactivationView_Night_4_en",20224,], +["features.invite.impl.acceptdecline_AcceptDeclineInviteView_Day_1_en","features.invite.impl.acceptdecline_AcceptDeclineInviteView_Night_1_en",20236,], +["features.invite.impl.acceptdecline_AcceptDeclineInviteView_Day_2_en","features.invite.impl.acceptdecline_AcceptDeclineInviteView_Night_2_en",20236,], +["features.invite.impl.acceptdecline_AcceptDeclineInviteView_Day_3_en","features.invite.impl.acceptdecline_AcceptDeclineInviteView_Night_3_en",20236,], +["features.invite.impl.acceptdecline_AcceptDeclineInviteView_Day_4_en","features.invite.impl.acceptdecline_AcceptDeclineInviteView_Night_4_en",20236,], +["features.logout.impl_AccountDeactivationView_Day_0_en","features.logout.impl_AccountDeactivationView_Night_0_en",20236,], +["features.logout.impl_AccountDeactivationView_Day_1_en","features.logout.impl_AccountDeactivationView_Night_1_en",20236,], +["features.logout.impl_AccountDeactivationView_Day_2_en","features.logout.impl_AccountDeactivationView_Night_2_en",20236,], +["features.logout.impl_AccountDeactivationView_Day_3_en","features.logout.impl_AccountDeactivationView_Night_3_en",20236,], +["features.logout.impl_AccountDeactivationView_Day_4_en","features.logout.impl_AccountDeactivationView_Night_4_en",20236,], +["features.login.impl.accountprovider_AccountProviderOtherView_Day_0_en","features.login.impl.accountprovider_AccountProviderOtherView_Night_0_en",20238,], ["features.login.impl.accountprovider_AccountProviderView_Day_0_en","features.login.impl.accountprovider_AccountProviderView_Night_0_en",0,], ["features.login.impl.accountprovider_AccountProviderView_Day_1_en","features.login.impl.accountprovider_AccountProviderView_Night_1_en",0,], ["features.login.impl.accountprovider_AccountProviderView_Day_2_en","features.login.impl.accountprovider_AccountProviderView_Night_2_en",0,], ["features.login.impl.accountprovider_AccountProviderView_Day_3_en","features.login.impl.accountprovider_AccountProviderView_Night_3_en",0,], ["features.messages.impl.actionlist_ActionListViewContent_Day_0_en","features.messages.impl.actionlist_ActionListViewContent_Night_0_en",0,], -["features.messages.impl.actionlist_ActionListViewContent_Day_10_en","features.messages.impl.actionlist_ActionListViewContent_Night_10_en",20224,], -["features.messages.impl.actionlist_ActionListViewContent_Day_11_en","features.messages.impl.actionlist_ActionListViewContent_Night_11_en",20224,], -["features.messages.impl.actionlist_ActionListViewContent_Day_12_en","features.messages.impl.actionlist_ActionListViewContent_Night_12_en",20224,], +["features.messages.impl.actionlist_ActionListViewContent_Day_10_en","features.messages.impl.actionlist_ActionListViewContent_Night_10_en",20236,], +["features.messages.impl.actionlist_ActionListViewContent_Day_11_en","features.messages.impl.actionlist_ActionListViewContent_Night_11_en",20236,], +["features.messages.impl.actionlist_ActionListViewContent_Day_12_en","features.messages.impl.actionlist_ActionListViewContent_Night_12_en",20236,], ["features.messages.impl.actionlist_ActionListViewContent_Day_1_en","features.messages.impl.actionlist_ActionListViewContent_Night_1_en",0,], -["features.messages.impl.actionlist_ActionListViewContent_Day_2_en","features.messages.impl.actionlist_ActionListViewContent_Night_2_en",20224,], -["features.messages.impl.actionlist_ActionListViewContent_Day_3_en","features.messages.impl.actionlist_ActionListViewContent_Night_3_en",20224,], -["features.messages.impl.actionlist_ActionListViewContent_Day_4_en","features.messages.impl.actionlist_ActionListViewContent_Night_4_en",20224,], -["features.messages.impl.actionlist_ActionListViewContent_Day_5_en","features.messages.impl.actionlist_ActionListViewContent_Night_5_en",20224,], -["features.messages.impl.actionlist_ActionListViewContent_Day_6_en","features.messages.impl.actionlist_ActionListViewContent_Night_6_en",20224,], -["features.messages.impl.actionlist_ActionListViewContent_Day_7_en","features.messages.impl.actionlist_ActionListViewContent_Night_7_en",20224,], -["features.messages.impl.actionlist_ActionListViewContent_Day_8_en","features.messages.impl.actionlist_ActionListViewContent_Night_8_en",20224,], -["features.messages.impl.actionlist_ActionListViewContent_Day_9_en","features.messages.impl.actionlist_ActionListViewContent_Night_9_en",20224,], -["features.createroom.impl.addpeople_AddPeopleView_Day_0_en","features.createroom.impl.addpeople_AddPeopleView_Night_0_en",20224,], -["features.createroom.impl.addpeople_AddPeopleView_Day_1_en","features.createroom.impl.addpeople_AddPeopleView_Night_1_en",20224,], -["features.createroom.impl.addpeople_AddPeopleView_Day_2_en","features.createroom.impl.addpeople_AddPeopleView_Night_2_en",20224,], -["features.createroom.impl.addpeople_AddPeopleView_Day_3_en","features.createroom.impl.addpeople_AddPeopleView_Night_3_en",20224,], -["features.preferences.impl.advanced_AdvancedSettingsViewDark_0_en","",20224,], -["features.preferences.impl.advanced_AdvancedSettingsViewDark_1_en","",20224,], -["features.preferences.impl.advanced_AdvancedSettingsViewDark_2_en","",20224,], -["features.preferences.impl.advanced_AdvancedSettingsViewDark_3_en","",20224,], -["features.preferences.impl.advanced_AdvancedSettingsViewDark_4_en","",20224,], -["features.preferences.impl.advanced_AdvancedSettingsViewDark_5_en","",20224,], -["features.preferences.impl.advanced_AdvancedSettingsViewLight_0_en","",20224,], -["features.preferences.impl.advanced_AdvancedSettingsViewLight_1_en","",20224,], -["features.preferences.impl.advanced_AdvancedSettingsViewLight_2_en","",20224,], -["features.preferences.impl.advanced_AdvancedSettingsViewLight_3_en","",20224,], -["features.preferences.impl.advanced_AdvancedSettingsViewLight_4_en","",20224,], -["features.preferences.impl.advanced_AdvancedSettingsViewLight_5_en","",20224,], -["libraries.designsystem.components.dialogs_AlertDialogContent_Dialogs_en","",20224,], -["libraries.designsystem.components.dialogs_AlertDialog_Day_0_en","libraries.designsystem.components.dialogs_AlertDialog_Night_0_en",20224,], -["features.analytics.impl_AnalyticsOptInView_Day_0_en","features.analytics.impl_AnalyticsOptInView_Night_0_en",20224,], -["features.analytics.impl_AnalyticsOptInView_Day_1_en","features.analytics.impl_AnalyticsOptInView_Night_1_en",20224,], -["features.analytics.api.preferences_AnalyticsPreferencesView_Day_0_en","features.analytics.api.preferences_AnalyticsPreferencesView_Night_0_en",20224,], -["features.analytics.api.preferences_AnalyticsPreferencesView_Day_1_en","features.analytics.api.preferences_AnalyticsPreferencesView_Night_1_en",20224,], -["features.preferences.impl.analytics_AnalyticsSettingsView_Day_0_en","features.preferences.impl.analytics_AnalyticsSettingsView_Night_0_en",20224,], +["features.messages.impl.actionlist_ActionListViewContent_Day_2_en","features.messages.impl.actionlist_ActionListViewContent_Night_2_en",20236,], +["features.messages.impl.actionlist_ActionListViewContent_Day_3_en","features.messages.impl.actionlist_ActionListViewContent_Night_3_en",20236,], +["features.messages.impl.actionlist_ActionListViewContent_Day_4_en","features.messages.impl.actionlist_ActionListViewContent_Night_4_en",20236,], +["features.messages.impl.actionlist_ActionListViewContent_Day_5_en","features.messages.impl.actionlist_ActionListViewContent_Night_5_en",20236,], +["features.messages.impl.actionlist_ActionListViewContent_Day_6_en","features.messages.impl.actionlist_ActionListViewContent_Night_6_en",20236,], +["features.messages.impl.actionlist_ActionListViewContent_Day_7_en","features.messages.impl.actionlist_ActionListViewContent_Night_7_en",20236,], +["features.messages.impl.actionlist_ActionListViewContent_Day_8_en","features.messages.impl.actionlist_ActionListViewContent_Night_8_en",20236,], +["features.messages.impl.actionlist_ActionListViewContent_Day_9_en","features.messages.impl.actionlist_ActionListViewContent_Night_9_en",20236,], +["features.createroom.impl.addpeople_AddPeopleView_Day_0_en","features.createroom.impl.addpeople_AddPeopleView_Night_0_en",20236,], +["features.createroom.impl.addpeople_AddPeopleView_Day_1_en","features.createroom.impl.addpeople_AddPeopleView_Night_1_en",20236,], +["features.createroom.impl.addpeople_AddPeopleView_Day_2_en","features.createroom.impl.addpeople_AddPeopleView_Night_2_en",20236,], +["features.createroom.impl.addpeople_AddPeopleView_Day_3_en","features.createroom.impl.addpeople_AddPeopleView_Night_3_en",20236,], +["features.preferences.impl.advanced_AdvancedSettingsViewDark_0_en","",20236,], +["features.preferences.impl.advanced_AdvancedSettingsViewDark_1_en","",20236,], +["features.preferences.impl.advanced_AdvancedSettingsViewDark_2_en","",20236,], +["features.preferences.impl.advanced_AdvancedSettingsViewDark_3_en","",20236,], +["features.preferences.impl.advanced_AdvancedSettingsViewDark_4_en","",20236,], +["features.preferences.impl.advanced_AdvancedSettingsViewDark_5_en","",20236,], +["features.preferences.impl.advanced_AdvancedSettingsViewLight_0_en","",20236,], +["features.preferences.impl.advanced_AdvancedSettingsViewLight_1_en","",20236,], +["features.preferences.impl.advanced_AdvancedSettingsViewLight_2_en","",20236,], +["features.preferences.impl.advanced_AdvancedSettingsViewLight_3_en","",20236,], +["features.preferences.impl.advanced_AdvancedSettingsViewLight_4_en","",20236,], +["features.preferences.impl.advanced_AdvancedSettingsViewLight_5_en","",20236,], +["libraries.designsystem.components.dialogs_AlertDialogContent_Dialogs_en","",20236,], +["libraries.designsystem.components.dialogs_AlertDialog_Day_0_en","libraries.designsystem.components.dialogs_AlertDialog_Night_0_en",20236,], +["features.analytics.impl_AnalyticsOptInView_Day_0_en","features.analytics.impl_AnalyticsOptInView_Night_0_en",20236,], +["features.analytics.impl_AnalyticsOptInView_Day_1_en","features.analytics.impl_AnalyticsOptInView_Night_1_en",20236,], +["features.analytics.api.preferences_AnalyticsPreferencesView_Day_0_en","features.analytics.api.preferences_AnalyticsPreferencesView_Night_0_en",20236,], +["features.analytics.api.preferences_AnalyticsPreferencesView_Day_1_en","features.analytics.api.preferences_AnalyticsPreferencesView_Night_1_en",20236,], +["features.preferences.impl.analytics_AnalyticsSettingsView_Day_0_en","features.preferences.impl.analytics_AnalyticsSettingsView_Night_0_en",20236,], ["libraries.designsystem.components_Announcement_Day_0_en","libraries.designsystem.components_Announcement_Night_0_en",0,], -["services.apperror.impl_AppErrorView_Day_0_en","services.apperror.impl_AppErrorView_Night_0_en",20224,], +["services.apperror.impl_AppErrorView_Day_0_en","services.apperror.impl_AppErrorView_Night_0_en",20236,], ["libraries.designsystem.components.async_AsyncActionView_Day_0_en","libraries.designsystem.components.async_AsyncActionView_Night_0_en",0,], -["libraries.designsystem.components.async_AsyncActionView_Day_1_en","libraries.designsystem.components.async_AsyncActionView_Night_1_en",20224,], +["libraries.designsystem.components.async_AsyncActionView_Day_1_en","libraries.designsystem.components.async_AsyncActionView_Night_1_en",20236,], ["libraries.designsystem.components.async_AsyncActionView_Day_2_en","libraries.designsystem.components.async_AsyncActionView_Night_2_en",0,], -["libraries.designsystem.components.async_AsyncActionView_Day_3_en","libraries.designsystem.components.async_AsyncActionView_Night_3_en",20224,], +["libraries.designsystem.components.async_AsyncActionView_Day_3_en","libraries.designsystem.components.async_AsyncActionView_Night_3_en",20236,], ["libraries.designsystem.components.async_AsyncActionView_Day_4_en","libraries.designsystem.components.async_AsyncActionView_Night_4_en",0,], -["libraries.designsystem.components.async_AsyncFailure_Day_0_en","libraries.designsystem.components.async_AsyncFailure_Night_0_en",20224,], +["libraries.designsystem.components.async_AsyncFailure_Day_0_en","libraries.designsystem.components.async_AsyncFailure_Night_0_en",20236,], ["libraries.designsystem.components.async_AsyncIndicatorFailure_Day_0_en","libraries.designsystem.components.async_AsyncIndicatorFailure_Night_0_en",0,], ["libraries.designsystem.components.async_AsyncIndicatorLoading_Day_0_en","libraries.designsystem.components.async_AsyncIndicatorLoading_Night_0_en",0,], ["libraries.designsystem.components.async_AsyncLoading_Day_0_en","libraries.designsystem.components.async_AsyncLoading_Night_0_en",0,], -["features.messages.impl.messagecomposer_AttachmentSourcePickerMenu_Day_0_en","features.messages.impl.messagecomposer_AttachmentSourcePickerMenu_Night_0_en",20224,], +["features.messages.impl.messagecomposer_AttachmentSourcePickerMenu_Day_0_en","features.messages.impl.messagecomposer_AttachmentSourcePickerMenu_Night_0_en",20236,], ["libraries.matrix.ui.components_AttachmentThumbnail_Day_0_en","libraries.matrix.ui.components_AttachmentThumbnail_Night_0_en",0,], ["libraries.matrix.ui.components_AttachmentThumbnail_Day_1_en","libraries.matrix.ui.components_AttachmentThumbnail_Night_1_en",0,], ["libraries.matrix.ui.components_AttachmentThumbnail_Day_2_en","libraries.matrix.ui.components_AttachmentThumbnail_Night_2_en",0,], @@ -73,18 +74,18 @@ export const screenshots = [ ["libraries.matrix.ui.components_AttachmentThumbnail_Day_6_en","libraries.matrix.ui.components_AttachmentThumbnail_Night_6_en",0,], ["libraries.matrix.ui.components_AttachmentThumbnail_Day_7_en","libraries.matrix.ui.components_AttachmentThumbnail_Night_7_en",0,], ["libraries.matrix.ui.components_AttachmentThumbnail_Day_8_en","libraries.matrix.ui.components_AttachmentThumbnail_Night_8_en",0,], -["features.messages.impl.attachments.preview_AttachmentsView_0_en","",20224,], -["features.messages.impl.attachments.preview_AttachmentsView_1_en","",20224,], -["features.messages.impl.attachments.preview_AttachmentsView_2_en","",20224,], -["features.messages.impl.attachments.preview_AttachmentsView_3_en","",20224,], -["features.messages.impl.attachments.preview_AttachmentsView_4_en","",20224,], -["features.messages.impl.attachments.preview_AttachmentsView_5_en","",20224,], +["features.messages.impl.attachments.preview_AttachmentsView_0_en","",20236,], +["features.messages.impl.attachments.preview_AttachmentsView_1_en","",20236,], +["features.messages.impl.attachments.preview_AttachmentsView_2_en","",20236,], +["features.messages.impl.attachments.preview_AttachmentsView_3_en","",20236,], +["features.messages.impl.attachments.preview_AttachmentsView_4_en","",20236,], +["features.messages.impl.attachments.preview_AttachmentsView_5_en","",20236,], ["features.messages.impl.attachments.preview_AttachmentsView_6_en","",0,], -["features.messages.impl.attachments.preview_AttachmentsView_7_en","",20224,], +["features.messages.impl.attachments.preview_AttachmentsView_7_en","",20236,], ["libraries.mediaviewer.impl.gallery.ui_AudioItemView_Day_0_en","libraries.mediaviewer.impl.gallery.ui_AudioItemView_Night_0_en",0,], ["libraries.mediaviewer.impl.gallery.ui_AudioItemView_Day_1_en","libraries.mediaviewer.impl.gallery.ui_AudioItemView_Night_1_en",0,], ["libraries.mediaviewer.impl.gallery.ui_AudioItemView_Day_2_en","libraries.mediaviewer.impl.gallery.ui_AudioItemView_Night_2_en",0,], -["libraries.matrix.ui.components_AvatarActionBottomSheet_Day_0_en","libraries.matrix.ui.components_AvatarActionBottomSheet_Night_0_en",20224,], +["libraries.matrix.ui.components_AvatarActionBottomSheet_Day_0_en","libraries.matrix.ui.components_AvatarActionBottomSheet_Night_0_en",20236,], ["features.knockrequests.impl.banner_AvatarRowRtl_Day_0_en","features.knockrequests.impl.banner_AvatarRowRtl_Night_0_en",0,], ["features.knockrequests.impl.banner_AvatarRowRtl_Day_1_en","features.knockrequests.impl.banner_AvatarRowRtl_Night_1_en",0,], ["features.knockrequests.impl.banner_AvatarRowRtl_Day_2_en","features.knockrequests.impl.banner_AvatarRowRtl_Night_2_en",0,], @@ -192,13 +193,13 @@ export const screenshots = [ ["libraries.designsystem.components_Badge_Day_0_en","libraries.designsystem.components_Badge_Night_0_en",0,], ["libraries.designsystem.components_BigCheckmark_Day_0_en","libraries.designsystem.components_BigCheckmark_Night_0_en",0,], ["libraries.designsystem.components_BigIcon_Day_0_en","libraries.designsystem.components_BigIcon_Night_0_en",0,], -["features.preferences.impl.blockedusers_BlockedUsersView_Day_0_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_0_en",20224,], -["features.preferences.impl.blockedusers_BlockedUsersView_Day_1_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_1_en",20224,], -["features.preferences.impl.blockedusers_BlockedUsersView_Day_2_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_2_en",20224,], -["features.preferences.impl.blockedusers_BlockedUsersView_Day_3_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_3_en",20224,], -["features.preferences.impl.blockedusers_BlockedUsersView_Day_4_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_4_en",20224,], -["features.preferences.impl.blockedusers_BlockedUsersView_Day_5_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_5_en",20224,], -["features.preferences.impl.blockedusers_BlockedUsersView_Day_6_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_6_en",20224,], +["features.preferences.impl.blockedusers_BlockedUsersView_Day_0_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_0_en",20236,], +["features.preferences.impl.blockedusers_BlockedUsersView_Day_1_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_1_en",20236,], +["features.preferences.impl.blockedusers_BlockedUsersView_Day_2_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_2_en",20236,], +["features.preferences.impl.blockedusers_BlockedUsersView_Day_3_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_3_en",20236,], +["features.preferences.impl.blockedusers_BlockedUsersView_Day_4_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_4_en",20236,], +["features.preferences.impl.blockedusers_BlockedUsersView_Day_5_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_5_en",20236,], +["features.preferences.impl.blockedusers_BlockedUsersView_Day_6_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_6_en",20236,], ["libraries.designsystem.components_BloomInitials_Day_0_en","libraries.designsystem.components_BloomInitials_Night_0_en",0,], ["libraries.designsystem.components_BloomInitials_Day_1_en","libraries.designsystem.components_BloomInitials_Night_1_en",0,], ["libraries.designsystem.components_BloomInitials_Day_2_en","libraries.designsystem.components_BloomInitials_Night_2_en",0,], @@ -209,136 +210,141 @@ export const screenshots = [ ["libraries.designsystem.components_BloomInitials_Day_7_en","libraries.designsystem.components_BloomInitials_Night_7_en",0,], ["libraries.designsystem.components_Bloom_Day_0_en","libraries.designsystem.components_Bloom_Night_0_en",0,], ["libraries.designsystem.theme.components_BottomSheetDragHandle_Day_0_en","libraries.designsystem.theme.components_BottomSheetDragHandle_Night_0_en",0,], -["features.rageshake.impl.bugreport_BugReportView_Day_0_en","features.rageshake.impl.bugreport_BugReportView_Night_0_en",20224,], -["features.rageshake.impl.bugreport_BugReportView_Day_1_en","features.rageshake.impl.bugreport_BugReportView_Night_1_en",20224,], -["features.rageshake.impl.bugreport_BugReportView_Day_2_en","features.rageshake.impl.bugreport_BugReportView_Night_2_en",20224,], -["features.rageshake.impl.bugreport_BugReportView_Day_3_en","features.rageshake.impl.bugreport_BugReportView_Night_3_en",20224,], -["features.rageshake.impl.bugreport_BugReportView_Day_4_en","features.rageshake.impl.bugreport_BugReportView_Night_4_en",20224,], +["features.rageshake.impl.bugreport_BugReportView_Day_0_en","features.rageshake.impl.bugreport_BugReportView_Night_0_en",20236,], +["features.rageshake.impl.bugreport_BugReportView_Day_1_en","features.rageshake.impl.bugreport_BugReportView_Night_1_en",20236,], +["features.rageshake.impl.bugreport_BugReportView_Day_2_en","features.rageshake.impl.bugreport_BugReportView_Night_2_en",20236,], +["features.rageshake.impl.bugreport_BugReportView_Day_3_en","features.rageshake.impl.bugreport_BugReportView_Night_3_en",20236,], +["features.rageshake.impl.bugreport_BugReportView_Day_4_en","features.rageshake.impl.bugreport_BugReportView_Night_4_en",20236,], ["libraries.designsystem.atomic.molecules_ButtonColumnMolecule_Day_0_en","libraries.designsystem.atomic.molecules_ButtonColumnMolecule_Night_0_en",0,], ["libraries.designsystem.atomic.molecules_ButtonRowMolecule_Day_0_en","libraries.designsystem.atomic.molecules_ButtonRowMolecule_Night_0_en",0,], ["features.messages.impl.timeline.components_CallMenuItem_Day_0_en","features.messages.impl.timeline.components_CallMenuItem_Night_0_en",0,], ["features.messages.impl.timeline.components_CallMenuItem_Day_1_en","features.messages.impl.timeline.components_CallMenuItem_Night_1_en",0,], -["features.messages.impl.timeline.components_CallMenuItem_Day_2_en","features.messages.impl.timeline.components_CallMenuItem_Night_2_en",20224,], -["features.messages.impl.timeline.components_CallMenuItem_Day_3_en","features.messages.impl.timeline.components_CallMenuItem_Night_3_en",20224,], +["features.messages.impl.timeline.components_CallMenuItem_Day_2_en","features.messages.impl.timeline.components_CallMenuItem_Night_2_en",20236,], +["features.messages.impl.timeline.components_CallMenuItem_Day_3_en","features.messages.impl.timeline.components_CallMenuItem_Night_3_en",20236,], ["features.messages.impl.timeline.components_CallMenuItem_Day_4_en","features.messages.impl.timeline.components_CallMenuItem_Night_4_en",0,], +["features.messages.impl.timeline.components_CallMenuItem_Day_5_en","features.messages.impl.timeline.components_CallMenuItem_Night_5_en",0,], ["features.call.impl.ui_CallScreenPipView_Day_0_en","features.call.impl.ui_CallScreenPipView_Night_0_en",0,], ["features.call.impl.ui_CallScreenPipView_Day_1_en","features.call.impl.ui_CallScreenPipView_Night_1_en",0,], ["features.call.impl.ui_CallScreenView_Day_0_en","features.call.impl.ui_CallScreenView_Night_0_en",0,], -["features.call.impl.ui_CallScreenView_Day_1_en","features.call.impl.ui_CallScreenView_Night_1_en",20224,], -["features.call.impl.ui_CallScreenView_Day_2_en","features.call.impl.ui_CallScreenView_Night_2_en",20224,], -["features.call.impl.ui_CallScreenView_Day_3_en","features.call.impl.ui_CallScreenView_Night_3_en",20224,], -["libraries.textcomposer_CaptionWarningBottomSheet_Day_0_en","libraries.textcomposer_CaptionWarningBottomSheet_Night_0_en",20224,], -["features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Day_0_en","features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Night_0_en",20224,], -["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_0_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_0_en",20224,], -["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_10_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_10_en",20224,], -["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_1_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_1_en",20224,], -["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_2_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_2_en",20224,], -["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_3_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_3_en",20224,], -["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_4_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_4_en",20224,], -["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_5_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_5_en",20224,], -["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_6_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_6_en",20224,], -["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_7_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_7_en",20224,], -["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_8_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_8_en",20224,], -["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_9_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_9_en",20224,], -["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_0_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_0_en",20224,], -["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_1_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_1_en",20224,], -["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_2_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_2_en",20224,], -["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_3_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_3_en",20224,], -["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_4_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_4_en",20224,], -["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_5_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_5_en",20224,], -["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_6_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_6_en",20224,], +["features.call.impl.ui_CallScreenView_Day_1_en","features.call.impl.ui_CallScreenView_Night_1_en",20236,], +["features.call.impl.ui_CallScreenView_Day_2_en","features.call.impl.ui_CallScreenView_Night_2_en",20236,], +["features.call.impl.ui_CallScreenView_Day_3_en","features.call.impl.ui_CallScreenView_Night_3_en",20236,], +["libraries.textcomposer_CaptionWarningBottomSheet_Day_0_en","libraries.textcomposer_CaptionWarningBottomSheet_Night_0_en",20236,], +["features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Day_0_en","features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Night_0_en",20236,], +["features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Day_1_en","features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Night_1_en",20238,], +["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_0_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_0_en",20236,], +["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_10_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_10_en",20236,], +["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_1_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_1_en",20236,], +["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_2_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_2_en",20236,], +["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_3_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_3_en",20236,], +["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_4_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_4_en",20236,], +["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_5_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_5_en",20236,], +["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_6_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_6_en",20236,], +["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_7_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_7_en",20236,], +["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_8_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_8_en",20236,], +["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_9_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_9_en",20236,], +["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_0_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_0_en",20236,], +["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_1_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_1_en",20236,], +["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_2_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_2_en",20236,], +["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_3_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_3_en",20236,], +["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_4_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_4_en",20236,], +["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_5_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_5_en",20236,], +["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_6_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_6_en",20236,], ["features.login.impl.changeserver_ChangeServerView_Day_0_en","features.login.impl.changeserver_ChangeServerView_Night_0_en",0,], -["features.login.impl.changeserver_ChangeServerView_Day_1_en","features.login.impl.changeserver_ChangeServerView_Night_1_en",20224,], -["features.login.impl.changeserver_ChangeServerView_Day_2_en","features.login.impl.changeserver_ChangeServerView_Night_2_en",20224,], -["features.login.impl.changeserver_ChangeServerView_Day_3_en","features.login.impl.changeserver_ChangeServerView_Night_3_en",20224,], +["features.login.impl.changeserver_ChangeServerView_Day_1_en","features.login.impl.changeserver_ChangeServerView_Night_1_en",20236,], +["features.login.impl.changeserver_ChangeServerView_Day_2_en","features.login.impl.changeserver_ChangeServerView_Night_2_en",20236,], +["features.login.impl.changeserver_ChangeServerView_Day_3_en","features.login.impl.changeserver_ChangeServerView_Night_3_en",20236,], ["libraries.matrix.ui.components_CheckableResolvedUserRow_en","",0,], -["libraries.matrix.ui.components_CheckableUnresolvedUserRow_en","",20224,], +["libraries.matrix.ui.components_CheckableUnresolvedUserRow_en","",20236,], ["libraries.designsystem.theme.components_Checkboxes_Toggles_en","",0,], -["features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_0_en","features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_0_en",20224,], -["features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_1_en","features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_1_en",20224,], -["features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_2_en","features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_2_en",20224,], -["features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_3_en","features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_3_en",20224,], +["features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_0_en","features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Night_0_en",20238,], +["features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_1_en","features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Night_1_en",20238,], +["features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_2_en","features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Night_2_en",20238,], +["features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_0_en","features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_0_en",20236,], +["features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_1_en","features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_1_en",20236,], +["features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_2_en","features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_2_en",20236,], +["features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_3_en","features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_3_en",20236,], ["libraries.designsystem.theme.components_CircularProgressIndicator_Progress_Indicators_en","",0,], ["libraries.designsystem.components_ClickableLinkText_Text_en","",0,], ["libraries.designsystem.theme_ColorAliases_Day_0_en","libraries.designsystem.theme_ColorAliases_Night_0_en",0,], -["libraries.designsystem.atomic.molecules_ComposerAlertMolecule_Day_0_en","libraries.designsystem.atomic.molecules_ComposerAlertMolecule_Night_0_en",20224,], -["libraries.designsystem.atomic.molecules_ComposerAlertMolecule_Day_1_en","libraries.designsystem.atomic.molecules_ComposerAlertMolecule_Night_1_en",20224,], -["libraries.textcomposer_ComposerModeView_Day_0_en","libraries.textcomposer_ComposerModeView_Night_0_en",20224,], +["libraries.designsystem.atomic.molecules_ComposerAlertMolecule_Day_0_en","libraries.designsystem.atomic.molecules_ComposerAlertMolecule_Night_0_en",20236,], +["libraries.designsystem.atomic.molecules_ComposerAlertMolecule_Day_1_en","libraries.designsystem.atomic.molecules_ComposerAlertMolecule_Night_1_en",20236,], +["libraries.textcomposer_ComposerModeView_Day_0_en","libraries.textcomposer_ComposerModeView_Night_0_en",20236,], ["libraries.textcomposer_ComposerModeView_Day_1_en","libraries.textcomposer_ComposerModeView_Night_1_en",0,], ["libraries.textcomposer_ComposerModeView_Day_2_en","libraries.textcomposer_ComposerModeView_Night_2_en",0,], ["libraries.textcomposer_ComposerModeView_Day_3_en","libraries.textcomposer_ComposerModeView_Night_3_en",0,], ["libraries.designsystem.components.avatar_CompositeAvatar_Avatars_en","",0,], -["features.createroom.impl.configureroom_ConfigureRoomViewDark_0_en","",20224,], -["features.createroom.impl.configureroom_ConfigureRoomViewDark_1_en","",20224,], -["features.createroom.impl.configureroom_ConfigureRoomViewDark_2_en","",20224,], -["features.createroom.impl.configureroom_ConfigureRoomViewDark_3_en","",20224,], -["features.createroom.impl.configureroom_ConfigureRoomViewDark_4_en","",20224,], -["features.createroom.impl.configureroom_ConfigureRoomViewDark_5_en","",20224,], -["features.createroom.impl.configureroom_ConfigureRoomViewLight_0_en","",20224,], -["features.createroom.impl.configureroom_ConfigureRoomViewLight_1_en","",20224,], -["features.createroom.impl.configureroom_ConfigureRoomViewLight_2_en","",20224,], -["features.createroom.impl.configureroom_ConfigureRoomViewLight_3_en","",20224,], -["features.createroom.impl.configureroom_ConfigureRoomViewLight_4_en","",20224,], -["features.createroom.impl.configureroom_ConfigureRoomViewLight_5_en","",20224,], -["features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_0_en","features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Night_0_en",20224,], -["features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_1_en","features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Night_1_en",20224,], -["features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_2_en","features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Night_2_en",20224,], -["features.roomlist.impl.components_ConfirmRecoveryKeyBanner_Day_0_en","features.roomlist.impl.components_ConfirmRecoveryKeyBanner_Night_0_en",20224,], +["features.createroom.impl.configureroom_ConfigureRoomViewDark_0_en","",20236,], +["features.createroom.impl.configureroom_ConfigureRoomViewDark_1_en","",20236,], +["features.createroom.impl.configureroom_ConfigureRoomViewDark_2_en","",20236,], +["features.createroom.impl.configureroom_ConfigureRoomViewDark_3_en","",20236,], +["features.createroom.impl.configureroom_ConfigureRoomViewDark_4_en","",20236,], +["features.createroom.impl.configureroom_ConfigureRoomViewDark_5_en","",20236,], +["features.createroom.impl.configureroom_ConfigureRoomViewLight_0_en","",20236,], +["features.createroom.impl.configureroom_ConfigureRoomViewLight_1_en","",20236,], +["features.createroom.impl.configureroom_ConfigureRoomViewLight_2_en","",20236,], +["features.createroom.impl.configureroom_ConfigureRoomViewLight_3_en","",20236,], +["features.createroom.impl.configureroom_ConfigureRoomViewLight_4_en","",20236,], +["features.createroom.impl.configureroom_ConfigureRoomViewLight_5_en","",20236,], +["features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_0_en","features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Night_0_en",20236,], +["features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_1_en","features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Night_1_en",20236,], +["features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_2_en","features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Night_2_en",20236,], +["features.roomlist.impl.components_ConfirmRecoveryKeyBanner_Day_0_en","features.roomlist.impl.components_ConfirmRecoveryKeyBanner_Night_0_en",20236,], ["libraries.designsystem.components.dialogs_ConfirmationDialogContent_Dialogs_en","",0,], ["libraries.designsystem.components.dialogs_ConfirmationDialog_Day_0_en","libraries.designsystem.components.dialogs_ConfirmationDialog_Night_0_en",0,], ["features.networkmonitor.api.ui_ConnectivityIndicatorView_Day_0_en","features.networkmonitor.api.ui_ConnectivityIndicatorView_Night_0_en",0,], ["libraries.designsystem.atomic.atoms_CounterAtom_Day_0_en","libraries.designsystem.atomic.atoms_CounterAtom_Night_0_en",0,], -["features.rageshake.api.crash_CrashDetectionView_Day_0_en","features.rageshake.api.crash_CrashDetectionView_Night_0_en",20224,], -["features.login.impl.screens.createaccount_CreateAccountView_Day_0_en","features.login.impl.screens.createaccount_CreateAccountView_Night_0_en",20224,], -["features.login.impl.screens.createaccount_CreateAccountView_Day_1_en","features.login.impl.screens.createaccount_CreateAccountView_Night_1_en",20224,], -["features.login.impl.screens.createaccount_CreateAccountView_Day_2_en","features.login.impl.screens.createaccount_CreateAccountView_Night_2_en",20224,], -["features.login.impl.screens.createaccount_CreateAccountView_Day_3_en","features.login.impl.screens.createaccount_CreateAccountView_Night_3_en",20224,], -["libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Day_0_en","libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Night_0_en",20224,], -["libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Day_1_en","libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Night_1_en",20224,], -["features.poll.impl.create_CreatePollView_Day_0_en","features.poll.impl.create_CreatePollView_Night_0_en",20224,], -["features.poll.impl.create_CreatePollView_Day_1_en","features.poll.impl.create_CreatePollView_Night_1_en",20224,], -["features.poll.impl.create_CreatePollView_Day_2_en","features.poll.impl.create_CreatePollView_Night_2_en",20224,], -["features.poll.impl.create_CreatePollView_Day_3_en","features.poll.impl.create_CreatePollView_Night_3_en",20224,], -["features.poll.impl.create_CreatePollView_Day_4_en","features.poll.impl.create_CreatePollView_Night_4_en",20224,], -["features.poll.impl.create_CreatePollView_Day_5_en","features.poll.impl.create_CreatePollView_Night_5_en",20224,], -["features.poll.impl.create_CreatePollView_Day_6_en","features.poll.impl.create_CreatePollView_Night_6_en",20224,], -["features.poll.impl.create_CreatePollView_Day_7_en","features.poll.impl.create_CreatePollView_Night_7_en",20224,], -["features.createroom.impl.root_CreateRoomRootView_Day_0_en","features.createroom.impl.root_CreateRoomRootView_Night_0_en",20224,], -["features.createroom.impl.root_CreateRoomRootView_Day_1_en","features.createroom.impl.root_CreateRoomRootView_Night_1_en",20224,], -["features.createroom.impl.root_CreateRoomRootView_Day_2_en","features.createroom.impl.root_CreateRoomRootView_Night_2_en",20224,], -["features.createroom.impl.root_CreateRoomRootView_Day_3_en","features.createroom.impl.root_CreateRoomRootView_Night_3_en",20224,], -["features.createroom.impl.root_CreateRoomRootView_Day_4_en","features.createroom.impl.root_CreateRoomRootView_Night_4_en",20224,], -["features.createroom.impl.root_CreateRoomRootView_Day_5_en","features.createroom.impl.root_CreateRoomRootView_Night_5_en",20224,], -["libraries.dateformatter.impl.previews_DateFormatterModeView_0_en","",20224,], -["libraries.dateformatter.impl.previews_DateFormatterModeView_1_en","",20224,], -["libraries.dateformatter.impl.previews_DateFormatterModeView_2_en","",20224,], -["libraries.dateformatter.impl.previews_DateFormatterModeView_3_en","",20224,], -["libraries.dateformatter.impl.previews_DateFormatterModeView_4_en","",20224,], +["features.rageshake.api.crash_CrashDetectionView_Day_0_en","features.rageshake.api.crash_CrashDetectionView_Night_0_en",20236,], +["features.login.impl.screens.createaccount_CreateAccountView_Day_0_en","features.login.impl.screens.createaccount_CreateAccountView_Night_0_en",20236,], +["features.login.impl.screens.createaccount_CreateAccountView_Day_1_en","features.login.impl.screens.createaccount_CreateAccountView_Night_1_en",20236,], +["features.login.impl.screens.createaccount_CreateAccountView_Day_2_en","features.login.impl.screens.createaccount_CreateAccountView_Night_2_en",20236,], +["features.login.impl.screens.createaccount_CreateAccountView_Day_3_en","features.login.impl.screens.createaccount_CreateAccountView_Night_3_en",20236,], +["libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Day_0_en","libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Night_0_en",20236,], +["libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Day_1_en","libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Night_1_en",20236,], +["features.poll.impl.create_CreatePollView_Day_0_en","features.poll.impl.create_CreatePollView_Night_0_en",20236,], +["features.poll.impl.create_CreatePollView_Day_1_en","features.poll.impl.create_CreatePollView_Night_1_en",20236,], +["features.poll.impl.create_CreatePollView_Day_2_en","features.poll.impl.create_CreatePollView_Night_2_en",20236,], +["features.poll.impl.create_CreatePollView_Day_3_en","features.poll.impl.create_CreatePollView_Night_3_en",20236,], +["features.poll.impl.create_CreatePollView_Day_4_en","features.poll.impl.create_CreatePollView_Night_4_en",20236,], +["features.poll.impl.create_CreatePollView_Day_5_en","features.poll.impl.create_CreatePollView_Night_5_en",20236,], +["features.poll.impl.create_CreatePollView_Day_6_en","features.poll.impl.create_CreatePollView_Night_6_en",20236,], +["features.poll.impl.create_CreatePollView_Day_7_en","features.poll.impl.create_CreatePollView_Night_7_en",20236,], +["features.createroom.impl.root_CreateRoomRootView_Day_0_en","features.createroom.impl.root_CreateRoomRootView_Night_0_en",20236,], +["features.createroom.impl.root_CreateRoomRootView_Day_1_en","features.createroom.impl.root_CreateRoomRootView_Night_1_en",20236,], +["features.createroom.impl.root_CreateRoomRootView_Day_2_en","features.createroom.impl.root_CreateRoomRootView_Night_2_en",20236,], +["features.createroom.impl.root_CreateRoomRootView_Day_3_en","features.createroom.impl.root_CreateRoomRootView_Night_3_en",20236,], +["features.createroom.impl.root_CreateRoomRootView_Day_4_en","features.createroom.impl.root_CreateRoomRootView_Night_4_en",20236,], +["features.createroom.impl.root_CreateRoomRootView_Day_5_en","features.createroom.impl.root_CreateRoomRootView_Night_5_en",20236,], +["libraries.dateformatter.impl.previews_DateFormatterModeView_0_en","",20236,], +["libraries.dateformatter.impl.previews_DateFormatterModeView_1_en","",20236,], +["libraries.dateformatter.impl.previews_DateFormatterModeView_2_en","",20236,], +["libraries.dateformatter.impl.previews_DateFormatterModeView_3_en","",20236,], +["libraries.dateformatter.impl.previews_DateFormatterModeView_4_en","",20236,], ["libraries.mediaviewer.impl.gallery.ui_DateItemView_Day_0_en","libraries.mediaviewer.impl.gallery.ui_DateItemView_Night_0_en",0,], ["libraries.mediaviewer.impl.gallery.ui_DateItemView_Day_1_en","libraries.mediaviewer.impl.gallery.ui_DateItemView_Night_1_en",0,], -["libraries.designsystem.theme.components.previews_DatePickerDark_DateTime_pickers_en","",20224,], -["libraries.designsystem.theme.components.previews_DatePickerLight_DateTime_pickers_en","",20224,], -["features.invite.impl.declineandblock_DeclineAndBlockView_Day_0_en","features.invite.impl.declineandblock_DeclineAndBlockView_Night_0_en",20224,], -["features.invite.impl.declineandblock_DeclineAndBlockView_Day_1_en","features.invite.impl.declineandblock_DeclineAndBlockView_Night_1_en",20224,], -["features.invite.impl.declineandblock_DeclineAndBlockView_Day_2_en","features.invite.impl.declineandblock_DeclineAndBlockView_Night_2_en",20224,], -["features.invite.impl.declineandblock_DeclineAndBlockView_Day_3_en","features.invite.impl.declineandblock_DeclineAndBlockView_Night_3_en",20224,], -["features.invite.impl.declineandblock_DeclineAndBlockView_Day_4_en","features.invite.impl.declineandblock_DeclineAndBlockView_Night_4_en",20224,], +["libraries.designsystem.theme.components.previews_DatePickerDark_DateTime_pickers_en","",20236,], +["libraries.designsystem.theme.components.previews_DatePickerLight_DateTime_pickers_en","",20236,], +["features.invite.impl.declineandblock_DeclineAndBlockView_Day_0_en","features.invite.impl.declineandblock_DeclineAndBlockView_Night_0_en",20236,], +["features.invite.impl.declineandblock_DeclineAndBlockView_Day_1_en","features.invite.impl.declineandblock_DeclineAndBlockView_Night_1_en",20236,], +["features.invite.impl.declineandblock_DeclineAndBlockView_Day_2_en","features.invite.impl.declineandblock_DeclineAndBlockView_Night_2_en",20236,], +["features.invite.impl.declineandblock_DeclineAndBlockView_Day_3_en","features.invite.impl.declineandblock_DeclineAndBlockView_Night_3_en",20236,], +["features.invite.impl.declineandblock_DeclineAndBlockView_Day_4_en","features.invite.impl.declineandblock_DeclineAndBlockView_Night_4_en",20236,], ["features.logout.impl.direct_DefaultDirectLogoutView_Day_0_en","features.logout.impl.direct_DefaultDirectLogoutView_Night_0_en",0,], -["features.logout.impl.direct_DefaultDirectLogoutView_Day_1_en","features.logout.impl.direct_DefaultDirectLogoutView_Night_1_en",20224,], -["features.logout.impl.direct_DefaultDirectLogoutView_Day_2_en","features.logout.impl.direct_DefaultDirectLogoutView_Night_2_en",20224,], -["features.logout.impl.direct_DefaultDirectLogoutView_Day_3_en","features.logout.impl.direct_DefaultDirectLogoutView_Night_3_en",20224,], +["features.logout.impl.direct_DefaultDirectLogoutView_Day_1_en","features.logout.impl.direct_DefaultDirectLogoutView_Night_1_en",20236,], +["features.logout.impl.direct_DefaultDirectLogoutView_Day_2_en","features.logout.impl.direct_DefaultDirectLogoutView_Night_2_en",20236,], +["features.logout.impl.direct_DefaultDirectLogoutView_Day_3_en","features.logout.impl.direct_DefaultDirectLogoutView_Night_3_en",20236,], ["features.logout.impl.direct_DefaultDirectLogoutView_Day_4_en","features.logout.impl.direct_DefaultDirectLogoutView_Night_4_en",0,], -["features.preferences.impl.notifications.edit_DefaultNotificationSettingOption_Day_0_en","features.preferences.impl.notifications.edit_DefaultNotificationSettingOption_Night_0_en",20224,], -["features.roomlist.impl.components_DefaultRoomListTopBarWithIndicator_Day_0_en","features.roomlist.impl.components_DefaultRoomListTopBarWithIndicator_Night_0_en",20224,], -["features.roomlist.impl.components_DefaultRoomListTopBar_Day_0_en","features.roomlist.impl.components_DefaultRoomListTopBar_Night_0_en",20224,], +["features.preferences.impl.notifications.edit_DefaultNotificationSettingOption_Day_0_en","features.preferences.impl.notifications.edit_DefaultNotificationSettingOption_Night_0_en",20236,], +["features.roomlist.impl.components_DefaultRoomListTopBarWithIndicator_Day_0_en","features.roomlist.impl.components_DefaultRoomListTopBarWithIndicator_Night_0_en",20236,], +["features.roomlist.impl.components_DefaultRoomListTopBar_Day_0_en","features.roomlist.impl.components_DefaultRoomListTopBar_Night_0_en",20236,], ["features.licenses.impl.details_DependenciesDetailsView_Day_0_en","features.licenses.impl.details_DependenciesDetailsView_Night_0_en",0,], -["features.licenses.impl.list_DependencyLicensesListView_Day_0_en","features.licenses.impl.list_DependencyLicensesListView_Night_0_en",20224,], -["features.licenses.impl.list_DependencyLicensesListView_Day_1_en","features.licenses.impl.list_DependencyLicensesListView_Night_1_en",20224,], -["features.licenses.impl.list_DependencyLicensesListView_Day_2_en","features.licenses.impl.list_DependencyLicensesListView_Night_2_en",20224,], -["features.licenses.impl.list_DependencyLicensesListView_Day_3_en","features.licenses.impl.list_DependencyLicensesListView_Night_3_en",20224,], -["features.preferences.impl.developer_DeveloperSettingsView_Day_0_en","features.preferences.impl.developer_DeveloperSettingsView_Night_0_en",20224,], -["features.preferences.impl.developer_DeveloperSettingsView_Day_1_en","features.preferences.impl.developer_DeveloperSettingsView_Night_1_en",20224,], -["features.preferences.impl.developer_DeveloperSettingsView_Day_2_en","features.preferences.impl.developer_DeveloperSettingsView_Night_2_en",20224,], +["features.licenses.impl.list_DependencyLicensesListView_Day_0_en","features.licenses.impl.list_DependencyLicensesListView_Night_0_en",20236,], +["features.licenses.impl.list_DependencyLicensesListView_Day_1_en","features.licenses.impl.list_DependencyLicensesListView_Night_1_en",20236,], +["features.licenses.impl.list_DependencyLicensesListView_Day_2_en","features.licenses.impl.list_DependencyLicensesListView_Night_2_en",20236,], +["features.licenses.impl.list_DependencyLicensesListView_Day_3_en","features.licenses.impl.list_DependencyLicensesListView_Night_3_en",20236,], +["features.preferences.impl.developer_DeveloperSettingsView_Day_0_en","features.preferences.impl.developer_DeveloperSettingsView_Night_0_en",20236,], +["features.preferences.impl.developer_DeveloperSettingsView_Day_1_en","features.preferences.impl.developer_DeveloperSettingsView_Night_1_en",20236,], +["features.preferences.impl.developer_DeveloperSettingsView_Day_2_en","features.preferences.impl.developer_DeveloperSettingsView_Night_2_en",20236,], ["libraries.designsystem.theme.components_DialogWithDestructiveButton_Dialog_with_destructive_button_Dialogs_en","",0,], ["libraries.designsystem.theme.components_DialogWithOnlyMessageAndOkButton_Dialog_with_only_message_and_ok_button_Dialogs_en","",0,], ["libraries.designsystem.theme.components_DialogWithThirdButton_Dialog_with_third_button_Dialogs_en","",0,], @@ -351,17 +357,17 @@ export const screenshots = [ ["libraries.designsystem.text_DpScale_1_0f__en","",0,], ["libraries.designsystem.text_DpScale_1_5f__en","",0,], ["libraries.designsystem.theme.components_DropdownMenuItem_Menus_en","",0,], -["features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_0_en","features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_0_en",20224,], -["features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_1_en","features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_1_en",20224,], -["features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_2_en","features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_2_en",20224,], -["features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_3_en","features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_3_en",20224,], -["features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_4_en","features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_4_en",20224,], -["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_0_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_0_en",20224,], -["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_1_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_1_en",20224,], -["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_2_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_2_en",20224,], -["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_3_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_3_en",20224,], -["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_4_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_4_en",20224,], -["features.preferences.impl.user.editprofile_EditUserProfileView_Day_0_en","features.preferences.impl.user.editprofile_EditUserProfileView_Night_0_en",20224,], +["features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_0_en","features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_0_en",20236,], +["features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_1_en","features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_1_en",20236,], +["features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_2_en","features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_2_en",20236,], +["features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_3_en","features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_3_en",20236,], +["features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_4_en","features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_4_en",20236,], +["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_0_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_0_en",20236,], +["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_1_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_1_en",20236,], +["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_2_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_2_en",20236,], +["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_3_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_3_en",20236,], +["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_4_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_4_en",20236,], +["features.preferences.impl.user.editprofile_EditUserProfileView_Day_0_en","features.preferences.impl.user.editprofile_EditUserProfileView_Night_0_en",20236,], ["libraries.matrix.ui.components_EditableAvatarView_Day_0_en","libraries.matrix.ui.components_EditableAvatarView_Night_0_en",0,], ["libraries.matrix.ui.components_EditableAvatarView_Day_1_en","libraries.matrix.ui.components_EditableAvatarView_Night_1_en",0,], ["libraries.matrix.ui.components_EditableAvatarView_Day_2_en","libraries.matrix.ui.components_EditableAvatarView_Night_2_en",0,], @@ -371,9 +377,9 @@ export const screenshots = [ ["libraries.designsystem.atomic.atoms_ElementLogoAtomMedium_Day_0_en","libraries.designsystem.atomic.atoms_ElementLogoAtomMedium_Night_0_en",0,], ["features.messages.impl.timeline.components.customreaction_EmojiItem_Day_0_en","features.messages.impl.timeline.components.customreaction_EmojiItem_Night_0_en",0,], ["features.messages.impl.timeline.components.customreaction_EmojiPicker_Day_0_en","features.messages.impl.timeline.components.customreaction_EmojiPicker_Night_0_en",0,], -["libraries.designsystem.components.dialogs_ErrorDialogContent_Dialogs_en","",20224,], -["libraries.designsystem.components.dialogs_ErrorDialogWithDoNotShowAgain_Day_0_en","libraries.designsystem.components.dialogs_ErrorDialogWithDoNotShowAgain_Night_0_en",20224,], -["libraries.designsystem.components.dialogs_ErrorDialog_Day_0_en","libraries.designsystem.components.dialogs_ErrorDialog_Night_0_en",20224,], +["libraries.designsystem.components.dialogs_ErrorDialogContent_Dialogs_en","",20236,], +["libraries.designsystem.components.dialogs_ErrorDialogWithDoNotShowAgain_Day_0_en","libraries.designsystem.components.dialogs_ErrorDialogWithDoNotShowAgain_Night_0_en",20236,], +["libraries.designsystem.components.dialogs_ErrorDialog_Day_0_en","libraries.designsystem.components.dialogs_ErrorDialog_Night_0_en",20236,], ["features.messages.impl.timeline.debug_EventDebugInfoView_Day_0_en","features.messages.impl.timeline.debug_EventDebugInfoView_Night_0_en",0,], ["libraries.featureflag.ui_FeatureListView_Day_0_en","libraries.featureflag.ui_FeatureListView_Night_0_en",0,], ["libraries.mediaviewer.impl.gallery.ui_FileItemView_Day_0_en","libraries.mediaviewer.impl.gallery.ui_FileItemView_Night_0_en",0,], @@ -391,16 +397,16 @@ export const screenshots = [ ["libraries.designsystem.theme.components_FloatingActionButton_Floating_Action_Buttons_en","",0,], ["libraries.designsystem.atomic.pages_FlowStepPage_Day_0_en","libraries.designsystem.atomic.pages_FlowStepPage_Night_0_en",0,], ["features.messages.impl.timeline.focus_FocusRequestStateView_Day_0_en","features.messages.impl.timeline.focus_FocusRequestStateView_Night_0_en",0,], -["features.messages.impl.timeline.focus_FocusRequestStateView_Day_1_en","features.messages.impl.timeline.focus_FocusRequestStateView_Night_1_en",20224,], -["features.messages.impl.timeline.focus_FocusRequestStateView_Day_2_en","features.messages.impl.timeline.focus_FocusRequestStateView_Night_2_en",20224,], -["features.messages.impl.timeline.focus_FocusRequestStateView_Day_3_en","features.messages.impl.timeline.focus_FocusRequestStateView_Night_3_en",20224,], +["features.messages.impl.timeline.focus_FocusRequestStateView_Day_1_en","features.messages.impl.timeline.focus_FocusRequestStateView_Night_1_en",20236,], +["features.messages.impl.timeline.focus_FocusRequestStateView_Day_2_en","features.messages.impl.timeline.focus_FocusRequestStateView_Night_2_en",20236,], +["features.messages.impl.timeline.focus_FocusRequestStateView_Day_3_en","features.messages.impl.timeline.focus_FocusRequestStateView_Night_3_en",20236,], ["features.messages.impl.timeline.components_FocusedEvent_Day_0_en","features.messages.impl.timeline.components_FocusedEvent_Night_0_en",0,], ["libraries.textcomposer.components_FormattingOption_Day_0_en","libraries.textcomposer.components_FormattingOption_Night_0_en",0,], ["features.messages.impl.forward_ForwardMessagesView_Day_0_en","features.messages.impl.forward_ForwardMessagesView_Night_0_en",0,], ["features.messages.impl.forward_ForwardMessagesView_Day_1_en","features.messages.impl.forward_ForwardMessagesView_Night_1_en",0,], ["features.messages.impl.forward_ForwardMessagesView_Day_2_en","features.messages.impl.forward_ForwardMessagesView_Night_2_en",0,], -["features.messages.impl.forward_ForwardMessagesView_Day_3_en","features.messages.impl.forward_ForwardMessagesView_Night_3_en",20224,], -["features.roomlist.impl.components_FullScreenIntentPermissionBanner_Day_0_en","features.roomlist.impl.components_FullScreenIntentPermissionBanner_Night_0_en",20224,], +["features.messages.impl.forward_ForwardMessagesView_Day_3_en","features.messages.impl.forward_ForwardMessagesView_Night_3_en",20236,], +["features.roomlist.impl.components_FullScreenIntentPermissionBanner_Day_0_en","features.roomlist.impl.components_FullScreenIntentPermissionBanner_Night_0_en",20236,], ["libraries.designsystem.components.button_GradientFloatingActionButtonCircleShape_Day_0_en","libraries.designsystem.components.button_GradientFloatingActionButtonCircleShape_Night_0_en",0,], ["libraries.designsystem.components.button_GradientFloatingActionButton_Day_0_en","libraries.designsystem.components.button_GradientFloatingActionButton_Night_0_en",0,], ["features.messages.impl.timeline.components.group_GroupHeaderView_Day_0_en","features.messages.impl.timeline.components.group_GroupHeaderView_Night_0_en",0,], @@ -424,8 +430,8 @@ export const screenshots = [ ["libraries.designsystem.icons_IconsCompound_Day_5_en","libraries.designsystem.icons_IconsCompound_Night_5_en",0,], ["libraries.designsystem.icons_IconsOther_Day_0_en","libraries.designsystem.icons_IconsOther_Night_0_en",0,], ["features.messages.impl.crypto.identity_IdentityChangeStateView_Day_0_en","features.messages.impl.crypto.identity_IdentityChangeStateView_Night_0_en",0,], -["features.messages.impl.crypto.identity_IdentityChangeStateView_Day_1_en","features.messages.impl.crypto.identity_IdentityChangeStateView_Night_1_en",20224,], -["features.messages.impl.crypto.identity_IdentityChangeStateView_Day_2_en","features.messages.impl.crypto.identity_IdentityChangeStateView_Night_2_en",20224,], +["features.messages.impl.crypto.identity_IdentityChangeStateView_Day_1_en","features.messages.impl.crypto.identity_IdentityChangeStateView_Night_1_en",20236,], +["features.messages.impl.crypto.identity_IdentityChangeStateView_Day_2_en","features.messages.impl.crypto.identity_IdentityChangeStateView_Night_2_en",20236,], ["libraries.mediaviewer.impl.gallery.ui_ImageItemView_Day_0_en","libraries.mediaviewer.impl.gallery.ui_ImageItemView_Night_0_en",0,], ["libraries.matrix.ui.messages.reply_InReplyToView_Day_0_en","libraries.matrix.ui.messages.reply_InReplyToView_Night_0_en",0,], ["libraries.matrix.ui.messages.reply_InReplyToView_Day_10_en","libraries.matrix.ui.messages.reply_InReplyToView_Night_10_en",0,], @@ -433,84 +439,84 @@ export const screenshots = [ ["libraries.matrix.ui.messages.reply_InReplyToView_Day_1_en","libraries.matrix.ui.messages.reply_InReplyToView_Night_1_en",0,], ["libraries.matrix.ui.messages.reply_InReplyToView_Day_2_en","libraries.matrix.ui.messages.reply_InReplyToView_Night_2_en",0,], ["libraries.matrix.ui.messages.reply_InReplyToView_Day_3_en","libraries.matrix.ui.messages.reply_InReplyToView_Night_3_en",0,], -["libraries.matrix.ui.messages.reply_InReplyToView_Day_4_en","libraries.matrix.ui.messages.reply_InReplyToView_Night_4_en",20224,], +["libraries.matrix.ui.messages.reply_InReplyToView_Day_4_en","libraries.matrix.ui.messages.reply_InReplyToView_Night_4_en",20236,], ["libraries.matrix.ui.messages.reply_InReplyToView_Day_5_en","libraries.matrix.ui.messages.reply_InReplyToView_Night_5_en",0,], ["libraries.matrix.ui.messages.reply_InReplyToView_Day_6_en","libraries.matrix.ui.messages.reply_InReplyToView_Night_6_en",0,], ["libraries.matrix.ui.messages.reply_InReplyToView_Day_7_en","libraries.matrix.ui.messages.reply_InReplyToView_Night_7_en",0,], -["libraries.matrix.ui.messages.reply_InReplyToView_Day_8_en","libraries.matrix.ui.messages.reply_InReplyToView_Night_8_en",20224,], +["libraries.matrix.ui.messages.reply_InReplyToView_Day_8_en","libraries.matrix.ui.messages.reply_InReplyToView_Night_8_en",20236,], ["libraries.matrix.ui.messages.reply_InReplyToView_Day_9_en","libraries.matrix.ui.messages.reply_InReplyToView_Night_9_en",0,], -["features.call.impl.ui_IncomingCallScreen_Day_0_en","features.call.impl.ui_IncomingCallScreen_Night_0_en",20224,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_0_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_0_en",20224,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_10_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_10_en",20224,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_11_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_11_en",20224,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_12_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_12_en",20224,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_13_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_13_en",20224,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_1_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_1_en",20224,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_2_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_2_en",20224,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_3_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_3_en",20224,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_4_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_4_en",20224,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_5_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_5_en",20224,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_6_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_6_en",20224,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_7_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_7_en",20224,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_8_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_8_en",20224,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_9_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_9_en",20224,], +["features.call.impl.ui_IncomingCallScreen_Day_0_en","features.call.impl.ui_IncomingCallScreen_Night_0_en",20236,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_0_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_0_en",20236,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_10_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_10_en",20236,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_11_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_11_en",20236,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_12_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_12_en",20236,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_13_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_13_en",20236,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_1_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_1_en",20236,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_2_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_2_en",20236,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_3_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_3_en",20236,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_4_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_4_en",20236,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_5_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_5_en",20236,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_6_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_6_en",20236,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_7_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_7_en",20236,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_8_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_8_en",20236,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_9_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_9_en",20236,], ["features.networkmonitor.api.ui_Indicator_Day_0_en","features.networkmonitor.api.ui_Indicator_Night_0_en",0,], ["libraries.designsystem.atomic.molecules_InfoListItemMolecule_Day_0_en","libraries.designsystem.atomic.molecules_InfoListItemMolecule_Night_0_en",0,], ["libraries.designsystem.atomic.organisms_InfoListOrganism_Day_0_en","libraries.designsystem.atomic.organisms_InfoListOrganism_Night_0_en",0,], -["libraries.matrix.ui.components_InviteSenderView_Day_0_en","libraries.matrix.ui.components_InviteSenderView_Night_0_en",20224,], -["features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Day_0_en","features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Night_0_en",20224,], -["features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Day_1_en","features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Night_1_en",20224,], -["features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Day_2_en","features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Night_2_en",20224,], -["features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Day_3_en","features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Night_3_en",20224,], -["features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Day_4_en","features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Night_4_en",20224,], -["features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Day_5_en","features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Night_5_en",20224,], +["libraries.matrix.ui.components_InviteSenderView_Day_0_en","libraries.matrix.ui.components_InviteSenderView_Night_0_en",20236,], +["features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Day_0_en","features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Night_0_en",20236,], +["features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Day_1_en","features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Night_1_en",20236,], +["features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Day_2_en","features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Night_2_en",20236,], +["features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Day_3_en","features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Night_3_en",20236,], +["features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Day_4_en","features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Night_4_en",20236,], +["features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Day_5_en","features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Night_5_en",20236,], ["features.joinroom.impl_JoinRoomView_Day_0_en","features.joinroom.impl_JoinRoomView_Night_0_en",0,], -["features.joinroom.impl_JoinRoomView_Day_10_en","features.joinroom.impl_JoinRoomView_Night_10_en",20224,], -["features.joinroom.impl_JoinRoomView_Day_11_en","features.joinroom.impl_JoinRoomView_Night_11_en",20224,], -["features.joinroom.impl_JoinRoomView_Day_12_en","features.joinroom.impl_JoinRoomView_Night_12_en",20224,], -["features.joinroom.impl_JoinRoomView_Day_13_en","features.joinroom.impl_JoinRoomView_Night_13_en",20224,], -["features.joinroom.impl_JoinRoomView_Day_14_en","features.joinroom.impl_JoinRoomView_Night_14_en",20224,], -["features.joinroom.impl_JoinRoomView_Day_15_en","features.joinroom.impl_JoinRoomView_Night_15_en",20224,], -["features.joinroom.impl_JoinRoomView_Day_16_en","features.joinroom.impl_JoinRoomView_Night_16_en",20224,], -["features.joinroom.impl_JoinRoomView_Day_1_en","features.joinroom.impl_JoinRoomView_Night_1_en",20224,], -["features.joinroom.impl_JoinRoomView_Day_2_en","features.joinroom.impl_JoinRoomView_Night_2_en",20224,], -["features.joinroom.impl_JoinRoomView_Day_3_en","features.joinroom.impl_JoinRoomView_Night_3_en",20224,], -["features.joinroom.impl_JoinRoomView_Day_4_en","features.joinroom.impl_JoinRoomView_Night_4_en",20224,], -["features.joinroom.impl_JoinRoomView_Day_5_en","features.joinroom.impl_JoinRoomView_Night_5_en",20224,], -["features.joinroom.impl_JoinRoomView_Day_6_en","features.joinroom.impl_JoinRoomView_Night_6_en",20224,], -["features.joinroom.impl_JoinRoomView_Day_7_en","features.joinroom.impl_JoinRoomView_Night_7_en",20224,], -["features.joinroom.impl_JoinRoomView_Day_8_en","features.joinroom.impl_JoinRoomView_Night_8_en",20224,], -["features.joinroom.impl_JoinRoomView_Day_9_en","features.joinroom.impl_JoinRoomView_Night_9_en",20224,], -["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_0_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_0_en",20224,], -["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_1_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_1_en",20224,], -["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_2_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_2_en",20224,], -["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_3_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_3_en",20224,], -["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_4_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_4_en",20224,], -["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_5_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_5_en",20224,], -["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_6_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_6_en",20224,], -["features.knockrequests.impl.list_KnockRequestsListView_Day_0_en","features.knockrequests.impl.list_KnockRequestsListView_Night_0_en",20224,], -["features.knockrequests.impl.list_KnockRequestsListView_Day_10_en","features.knockrequests.impl.list_KnockRequestsListView_Night_10_en",20224,], -["features.knockrequests.impl.list_KnockRequestsListView_Day_1_en","features.knockrequests.impl.list_KnockRequestsListView_Night_1_en",20224,], -["features.knockrequests.impl.list_KnockRequestsListView_Day_2_en","features.knockrequests.impl.list_KnockRequestsListView_Night_2_en",20224,], -["features.knockrequests.impl.list_KnockRequestsListView_Day_3_en","features.knockrequests.impl.list_KnockRequestsListView_Night_3_en",20224,], -["features.knockrequests.impl.list_KnockRequestsListView_Day_4_en","features.knockrequests.impl.list_KnockRequestsListView_Night_4_en",20224,], -["features.knockrequests.impl.list_KnockRequestsListView_Day_5_en","features.knockrequests.impl.list_KnockRequestsListView_Night_5_en",20224,], -["features.knockrequests.impl.list_KnockRequestsListView_Day_6_en","features.knockrequests.impl.list_KnockRequestsListView_Night_6_en",20224,], -["features.knockrequests.impl.list_KnockRequestsListView_Day_7_en","features.knockrequests.impl.list_KnockRequestsListView_Night_7_en",20224,], -["features.knockrequests.impl.list_KnockRequestsListView_Day_8_en","features.knockrequests.impl.list_KnockRequestsListView_Night_8_en",20224,], -["features.knockrequests.impl.list_KnockRequestsListView_Day_9_en","features.knockrequests.impl.list_KnockRequestsListView_Night_9_en",20224,], +["features.joinroom.impl_JoinRoomView_Day_10_en","features.joinroom.impl_JoinRoomView_Night_10_en",20236,], +["features.joinroom.impl_JoinRoomView_Day_11_en","features.joinroom.impl_JoinRoomView_Night_11_en",20236,], +["features.joinroom.impl_JoinRoomView_Day_12_en","features.joinroom.impl_JoinRoomView_Night_12_en",20236,], +["features.joinroom.impl_JoinRoomView_Day_13_en","features.joinroom.impl_JoinRoomView_Night_13_en",20236,], +["features.joinroom.impl_JoinRoomView_Day_14_en","features.joinroom.impl_JoinRoomView_Night_14_en",20236,], +["features.joinroom.impl_JoinRoomView_Day_15_en","features.joinroom.impl_JoinRoomView_Night_15_en",20236,], +["features.joinroom.impl_JoinRoomView_Day_16_en","features.joinroom.impl_JoinRoomView_Night_16_en",20236,], +["features.joinroom.impl_JoinRoomView_Day_1_en","features.joinroom.impl_JoinRoomView_Night_1_en",20236,], +["features.joinroom.impl_JoinRoomView_Day_2_en","features.joinroom.impl_JoinRoomView_Night_2_en",20236,], +["features.joinroom.impl_JoinRoomView_Day_3_en","features.joinroom.impl_JoinRoomView_Night_3_en",20236,], +["features.joinroom.impl_JoinRoomView_Day_4_en","features.joinroom.impl_JoinRoomView_Night_4_en",20236,], +["features.joinroom.impl_JoinRoomView_Day_5_en","features.joinroom.impl_JoinRoomView_Night_5_en",20236,], +["features.joinroom.impl_JoinRoomView_Day_6_en","features.joinroom.impl_JoinRoomView_Night_6_en",20236,], +["features.joinroom.impl_JoinRoomView_Day_7_en","features.joinroom.impl_JoinRoomView_Night_7_en",20236,], +["features.joinroom.impl_JoinRoomView_Day_8_en","features.joinroom.impl_JoinRoomView_Night_8_en",20236,], +["features.joinroom.impl_JoinRoomView_Day_9_en","features.joinroom.impl_JoinRoomView_Night_9_en",20236,], +["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_0_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_0_en",20236,], +["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_1_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_1_en",20236,], +["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_2_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_2_en",20236,], +["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_3_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_3_en",20236,], +["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_4_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_4_en",20236,], +["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_5_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_5_en",20236,], +["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_6_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_6_en",20236,], +["features.knockrequests.impl.list_KnockRequestsListView_Day_0_en","features.knockrequests.impl.list_KnockRequestsListView_Night_0_en",20236,], +["features.knockrequests.impl.list_KnockRequestsListView_Day_10_en","features.knockrequests.impl.list_KnockRequestsListView_Night_10_en",20236,], +["features.knockrequests.impl.list_KnockRequestsListView_Day_1_en","features.knockrequests.impl.list_KnockRequestsListView_Night_1_en",20236,], +["features.knockrequests.impl.list_KnockRequestsListView_Day_2_en","features.knockrequests.impl.list_KnockRequestsListView_Night_2_en",20236,], +["features.knockrequests.impl.list_KnockRequestsListView_Day_3_en","features.knockrequests.impl.list_KnockRequestsListView_Night_3_en",20236,], +["features.knockrequests.impl.list_KnockRequestsListView_Day_4_en","features.knockrequests.impl.list_KnockRequestsListView_Night_4_en",20236,], +["features.knockrequests.impl.list_KnockRequestsListView_Day_5_en","features.knockrequests.impl.list_KnockRequestsListView_Night_5_en",20236,], +["features.knockrequests.impl.list_KnockRequestsListView_Day_6_en","features.knockrequests.impl.list_KnockRequestsListView_Night_6_en",20236,], +["features.knockrequests.impl.list_KnockRequestsListView_Day_7_en","features.knockrequests.impl.list_KnockRequestsListView_Night_7_en",20236,], +["features.knockrequests.impl.list_KnockRequestsListView_Day_8_en","features.knockrequests.impl.list_KnockRequestsListView_Night_8_en",20236,], +["features.knockrequests.impl.list_KnockRequestsListView_Day_9_en","features.knockrequests.impl.list_KnockRequestsListView_Night_9_en",20236,], ["libraries.designsystem.components_LabelledCheckbox_Toggles_en","",0,], ["features.leaveroom.api_LeaveRoomView_Day_0_en","features.leaveroom.api_LeaveRoomView_Night_0_en",0,], -["features.leaveroom.api_LeaveRoomView_Day_1_en","features.leaveroom.api_LeaveRoomView_Night_1_en",20224,], -["features.leaveroom.api_LeaveRoomView_Day_2_en","features.leaveroom.api_LeaveRoomView_Night_2_en",20224,], -["features.leaveroom.api_LeaveRoomView_Day_3_en","features.leaveroom.api_LeaveRoomView_Night_3_en",20224,], -["features.leaveroom.api_LeaveRoomView_Day_4_en","features.leaveroom.api_LeaveRoomView_Night_4_en",20224,], -["features.leaveroom.api_LeaveRoomView_Day_5_en","features.leaveroom.api_LeaveRoomView_Night_5_en",20224,], -["features.leaveroom.api_LeaveRoomView_Day_6_en","features.leaveroom.api_LeaveRoomView_Night_6_en",20224,], +["features.leaveroom.api_LeaveRoomView_Day_1_en","features.leaveroom.api_LeaveRoomView_Night_1_en",20236,], +["features.leaveroom.api_LeaveRoomView_Day_2_en","features.leaveroom.api_LeaveRoomView_Night_2_en",20236,], +["features.leaveroom.api_LeaveRoomView_Day_3_en","features.leaveroom.api_LeaveRoomView_Night_3_en",20236,], +["features.leaveroom.api_LeaveRoomView_Day_4_en","features.leaveroom.api_LeaveRoomView_Night_4_en",20236,], +["features.leaveroom.api_LeaveRoomView_Day_5_en","features.leaveroom.api_LeaveRoomView_Night_5_en",20236,], +["features.leaveroom.api_LeaveRoomView_Day_6_en","features.leaveroom.api_LeaveRoomView_Night_6_en",20236,], ["libraries.designsystem.background_LightGradientBackground_Day_0_en","libraries.designsystem.background_LightGradientBackground_Night_0_en",0,], ["libraries.designsystem.theme.components_LinearProgressIndicator_Progress_Indicators_en","",0,], ["features.messages.impl.link_LinkView_Day_0_en","features.messages.impl.link_LinkView_Night_0_en",0,], -["features.messages.impl.link_LinkView_Day_1_en","features.messages.impl.link_LinkView_Night_1_en",20224,], +["features.messages.impl.link_LinkView_Day_1_en","features.messages.impl.link_LinkView_Night_1_en",20236,], ["libraries.designsystem.components.dialogs_ListDialogContent_Dialogs_en","",0,], ["libraries.designsystem.components.dialogs_ListDialog_Day_0_en","libraries.designsystem.components.dialogs_ListDialog_Night_0_en",0,], ["libraries.designsystem.theme.components_ListItemPrimaryActionWithIcon_List_item_-_Primary_action_&_Icon_List_items_en","",0,], @@ -565,31 +571,31 @@ export const screenshots = [ ["libraries.designsystem.theme.components_ListSupportingTextSmallPadding_List_supporting_text_-_small_padding_List_sections_en","",0,], ["libraries.textcomposer.components_LiveWaveformView_Day_0_en","libraries.textcomposer.components_LiveWaveformView_Night_0_en",0,], ["appnav.room.joined_LoadingRoomNodeView_Day_0_en","appnav.room.joined_LoadingRoomNodeView_Night_0_en",0,], -["appnav.room.joined_LoadingRoomNodeView_Day_1_en","appnav.room.joined_LoadingRoomNodeView_Night_1_en",20224,], -["features.lockscreen.impl.settings_LockScreenSettingsView_Day_0_en","features.lockscreen.impl.settings_LockScreenSettingsView_Night_0_en",20224,], -["features.lockscreen.impl.settings_LockScreenSettingsView_Day_1_en","features.lockscreen.impl.settings_LockScreenSettingsView_Night_1_en",20224,], -["features.lockscreen.impl.settings_LockScreenSettingsView_Day_2_en","features.lockscreen.impl.settings_LockScreenSettingsView_Night_2_en",20224,], +["appnav.room.joined_LoadingRoomNodeView_Day_1_en","appnav.room.joined_LoadingRoomNodeView_Night_1_en",20236,], +["features.lockscreen.impl.settings_LockScreenSettingsView_Day_0_en","features.lockscreen.impl.settings_LockScreenSettingsView_Night_0_en",20236,], +["features.lockscreen.impl.settings_LockScreenSettingsView_Day_1_en","features.lockscreen.impl.settings_LockScreenSettingsView_Night_1_en",20236,], +["features.lockscreen.impl.settings_LockScreenSettingsView_Day_2_en","features.lockscreen.impl.settings_LockScreenSettingsView_Night_2_en",20236,], ["appnav.loggedin_LoggedInView_Day_0_en","appnav.loggedin_LoggedInView_Night_0_en",0,], -["appnav.loggedin_LoggedInView_Day_1_en","appnav.loggedin_LoggedInView_Night_1_en",20224,], -["appnav.loggedin_LoggedInView_Day_2_en","appnav.loggedin_LoggedInView_Night_2_en",20224,], -["appnav.loggedin_LoggedInView_Day_3_en","appnav.loggedin_LoggedInView_Night_3_en",20224,], -["features.login.impl.screens.loginpassword_LoginPasswordView_Day_0_en","features.login.impl.screens.loginpassword_LoginPasswordView_Night_0_en",20224,], -["features.login.impl.screens.loginpassword_LoginPasswordView_Day_1_en","features.login.impl.screens.loginpassword_LoginPasswordView_Night_1_en",20224,], -["features.login.impl.screens.loginpassword_LoginPasswordView_Day_2_en","features.login.impl.screens.loginpassword_LoginPasswordView_Night_2_en",20224,], -["features.logout.impl_LogoutView_Day_0_en","features.logout.impl_LogoutView_Night_0_en",20224,], -["features.logout.impl_LogoutView_Day_10_en","features.logout.impl_LogoutView_Night_10_en",20224,], -["features.logout.impl_LogoutView_Day_11_en","features.logout.impl_LogoutView_Night_11_en",20224,], -["features.logout.impl_LogoutView_Day_1_en","features.logout.impl_LogoutView_Night_1_en",20224,], -["features.logout.impl_LogoutView_Day_2_en","features.logout.impl_LogoutView_Night_2_en",20224,], -["features.logout.impl_LogoutView_Day_3_en","features.logout.impl_LogoutView_Night_3_en",20224,], -["features.logout.impl_LogoutView_Day_4_en","features.logout.impl_LogoutView_Night_4_en",20224,], -["features.logout.impl_LogoutView_Day_5_en","features.logout.impl_LogoutView_Night_5_en",20224,], -["features.logout.impl_LogoutView_Day_6_en","features.logout.impl_LogoutView_Night_6_en",20224,], -["features.logout.impl_LogoutView_Day_7_en","features.logout.impl_LogoutView_Night_7_en",20224,], -["features.logout.impl_LogoutView_Day_8_en","features.logout.impl_LogoutView_Night_8_en",20224,], -["features.logout.impl_LogoutView_Day_9_en","features.logout.impl_LogoutView_Night_9_en",20224,], +["appnav.loggedin_LoggedInView_Day_1_en","appnav.loggedin_LoggedInView_Night_1_en",20236,], +["appnav.loggedin_LoggedInView_Day_2_en","appnav.loggedin_LoggedInView_Night_2_en",20236,], +["appnav.loggedin_LoggedInView_Day_3_en","appnav.loggedin_LoggedInView_Night_3_en",20236,], +["features.login.impl.screens.loginpassword_LoginPasswordView_Day_0_en","features.login.impl.screens.loginpassword_LoginPasswordView_Night_0_en",20236,], +["features.login.impl.screens.loginpassword_LoginPasswordView_Day_1_en","features.login.impl.screens.loginpassword_LoginPasswordView_Night_1_en",20236,], +["features.login.impl.screens.loginpassword_LoginPasswordView_Day_2_en","features.login.impl.screens.loginpassword_LoginPasswordView_Night_2_en",20236,], +["features.logout.impl_LogoutView_Day_0_en","features.logout.impl_LogoutView_Night_0_en",20236,], +["features.logout.impl_LogoutView_Day_10_en","features.logout.impl_LogoutView_Night_10_en",20236,], +["features.logout.impl_LogoutView_Day_11_en","features.logout.impl_LogoutView_Night_11_en",20236,], +["features.logout.impl_LogoutView_Day_1_en","features.logout.impl_LogoutView_Night_1_en",20236,], +["features.logout.impl_LogoutView_Day_2_en","features.logout.impl_LogoutView_Night_2_en",20236,], +["features.logout.impl_LogoutView_Day_3_en","features.logout.impl_LogoutView_Night_3_en",20236,], +["features.logout.impl_LogoutView_Day_4_en","features.logout.impl_LogoutView_Night_4_en",20236,], +["features.logout.impl_LogoutView_Day_5_en","features.logout.impl_LogoutView_Night_5_en",20236,], +["features.logout.impl_LogoutView_Day_6_en","features.logout.impl_LogoutView_Night_6_en",20236,], +["features.logout.impl_LogoutView_Day_7_en","features.logout.impl_LogoutView_Night_7_en",20236,], +["features.logout.impl_LogoutView_Day_8_en","features.logout.impl_LogoutView_Night_8_en",20236,], +["features.logout.impl_LogoutView_Day_9_en","features.logout.impl_LogoutView_Night_9_en",20236,], ["libraries.designsystem.components.button_MainActionButton_Buttons_en","",0,], -["libraries.textcomposer_MarkdownTextComposerEdit_Day_0_en","libraries.textcomposer_MarkdownTextComposerEdit_Night_0_en",20224,], +["libraries.textcomposer_MarkdownTextComposerEdit_Day_0_en","libraries.textcomposer_MarkdownTextComposerEdit_Night_0_en",20236,], ["libraries.textcomposer.components.markdown_MarkdownTextInput_Day_0_en","libraries.textcomposer.components.markdown_MarkdownTextInput_Night_0_en",0,], ["libraries.designsystem.atomic.atoms_MatrixBadgeAtomInfo_Day_0_en","libraries.designsystem.atomic.atoms_MatrixBadgeAtomInfo_Night_0_en",0,], ["libraries.designsystem.atomic.atoms_MatrixBadgeAtomNegative_Day_0_en","libraries.designsystem.atomic.atoms_MatrixBadgeAtomNegative_Night_0_en",0,], @@ -602,22 +608,22 @@ export const screenshots = [ ["libraries.matrix.ui.components_MatrixUserRow_Day_1_en","libraries.matrix.ui.components_MatrixUserRow_Night_1_en",0,], ["libraries.mediaviewer.impl.local.audio_MediaAudioView_Day_0_en","libraries.mediaviewer.impl.local.audio_MediaAudioView_Night_0_en",0,], ["libraries.mediaviewer.impl.local.audio_MediaAudioView_Day_1_en","libraries.mediaviewer.impl.local.audio_MediaAudioView_Night_1_en",0,], -["libraries.mediaviewer.impl.details_MediaDeleteConfirmationBottomSheet_Day_0_en","libraries.mediaviewer.impl.details_MediaDeleteConfirmationBottomSheet_Night_0_en",20224,], -["libraries.mediaviewer.impl.details_MediaDetailsBottomSheet_Day_0_en","libraries.mediaviewer.impl.details_MediaDetailsBottomSheet_Night_0_en",20224,], +["libraries.mediaviewer.impl.details_MediaDeleteConfirmationBottomSheet_Day_0_en","libraries.mediaviewer.impl.details_MediaDeleteConfirmationBottomSheet_Night_0_en",20236,], +["libraries.mediaviewer.impl.details_MediaDetailsBottomSheet_Day_0_en","libraries.mediaviewer.impl.details_MediaDetailsBottomSheet_Night_0_en",20236,], ["libraries.mediaviewer.impl.local.file_MediaFileView_Day_0_en","libraries.mediaviewer.impl.local.file_MediaFileView_Night_0_en",0,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_0_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_0_en",20224,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_10_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_10_en",20224,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_11_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_11_en",20224,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_12_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_12_en",20224,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_1_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_1_en",20224,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_2_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_2_en",20224,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_3_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_3_en",20224,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_4_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_4_en",20224,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_5_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_5_en",20224,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_6_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_6_en",20224,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_7_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_7_en",20224,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_8_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_8_en",20224,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_9_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_9_en",20224,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_0_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_0_en",20236,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_10_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_10_en",20236,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_11_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_11_en",20236,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_12_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_12_en",20236,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_1_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_1_en",20236,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_2_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_2_en",20236,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_3_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_3_en",20236,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_4_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_4_en",20236,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_5_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_5_en",20236,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_6_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_6_en",20236,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_7_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_7_en",20236,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_8_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_8_en",20236,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_9_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_9_en",20236,], ["libraries.mediaviewer.impl.local.image_MediaImageView_Day_0_en","libraries.mediaviewer.impl.local.image_MediaImageView_Night_0_en",0,], ["libraries.mediaviewer.impl.local.player_MediaPlayerControllerView_Day_0_en","libraries.mediaviewer.impl.local.player_MediaPlayerControllerView_Night_0_en",0,], ["libraries.mediaviewer.impl.local.player_MediaPlayerControllerView_Day_1_en","libraries.mediaviewer.impl.local.player_MediaPlayerControllerView_Night_1_en",0,], @@ -625,14 +631,14 @@ export const screenshots = [ ["libraries.mediaviewer.impl.local.video_MediaVideoView_Day_0_en","libraries.mediaviewer.impl.local.video_MediaVideoView_Night_0_en",0,], ["libraries.mediaviewer.impl.viewer_MediaViewerView_0_en","",0,], ["libraries.mediaviewer.impl.viewer_MediaViewerView_10_en","",0,], -["libraries.mediaviewer.impl.viewer_MediaViewerView_11_en","",20224,], -["libraries.mediaviewer.impl.viewer_MediaViewerView_12_en","",20224,], +["libraries.mediaviewer.impl.viewer_MediaViewerView_11_en","",20236,], +["libraries.mediaviewer.impl.viewer_MediaViewerView_12_en","",20236,], ["libraries.mediaviewer.impl.viewer_MediaViewerView_13_en","",0,], -["libraries.mediaviewer.impl.viewer_MediaViewerView_14_en","",20224,], +["libraries.mediaviewer.impl.viewer_MediaViewerView_14_en","",20236,], ["libraries.mediaviewer.impl.viewer_MediaViewerView_15_en","",0,], ["libraries.mediaviewer.impl.viewer_MediaViewerView_16_en","",0,], ["libraries.mediaviewer.impl.viewer_MediaViewerView_1_en","",0,], -["libraries.mediaviewer.impl.viewer_MediaViewerView_2_en","",20224,], +["libraries.mediaviewer.impl.viewer_MediaViewerView_2_en","",20236,], ["libraries.mediaviewer.impl.viewer_MediaViewerView_3_en","",0,], ["libraries.mediaviewer.impl.viewer_MediaViewerView_4_en","",0,], ["libraries.mediaviewer.impl.viewer_MediaViewerView_5_en","",0,], @@ -644,7 +650,7 @@ export const screenshots = [ ["libraries.textcomposer.mentions_MentionSpanTheme_Day_0_en","libraries.textcomposer.mentions_MentionSpanTheme_Night_0_en",0,], ["libraries.designsystem.theme.components.previews_Menu_Menus_en","",0,], ["features.messages.impl.messagecomposer_MessageComposerViewVoice_Day_0_en","features.messages.impl.messagecomposer_MessageComposerViewVoice_Night_0_en",0,], -["features.messages.impl.messagecomposer_MessageComposerView_Day_0_en","features.messages.impl.messagecomposer_MessageComposerView_Night_0_en",20224,], +["features.messages.impl.messagecomposer_MessageComposerView_Day_0_en","features.messages.impl.messagecomposer_MessageComposerView_Night_0_en",20236,], ["features.messages.impl.timeline.components_MessageEventBubble_Day_0_en","features.messages.impl.timeline.components_MessageEventBubble_Night_0_en",0,], ["features.messages.impl.timeline.components_MessageEventBubble_Day_10_en","features.messages.impl.timeline.components_MessageEventBubble_Night_10_en",0,], ["features.messages.impl.timeline.components_MessageEventBubble_Day_11_en","features.messages.impl.timeline.components_MessageEventBubble_Night_11_en",0,], @@ -661,7 +667,7 @@ export const screenshots = [ ["features.messages.impl.timeline.components_MessageEventBubble_Day_7_en","features.messages.impl.timeline.components_MessageEventBubble_Night_7_en",0,], ["features.messages.impl.timeline.components_MessageEventBubble_Day_8_en","features.messages.impl.timeline.components_MessageEventBubble_Night_8_en",0,], ["features.messages.impl.timeline.components_MessageEventBubble_Day_9_en","features.messages.impl.timeline.components_MessageEventBubble_Night_9_en",0,], -["features.messages.impl.timeline.components_MessageShieldView_Day_0_en","features.messages.impl.timeline.components_MessageShieldView_Night_0_en",20224,], +["features.messages.impl.timeline.components_MessageShieldView_Day_0_en","features.messages.impl.timeline.components_MessageShieldView_Night_0_en",20236,], ["features.messages.impl.timeline.components_MessageStateEventContainer_Day_0_en","features.messages.impl.timeline.components_MessageStateEventContainer_Night_0_en",0,], ["features.messages.impl.timeline.components_MessagesReactionButtonAdd_Day_0_en","features.messages.impl.timeline.components_MessagesReactionButtonAdd_Night_0_en",0,], ["features.messages.impl.timeline.components_MessagesReactionButtonExtra_Day_0_en","features.messages.impl.timeline.components_MessagesReactionButtonExtra_Night_0_en",0,], @@ -669,25 +675,25 @@ export const screenshots = [ ["features.messages.impl.timeline.components_MessagesReactionButton_Day_1_en","features.messages.impl.timeline.components_MessagesReactionButton_Night_1_en",0,], ["features.messages.impl.timeline.components_MessagesReactionButton_Day_2_en","features.messages.impl.timeline.components_MessagesReactionButton_Night_2_en",0,], ["features.messages.impl.timeline.components_MessagesReactionButton_Day_3_en","features.messages.impl.timeline.components_MessagesReactionButton_Night_3_en",0,], -["features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Day_0_en","features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Night_0_en",20224,], -["features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Day_1_en","features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Night_1_en",20224,], -["features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Day_2_en","features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Night_2_en",20224,], -["features.messages.impl_MessagesView_Day_0_en","features.messages.impl_MessagesView_Night_0_en",20224,], -["features.messages.impl_MessagesView_Day_10_en","features.messages.impl_MessagesView_Night_10_en",20224,], -["features.messages.impl_MessagesView_Day_11_en","features.messages.impl_MessagesView_Night_11_en",20224,], -["features.messages.impl_MessagesView_Day_12_en","features.messages.impl_MessagesView_Night_12_en",20224,], -["features.messages.impl_MessagesView_Day_13_en","features.messages.impl_MessagesView_Night_13_en",20224,], -["features.messages.impl_MessagesView_Day_1_en","features.messages.impl_MessagesView_Night_1_en",20224,], -["features.messages.impl_MessagesView_Day_2_en","features.messages.impl_MessagesView_Night_2_en",20224,], -["features.messages.impl_MessagesView_Day_3_en","features.messages.impl_MessagesView_Night_3_en",20224,], -["features.messages.impl_MessagesView_Day_4_en","features.messages.impl_MessagesView_Night_4_en",20224,], -["features.messages.impl_MessagesView_Day_5_en","features.messages.impl_MessagesView_Night_5_en",20224,], -["features.messages.impl_MessagesView_Day_6_en","features.messages.impl_MessagesView_Night_6_en",20224,], -["features.messages.impl_MessagesView_Day_7_en","features.messages.impl_MessagesView_Night_7_en",20224,], -["features.messages.impl_MessagesView_Day_8_en","features.messages.impl_MessagesView_Night_8_en",20224,], -["features.messages.impl_MessagesView_Day_9_en","features.messages.impl_MessagesView_Night_9_en",20224,], +["features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Day_0_en","features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Night_0_en",20236,], +["features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Day_1_en","features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Night_1_en",20236,], +["features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Day_2_en","features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Night_2_en",20236,], +["features.messages.impl_MessagesView_Day_0_en","features.messages.impl_MessagesView_Night_0_en",20236,], +["features.messages.impl_MessagesView_Day_10_en","features.messages.impl_MessagesView_Night_10_en",20236,], +["features.messages.impl_MessagesView_Day_11_en","features.messages.impl_MessagesView_Night_11_en",20236,], +["features.messages.impl_MessagesView_Day_12_en","features.messages.impl_MessagesView_Night_12_en",20236,], +["features.messages.impl_MessagesView_Day_13_en","features.messages.impl_MessagesView_Night_13_en",20236,], +["features.messages.impl_MessagesView_Day_1_en","features.messages.impl_MessagesView_Night_1_en",20236,], +["features.messages.impl_MessagesView_Day_2_en","features.messages.impl_MessagesView_Night_2_en",20236,], +["features.messages.impl_MessagesView_Day_3_en","features.messages.impl_MessagesView_Night_3_en",20236,], +["features.messages.impl_MessagesView_Day_4_en","features.messages.impl_MessagesView_Night_4_en",20236,], +["features.messages.impl_MessagesView_Day_5_en","features.messages.impl_MessagesView_Night_5_en",20236,], +["features.messages.impl_MessagesView_Day_6_en","features.messages.impl_MessagesView_Night_6_en",20236,], +["features.messages.impl_MessagesView_Day_7_en","features.messages.impl_MessagesView_Night_7_en",20236,], +["features.messages.impl_MessagesView_Day_8_en","features.messages.impl_MessagesView_Night_8_en",20236,], +["features.messages.impl_MessagesView_Day_9_en","features.messages.impl_MessagesView_Night_9_en",20236,], ["features.migration.impl_MigrationView_Day_0_en","features.migration.impl_MigrationView_Night_0_en",0,], -["features.migration.impl_MigrationView_Day_1_en","features.migration.impl_MigrationView_Night_1_en",20224,], +["features.migration.impl_MigrationView_Day_1_en","features.migration.impl_MigrationView_Night_1_en",20236,], ["libraries.designsystem.theme.components_ModalBottomSheetDark_Bottom_Sheets_en","",0,], ["libraries.designsystem.theme.components_ModalBottomSheetLight_Bottom_Sheets_en","",0,], ["appicon.element_MonochromeIcon_en","",0,], @@ -696,44 +702,45 @@ export const screenshots = [ ["libraries.designsystem.components.list_MutipleSelectionListItemSelectedTrailingContent_Multiple_selection_List_item_-_selection_in_trailing_content_List_items_en","",0,], ["libraries.designsystem.components.list_MutipleSelectionListItemSelected_Multiple_selection_List_item_-_selection_in_supporting_text_List_items_en","",0,], ["libraries.designsystem.components.list_MutipleSelectionListItem_Multiple_selection_List_item_-_no_selection_List_items_en","",0,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_0_en","features.preferences.impl.notifications_NotificationSettingsView_Night_0_en",20224,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_10_en","features.preferences.impl.notifications_NotificationSettingsView_Night_10_en",20224,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_11_en","features.preferences.impl.notifications_NotificationSettingsView_Night_11_en",20224,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_12_en","features.preferences.impl.notifications_NotificationSettingsView_Night_12_en",20224,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_13_en","features.preferences.impl.notifications_NotificationSettingsView_Night_13_en",20224,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_1_en","features.preferences.impl.notifications_NotificationSettingsView_Night_1_en",20224,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_2_en","features.preferences.impl.notifications_NotificationSettingsView_Night_2_en",20224,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_3_en","features.preferences.impl.notifications_NotificationSettingsView_Night_3_en",20224,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_4_en","features.preferences.impl.notifications_NotificationSettingsView_Night_4_en",20224,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_5_en","features.preferences.impl.notifications_NotificationSettingsView_Night_5_en",20224,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_6_en","features.preferences.impl.notifications_NotificationSettingsView_Night_6_en",20224,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_7_en","features.preferences.impl.notifications_NotificationSettingsView_Night_7_en",20224,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_8_en","features.preferences.impl.notifications_NotificationSettingsView_Night_8_en",20224,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_9_en","features.preferences.impl.notifications_NotificationSettingsView_Night_9_en",20224,], -["features.ftue.impl.notifications_NotificationsOptInView_Day_0_en","features.ftue.impl.notifications_NotificationsOptInView_Night_0_en",20224,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_0_en","features.preferences.impl.notifications_NotificationSettingsView_Night_0_en",20236,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_10_en","features.preferences.impl.notifications_NotificationSettingsView_Night_10_en",20236,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_11_en","features.preferences.impl.notifications_NotificationSettingsView_Night_11_en",20236,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_12_en","features.preferences.impl.notifications_NotificationSettingsView_Night_12_en",20236,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_13_en","features.preferences.impl.notifications_NotificationSettingsView_Night_13_en",20236,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_1_en","features.preferences.impl.notifications_NotificationSettingsView_Night_1_en",20236,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_2_en","features.preferences.impl.notifications_NotificationSettingsView_Night_2_en",20236,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_3_en","features.preferences.impl.notifications_NotificationSettingsView_Night_3_en",20236,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_4_en","features.preferences.impl.notifications_NotificationSettingsView_Night_4_en",20236,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_5_en","features.preferences.impl.notifications_NotificationSettingsView_Night_5_en",20236,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_6_en","features.preferences.impl.notifications_NotificationSettingsView_Night_6_en",20236,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_7_en","features.preferences.impl.notifications_NotificationSettingsView_Night_7_en",20236,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_8_en","features.preferences.impl.notifications_NotificationSettingsView_Night_8_en",20236,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_9_en","features.preferences.impl.notifications_NotificationSettingsView_Night_9_en",20236,], +["features.ftue.impl.notifications_NotificationsOptInView_Day_0_en","features.ftue.impl.notifications_NotificationsOptInView_Night_0_en",20236,], ["libraries.oidc.impl.webview_OidcView_Day_0_en","libraries.oidc.impl.webview_OidcView_Night_0_en",0,], ["libraries.oidc.impl.webview_OidcView_Day_1_en","libraries.oidc.impl.webview_OidcView_Night_1_en",0,], ["libraries.designsystem.atomic.pages_OnBoardingPage_Day_0_en","libraries.designsystem.atomic.pages_OnBoardingPage_Night_0_en",0,], -["features.onboarding.impl_OnBoardingView_Day_0_en","features.onboarding.impl_OnBoardingView_Night_0_en",20224,], -["features.onboarding.impl_OnBoardingView_Day_1_en","features.onboarding.impl_OnBoardingView_Night_1_en",20224,], -["features.onboarding.impl_OnBoardingView_Day_2_en","features.onboarding.impl_OnBoardingView_Night_2_en",20224,], -["features.onboarding.impl_OnBoardingView_Day_3_en","features.onboarding.impl_OnBoardingView_Night_3_en",20224,], -["features.onboarding.impl_OnBoardingView_Day_4_en","features.onboarding.impl_OnBoardingView_Night_4_en",20224,], +["features.login.impl.screens.onboarding_OnBoardingView_Day_0_en","features.login.impl.screens.onboarding_OnBoardingView_Night_0_en",20238,], +["features.login.impl.screens.onboarding_OnBoardingView_Day_1_en","features.login.impl.screens.onboarding_OnBoardingView_Night_1_en",20238,], +["features.login.impl.screens.onboarding_OnBoardingView_Day_2_en","features.login.impl.screens.onboarding_OnBoardingView_Night_2_en",20238,], +["features.login.impl.screens.onboarding_OnBoardingView_Day_3_en","features.login.impl.screens.onboarding_OnBoardingView_Night_3_en",20238,], +["features.login.impl.screens.onboarding_OnBoardingView_Day_4_en","features.login.impl.screens.onboarding_OnBoardingView_Night_4_en",20238,], +["features.login.impl.screens.onboarding_OnBoardingView_Day_5_en","features.login.impl.screens.onboarding_OnBoardingView_Night_5_en",20238,], ["libraries.designsystem.background_OnboardingBackground_Day_0_en","libraries.designsystem.background_OnboardingBackground_Night_0_en",0,], -["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_0_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_0_en",20224,], -["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_10_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_10_en",20224,], -["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_11_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_11_en",20224,], +["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_0_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_0_en",20236,], +["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_10_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_10_en",20236,], +["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_11_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_11_en",20236,], ["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_12_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_12_en",0,], ["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_13_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_13_en",0,], -["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_1_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_1_en",20224,], -["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_2_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_2_en",20224,], -["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_3_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_3_en",20224,], -["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_4_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_4_en",20224,], -["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_5_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_5_en",20224,], -["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_6_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_6_en",20224,], -["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_7_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_7_en",20224,], -["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_8_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_8_en",20224,], -["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_9_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_9_en",20224,], +["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_1_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_1_en",20236,], +["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_2_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_2_en",20236,], +["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_3_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_3_en",20236,], +["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_4_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_4_en",20236,], +["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_5_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_5_en",20236,], +["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_6_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_6_en",20236,], +["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_7_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_7_en",20236,], +["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_8_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_8_en",20236,], +["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_9_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_9_en",20236,], ["libraries.designsystem.theme.components_OutlinedButtonLargeLowPadding_Buttons_en","",0,], ["libraries.designsystem.theme.components_OutlinedButtonLarge_Buttons_en","",0,], ["libraries.designsystem.theme.components_OutlinedButtonMediumLowPadding_Buttons_en","",0,], @@ -747,65 +754,65 @@ export const screenshots = [ ["libraries.designsystem.components_PageTitleWithIconFull_Day_5_en","libraries.designsystem.components_PageTitleWithIconFull_Night_5_en",0,], ["libraries.designsystem.components_PageTitleWithIconFull_Day_6_en","libraries.designsystem.components_PageTitleWithIconFull_Night_6_en",0,], ["libraries.designsystem.components_PageTitleWithIconMinimal_Day_0_en","libraries.designsystem.components_PageTitleWithIconMinimal_Night_0_en",0,], -["libraries.mediaviewer.impl.local.pdf_PdfPagesErrorView_Day_0_en","libraries.mediaviewer.impl.local.pdf_PdfPagesErrorView_Night_0_en",20224,], -["features.roomdetails.impl.rolesandpermissions.changeroles_PendingMemberRowWithLongName_Day_0_en","features.roomdetails.impl.rolesandpermissions.changeroles_PendingMemberRowWithLongName_Night_0_en",20224,], -["libraries.permissions.api_PermissionsView_Day_0_en","libraries.permissions.api_PermissionsView_Night_0_en",20224,], -["libraries.permissions.api_PermissionsView_Day_1_en","libraries.permissions.api_PermissionsView_Night_1_en",20224,], -["libraries.permissions.api_PermissionsView_Day_2_en","libraries.permissions.api_PermissionsView_Night_2_en",20224,], -["libraries.permissions.api_PermissionsView_Day_3_en","libraries.permissions.api_PermissionsView_Night_3_en",20224,], +["libraries.mediaviewer.impl.local.pdf_PdfPagesErrorView_Day_0_en","libraries.mediaviewer.impl.local.pdf_PdfPagesErrorView_Night_0_en",20236,], +["features.roomdetails.impl.rolesandpermissions.changeroles_PendingMemberRowWithLongName_Day_0_en","features.roomdetails.impl.rolesandpermissions.changeroles_PendingMemberRowWithLongName_Night_0_en",20236,], +["libraries.permissions.api_PermissionsView_Day_0_en","libraries.permissions.api_PermissionsView_Night_0_en",20236,], +["libraries.permissions.api_PermissionsView_Day_1_en","libraries.permissions.api_PermissionsView_Night_1_en",20236,], +["libraries.permissions.api_PermissionsView_Day_2_en","libraries.permissions.api_PermissionsView_Night_2_en",20236,], +["libraries.permissions.api_PermissionsView_Day_3_en","libraries.permissions.api_PermissionsView_Night_3_en",20236,], ["features.lockscreen.impl.components_PinEntryTextField_Day_0_en","features.lockscreen.impl.components_PinEntryTextField_Night_0_en",0,], ["libraries.designsystem.components_PinIcon_Day_0_en","libraries.designsystem.components_PinIcon_Night_0_en",0,], ["features.lockscreen.impl.unlock.keypad_PinKeypad_Day_0_en","features.lockscreen.impl.unlock.keypad_PinKeypad_Night_0_en",0,], -["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_0_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_0_en",20224,], -["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_1_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_1_en",20224,], -["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_2_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_2_en",20224,], -["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_3_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_3_en",20224,], -["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_4_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_4_en",20224,], -["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_5_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_5_en",20224,], -["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_6_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_6_en",20224,], -["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_7_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_7_en",20224,], -["features.lockscreen.impl.unlock_PinUnlockView_Day_0_en","features.lockscreen.impl.unlock_PinUnlockView_Night_0_en",20224,], -["features.lockscreen.impl.unlock_PinUnlockView_Day_1_en","features.lockscreen.impl.unlock_PinUnlockView_Night_1_en",20224,], -["features.lockscreen.impl.unlock_PinUnlockView_Day_2_en","features.lockscreen.impl.unlock_PinUnlockView_Night_2_en",20224,], -["features.lockscreen.impl.unlock_PinUnlockView_Day_3_en","features.lockscreen.impl.unlock_PinUnlockView_Night_3_en",20224,], -["features.lockscreen.impl.unlock_PinUnlockView_Day_4_en","features.lockscreen.impl.unlock_PinUnlockView_Night_4_en",20224,], -["features.lockscreen.impl.unlock_PinUnlockView_Day_5_en","features.lockscreen.impl.unlock_PinUnlockView_Night_5_en",20224,], -["features.lockscreen.impl.unlock_PinUnlockView_Day_6_en","features.lockscreen.impl.unlock_PinUnlockView_Night_6_en",20224,], -["features.lockscreen.impl.unlock_PinUnlockView_Day_7_en","features.lockscreen.impl.unlock_PinUnlockView_Night_7_en",20224,], +["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_0_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_0_en",20236,], +["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_1_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_1_en",20236,], +["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_2_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_2_en",20236,], +["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_3_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_3_en",20236,], +["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_4_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_4_en",20236,], +["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_5_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_5_en",20236,], +["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_6_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_6_en",20236,], +["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_7_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_7_en",20236,], +["features.lockscreen.impl.unlock_PinUnlockView_Day_0_en","features.lockscreen.impl.unlock_PinUnlockView_Night_0_en",20236,], +["features.lockscreen.impl.unlock_PinUnlockView_Day_1_en","features.lockscreen.impl.unlock_PinUnlockView_Night_1_en",20236,], +["features.lockscreen.impl.unlock_PinUnlockView_Day_2_en","features.lockscreen.impl.unlock_PinUnlockView_Night_2_en",20236,], +["features.lockscreen.impl.unlock_PinUnlockView_Day_3_en","features.lockscreen.impl.unlock_PinUnlockView_Night_3_en",20236,], +["features.lockscreen.impl.unlock_PinUnlockView_Day_4_en","features.lockscreen.impl.unlock_PinUnlockView_Night_4_en",20236,], +["features.lockscreen.impl.unlock_PinUnlockView_Day_5_en","features.lockscreen.impl.unlock_PinUnlockView_Night_5_en",20236,], +["features.lockscreen.impl.unlock_PinUnlockView_Day_6_en","features.lockscreen.impl.unlock_PinUnlockView_Night_6_en",20236,], +["features.lockscreen.impl.unlock_PinUnlockView_Day_7_en","features.lockscreen.impl.unlock_PinUnlockView_Night_7_en",20236,], ["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_0_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_0_en",0,], -["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_10_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_10_en",20224,], -["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_1_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_1_en",20224,], -["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_2_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_2_en",20224,], -["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_3_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_3_en",20224,], -["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_4_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_4_en",20224,], -["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_5_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_5_en",20224,], -["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_6_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_6_en",20224,], -["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_7_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_7_en",20224,], -["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_8_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_8_en",20224,], -["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_9_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_9_en",20224,], -["features.messages.impl.pinned.list_PinnedMessagesListView_Day_0_en","features.messages.impl.pinned.list_PinnedMessagesListView_Night_0_en",20224,], -["features.messages.impl.pinned.list_PinnedMessagesListView_Day_1_en","features.messages.impl.pinned.list_PinnedMessagesListView_Night_1_en",20224,], -["features.messages.impl.pinned.list_PinnedMessagesListView_Day_2_en","features.messages.impl.pinned.list_PinnedMessagesListView_Night_2_en",20224,], -["features.messages.impl.pinned.list_PinnedMessagesListView_Day_3_en","features.messages.impl.pinned.list_PinnedMessagesListView_Night_3_en",20224,], +["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_10_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_10_en",20236,], +["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_1_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_1_en",20236,], +["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_2_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_2_en",20236,], +["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_3_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_3_en",20236,], +["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_4_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_4_en",20236,], +["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_5_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_5_en",20236,], +["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_6_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_6_en",20236,], +["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_7_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_7_en",20236,], +["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_8_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_8_en",20236,], +["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_9_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_9_en",20236,], +["features.messages.impl.pinned.list_PinnedMessagesListView_Day_0_en","features.messages.impl.pinned.list_PinnedMessagesListView_Night_0_en",20236,], +["features.messages.impl.pinned.list_PinnedMessagesListView_Day_1_en","features.messages.impl.pinned.list_PinnedMessagesListView_Night_1_en",20236,], +["features.messages.impl.pinned.list_PinnedMessagesListView_Day_2_en","features.messages.impl.pinned.list_PinnedMessagesListView_Night_2_en",20236,], +["features.messages.impl.pinned.list_PinnedMessagesListView_Day_3_en","features.messages.impl.pinned.list_PinnedMessagesListView_Night_3_en",20236,], ["libraries.designsystem.atomic.atoms_PlaceholderAtom_Day_0_en","libraries.designsystem.atomic.atoms_PlaceholderAtom_Night_0_en",0,], -["features.poll.api.pollcontent_PollAnswerViewDisclosedNotSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewDisclosedNotSelected_Night_0_en",20224,], -["features.poll.api.pollcontent_PollAnswerViewDisclosedSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewDisclosedSelected_Night_0_en",20224,], -["features.poll.api.pollcontent_PollAnswerViewEndedSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewEndedSelected_Night_0_en",20224,], -["features.poll.api.pollcontent_PollAnswerViewEndedWinnerNotSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewEndedWinnerNotSelected_Night_0_en",20224,], -["features.poll.api.pollcontent_PollAnswerViewEndedWinnerSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewEndedWinnerSelected_Night_0_en",20224,], +["features.poll.api.pollcontent_PollAnswerViewDisclosedNotSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewDisclosedNotSelected_Night_0_en",20236,], +["features.poll.api.pollcontent_PollAnswerViewDisclosedSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewDisclosedSelected_Night_0_en",20236,], +["features.poll.api.pollcontent_PollAnswerViewEndedSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewEndedSelected_Night_0_en",20236,], +["features.poll.api.pollcontent_PollAnswerViewEndedWinnerNotSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewEndedWinnerNotSelected_Night_0_en",20236,], +["features.poll.api.pollcontent_PollAnswerViewEndedWinnerSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewEndedWinnerSelected_Night_0_en",20236,], ["features.poll.api.pollcontent_PollAnswerViewUndisclosedNotSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewUndisclosedNotSelected_Night_0_en",0,], ["features.poll.api.pollcontent_PollAnswerViewUndisclosedSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewUndisclosedSelected_Night_0_en",0,], -["features.poll.api.pollcontent_PollContentViewCreatorEditable_Day_0_en","features.poll.api.pollcontent_PollContentViewCreatorEditable_Night_0_en",20224,], -["features.poll.api.pollcontent_PollContentViewCreatorEnded_Day_0_en","features.poll.api.pollcontent_PollContentViewCreatorEnded_Night_0_en",20224,], -["features.poll.api.pollcontent_PollContentViewCreator_Day_0_en","features.poll.api.pollcontent_PollContentViewCreator_Night_0_en",20224,], -["features.poll.api.pollcontent_PollContentViewDisclosed_Day_0_en","features.poll.api.pollcontent_PollContentViewDisclosed_Night_0_en",20224,], -["features.poll.api.pollcontent_PollContentViewEnded_Day_0_en","features.poll.api.pollcontent_PollContentViewEnded_Night_0_en",20224,], -["features.poll.api.pollcontent_PollContentViewUndisclosed_Day_0_en","features.poll.api.pollcontent_PollContentViewUndisclosed_Night_0_en",20224,], -["features.poll.impl.history_PollHistoryView_Day_0_en","features.poll.impl.history_PollHistoryView_Night_0_en",20224,], -["features.poll.impl.history_PollHistoryView_Day_1_en","features.poll.impl.history_PollHistoryView_Night_1_en",20224,], -["features.poll.impl.history_PollHistoryView_Day_2_en","features.poll.impl.history_PollHistoryView_Night_2_en",20224,], -["features.poll.impl.history_PollHistoryView_Day_3_en","features.poll.impl.history_PollHistoryView_Night_3_en",20224,], -["features.poll.impl.history_PollHistoryView_Day_4_en","features.poll.impl.history_PollHistoryView_Night_4_en",20224,], +["features.poll.api.pollcontent_PollContentViewCreatorEditable_Day_0_en","features.poll.api.pollcontent_PollContentViewCreatorEditable_Night_0_en",20236,], +["features.poll.api.pollcontent_PollContentViewCreatorEnded_Day_0_en","features.poll.api.pollcontent_PollContentViewCreatorEnded_Night_0_en",20236,], +["features.poll.api.pollcontent_PollContentViewCreator_Day_0_en","features.poll.api.pollcontent_PollContentViewCreator_Night_0_en",20236,], +["features.poll.api.pollcontent_PollContentViewDisclosed_Day_0_en","features.poll.api.pollcontent_PollContentViewDisclosed_Night_0_en",20236,], +["features.poll.api.pollcontent_PollContentViewEnded_Day_0_en","features.poll.api.pollcontent_PollContentViewEnded_Night_0_en",20236,], +["features.poll.api.pollcontent_PollContentViewUndisclosed_Day_0_en","features.poll.api.pollcontent_PollContentViewUndisclosed_Night_0_en",20236,], +["features.poll.impl.history_PollHistoryView_Day_0_en","features.poll.impl.history_PollHistoryView_Night_0_en",20236,], +["features.poll.impl.history_PollHistoryView_Day_1_en","features.poll.impl.history_PollHistoryView_Night_1_en",20236,], +["features.poll.impl.history_PollHistoryView_Day_2_en","features.poll.impl.history_PollHistoryView_Night_2_en",20236,], +["features.poll.impl.history_PollHistoryView_Day_3_en","features.poll.impl.history_PollHistoryView_Night_3_en",20236,], +["features.poll.impl.history_PollHistoryView_Day_4_en","features.poll.impl.history_PollHistoryView_Night_4_en",20236,], ["features.poll.api.pollcontent_PollTitleView_Day_0_en","features.poll.api.pollcontent_PollTitleView_Night_0_en",0,], ["libraries.designsystem.components.preferences_PreferenceCategory_Preferences_en","",0,], ["libraries.designsystem.components.preferences_PreferenceCheckbox_Preferences_en","",0,], @@ -819,218 +826,218 @@ export const screenshots = [ ["libraries.designsystem.components.preferences_PreferenceRow_Preferences_en","",0,], ["libraries.designsystem.components.preferences_PreferenceSlide_Preferences_en","",0,], ["libraries.designsystem.components.preferences_PreferenceSwitch_Preferences_en","",0,], -["features.preferences.impl.root_PreferencesRootViewDark_0_en","",20224,], -["features.preferences.impl.root_PreferencesRootViewDark_1_en","",20224,], -["features.preferences.impl.root_PreferencesRootViewLight_0_en","",20224,], -["features.preferences.impl.root_PreferencesRootViewLight_1_en","",20224,], +["features.preferences.impl.root_PreferencesRootViewDark_0_en","",20236,], +["features.preferences.impl.root_PreferencesRootViewDark_1_en","",20236,], +["features.preferences.impl.root_PreferencesRootViewLight_0_en","",20236,], +["features.preferences.impl.root_PreferencesRootViewLight_1_en","",20236,], ["features.messages.impl.timeline.components.event_ProgressButton_Day_0_en","features.messages.impl.timeline.components.event_ProgressButton_Night_0_en",0,], -["libraries.designsystem.components_ProgressDialogContent_Dialogs_en","",20224,], -["libraries.designsystem.components_ProgressDialog_Day_0_en","libraries.designsystem.components_ProgressDialog_Night_0_en",20224,], -["features.messages.impl.timeline.protection_ProtectedView_Day_0_en","features.messages.impl.timeline.protection_ProtectedView_Night_0_en",20224,], -["features.messages.impl.timeline.protection_ProtectedView_Day_1_en","features.messages.impl.timeline.protection_ProtectedView_Night_1_en",20224,], -["features.messages.impl.timeline.protection_ProtectedView_Day_2_en","features.messages.impl.timeline.protection_ProtectedView_Night_2_en",20224,], -["features.messages.impl.timeline.protection_ProtectedView_Day_3_en","features.messages.impl.timeline.protection_ProtectedView_Night_3_en",20224,], -["libraries.troubleshoot.impl.history_PushHistoryView_Day_0_en","libraries.troubleshoot.impl.history_PushHistoryView_Night_0_en",20224,], -["libraries.troubleshoot.impl.history_PushHistoryView_Day_1_en","libraries.troubleshoot.impl.history_PushHistoryView_Night_1_en",20224,], -["libraries.troubleshoot.impl.history_PushHistoryView_Day_2_en","libraries.troubleshoot.impl.history_PushHistoryView_Night_2_en",20224,], -["features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_0_en","features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Night_0_en",20224,], -["features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_1_en","features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Night_1_en",20224,], -["features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_2_en","features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Night_2_en",20224,], -["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_0_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_0_en",20224,], -["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_1_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_1_en",20224,], -["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_2_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_2_en",20224,], -["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_3_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_3_en",20224,], -["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_4_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_4_en",20224,], -["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_5_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_5_en",20224,], -["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_6_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_6_en",20224,], -["features.login.impl.screens.qrcode.intro_QrCodeIntroView_Day_0_en","features.login.impl.screens.qrcode.intro_QrCodeIntroView_Night_0_en",20224,], -["features.login.impl.screens.qrcode.intro_QrCodeIntroView_Day_1_en","features.login.impl.screens.qrcode.intro_QrCodeIntroView_Night_1_en",20224,], -["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_0_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_0_en",20224,], -["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_1_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_1_en",20224,], -["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_2_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_2_en",20224,], -["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_3_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_3_en",20224,], -["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_4_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_4_en",20227,], +["libraries.designsystem.components_ProgressDialogContent_Dialogs_en","",20236,], +["libraries.designsystem.components_ProgressDialog_Day_0_en","libraries.designsystem.components_ProgressDialog_Night_0_en",20236,], +["features.messages.impl.timeline.protection_ProtectedView_Day_0_en","features.messages.impl.timeline.protection_ProtectedView_Night_0_en",20236,], +["features.messages.impl.timeline.protection_ProtectedView_Day_1_en","features.messages.impl.timeline.protection_ProtectedView_Night_1_en",20236,], +["features.messages.impl.timeline.protection_ProtectedView_Day_2_en","features.messages.impl.timeline.protection_ProtectedView_Night_2_en",20236,], +["features.messages.impl.timeline.protection_ProtectedView_Day_3_en","features.messages.impl.timeline.protection_ProtectedView_Night_3_en",20236,], +["libraries.troubleshoot.impl.history_PushHistoryView_Day_0_en","libraries.troubleshoot.impl.history_PushHistoryView_Night_0_en",20236,], +["libraries.troubleshoot.impl.history_PushHistoryView_Day_1_en","libraries.troubleshoot.impl.history_PushHistoryView_Night_1_en",20236,], +["libraries.troubleshoot.impl.history_PushHistoryView_Day_2_en","libraries.troubleshoot.impl.history_PushHistoryView_Night_2_en",20236,], +["features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_0_en","features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Night_0_en",20236,], +["features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_1_en","features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Night_1_en",20236,], +["features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_2_en","features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Night_2_en",20236,], +["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_0_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_0_en",20236,], +["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_1_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_1_en",20236,], +["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_2_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_2_en",20236,], +["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_3_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_3_en",20236,], +["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_4_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_4_en",20236,], +["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_5_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_5_en",20236,], +["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_6_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_6_en",20236,], +["features.login.impl.screens.qrcode.intro_QrCodeIntroView_Day_0_en","features.login.impl.screens.qrcode.intro_QrCodeIntroView_Night_0_en",20236,], +["features.login.impl.screens.qrcode.intro_QrCodeIntroView_Day_1_en","features.login.impl.screens.qrcode.intro_QrCodeIntroView_Night_1_en",20236,], +["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_0_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_0_en",20236,], +["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_1_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_1_en",20236,], +["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_2_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_2_en",20236,], +["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_3_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_3_en",20236,], +["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_4_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_4_en",20236,], ["libraries.designsystem.theme.components_RadioButton_Toggles_en","",0,], -["features.rageshake.api.detection_RageshakeDialogContent_Day_0_en","features.rageshake.api.detection_RageshakeDialogContent_Night_0_en",20224,], -["features.rageshake.api.preferences_RageshakePreferencesView_Day_0_en","features.rageshake.api.preferences_RageshakePreferencesView_Night_0_en",20224,], +["features.rageshake.api.detection_RageshakeDialogContent_Day_0_en","features.rageshake.api.detection_RageshakeDialogContent_Night_0_en",20236,], +["features.rageshake.api.preferences_RageshakePreferencesView_Day_0_en","features.rageshake.api.preferences_RageshakePreferencesView_Night_0_en",20236,], ["features.rageshake.api.preferences_RageshakePreferencesView_Day_1_en","features.rageshake.api.preferences_RageshakePreferencesView_Night_1_en",0,], ["features.messages.impl.timeline.components.reactionsummary_ReactionSummaryViewContent_Day_0_en","features.messages.impl.timeline.components.reactionsummary_ReactionSummaryViewContent_Night_0_en",0,], -["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_0_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_0_en",20224,], -["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_1_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_1_en",20224,], -["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_2_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_2_en",20224,], -["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_3_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_3_en",20224,], -["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_4_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_4_en",20224,], -["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_5_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_5_en",20224,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_0_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_0_en",20224,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_10_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_10_en",20224,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_11_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_11_en",20224,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_12_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_12_en",20224,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_13_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_13_en",20224,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_1_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_1_en",20224,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_2_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_2_en",20224,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_3_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_3_en",20224,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_4_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_4_en",20224,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_5_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_5_en",20224,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_6_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_6_en",20224,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_7_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_7_en",20224,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_8_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_8_en",20224,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_9_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_9_en",20224,], +["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_0_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_0_en",20236,], +["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_1_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_1_en",20236,], +["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_2_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_2_en",20236,], +["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_3_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_3_en",20236,], +["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_4_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_4_en",20236,], +["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_5_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_5_en",20236,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_0_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_0_en",20236,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_10_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_10_en",20236,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_11_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_11_en",20236,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_12_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_12_en",20236,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_13_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_13_en",20236,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_1_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_1_en",20236,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_2_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_2_en",20236,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_3_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_3_en",20236,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_4_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_4_en",20236,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_5_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_5_en",20236,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_6_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_6_en",20236,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_7_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_7_en",20236,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_8_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_8_en",20236,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_9_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_9_en",20236,], ["libraries.designsystem.atomic.atoms_RedIndicatorAtom_Day_0_en","libraries.designsystem.atomic.atoms_RedIndicatorAtom_Night_0_en",0,], ["features.messages.impl.timeline.components_ReplySwipeIndicator_Day_0_en","features.messages.impl.timeline.components_ReplySwipeIndicator_Night_0_en",0,], -["features.messages.impl.report_ReportMessageView_Day_0_en","features.messages.impl.report_ReportMessageView_Night_0_en",20224,], -["features.messages.impl.report_ReportMessageView_Day_1_en","features.messages.impl.report_ReportMessageView_Night_1_en",20224,], -["features.messages.impl.report_ReportMessageView_Day_2_en","features.messages.impl.report_ReportMessageView_Night_2_en",20224,], -["features.messages.impl.report_ReportMessageView_Day_3_en","features.messages.impl.report_ReportMessageView_Night_3_en",20224,], -["features.messages.impl.report_ReportMessageView_Day_4_en","features.messages.impl.report_ReportMessageView_Night_4_en",20224,], -["features.messages.impl.report_ReportMessageView_Day_5_en","features.messages.impl.report_ReportMessageView_Night_5_en",20224,], -["features.reportroom.impl_ReportRoomView_Day_0_en","features.reportroom.impl_ReportRoomView_Night_0_en",20224,], -["features.reportroom.impl_ReportRoomView_Day_1_en","features.reportroom.impl_ReportRoomView_Night_1_en",20224,], -["features.reportroom.impl_ReportRoomView_Day_2_en","features.reportroom.impl_ReportRoomView_Night_2_en",20224,], -["features.reportroom.impl_ReportRoomView_Day_3_en","features.reportroom.impl_ReportRoomView_Night_3_en",20224,], -["features.reportroom.impl_ReportRoomView_Day_4_en","features.reportroom.impl_ReportRoomView_Night_4_en",20224,], -["features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_0_en","features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_0_en",20224,], -["features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_1_en","features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_1_en",20224,], -["features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_2_en","features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_2_en",20224,], -["features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_3_en","features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_3_en",20224,], -["features.securebackup.impl.reset.root_ResetIdentityRootView_Day_0_en","features.securebackup.impl.reset.root_ResetIdentityRootView_Night_0_en",20224,], -["features.securebackup.impl.reset.root_ResetIdentityRootView_Day_1_en","features.securebackup.impl.reset.root_ResetIdentityRootView_Night_1_en",20224,], +["features.messages.impl.report_ReportMessageView_Day_0_en","features.messages.impl.report_ReportMessageView_Night_0_en",20236,], +["features.messages.impl.report_ReportMessageView_Day_1_en","features.messages.impl.report_ReportMessageView_Night_1_en",20236,], +["features.messages.impl.report_ReportMessageView_Day_2_en","features.messages.impl.report_ReportMessageView_Night_2_en",20236,], +["features.messages.impl.report_ReportMessageView_Day_3_en","features.messages.impl.report_ReportMessageView_Night_3_en",20236,], +["features.messages.impl.report_ReportMessageView_Day_4_en","features.messages.impl.report_ReportMessageView_Night_4_en",20236,], +["features.messages.impl.report_ReportMessageView_Day_5_en","features.messages.impl.report_ReportMessageView_Night_5_en",20236,], +["features.reportroom.impl_ReportRoomView_Day_0_en","features.reportroom.impl_ReportRoomView_Night_0_en",20236,], +["features.reportroom.impl_ReportRoomView_Day_1_en","features.reportroom.impl_ReportRoomView_Night_1_en",20236,], +["features.reportroom.impl_ReportRoomView_Day_2_en","features.reportroom.impl_ReportRoomView_Night_2_en",20236,], +["features.reportroom.impl_ReportRoomView_Day_3_en","features.reportroom.impl_ReportRoomView_Night_3_en",20236,], +["features.reportroom.impl_ReportRoomView_Day_4_en","features.reportroom.impl_ReportRoomView_Night_4_en",20236,], +["features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_0_en","features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_0_en",20236,], +["features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_1_en","features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_1_en",20236,], +["features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_2_en","features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_2_en",20236,], +["features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_3_en","features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_3_en",20236,], +["features.securebackup.impl.reset.root_ResetIdentityRootView_Day_0_en","features.securebackup.impl.reset.root_ResetIdentityRootView_Night_0_en",20236,], +["features.securebackup.impl.reset.root_ResetIdentityRootView_Day_1_en","features.securebackup.impl.reset.root_ResetIdentityRootView_Night_1_en",20236,], ["features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Day_0_en","features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Night_0_en",0,], -["features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Day_1_en","features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Night_1_en",20224,], -["features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Day_2_en","features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Night_2_en",20224,], -["libraries.designsystem.components.dialogs_RetryDialogContent_Dialogs_en","",20224,], -["libraries.designsystem.components.dialogs_RetryDialog_Day_0_en","libraries.designsystem.components.dialogs_RetryDialog_Night_0_en",20224,], -["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_0_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_0_en",20224,], -["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_1_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_1_en",20224,], -["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_2_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_2_en",20224,], -["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_3_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_3_en",20224,], -["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_4_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_4_en",20224,], -["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_5_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_5_en",20224,], -["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_6_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_6_en",20224,], -["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_7_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_7_en",20224,], +["features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Day_1_en","features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Night_1_en",20236,], +["features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Day_2_en","features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Night_2_en",20236,], +["libraries.designsystem.components.dialogs_RetryDialogContent_Dialogs_en","",20236,], +["libraries.designsystem.components.dialogs_RetryDialog_Day_0_en","libraries.designsystem.components.dialogs_RetryDialog_Night_0_en",20236,], +["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_0_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_0_en",20236,], +["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_1_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_1_en",20236,], +["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_2_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_2_en",20236,], +["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_3_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_3_en",20236,], +["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_4_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_4_en",20236,], +["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_5_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_5_en",20236,], +["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_6_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_6_en",20236,], +["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_7_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_7_en",20236,], ["libraries.matrix.ui.room.address_RoomAddressField_Day_0_en","libraries.matrix.ui.room.address_RoomAddressField_Night_0_en",0,], ["features.roomaliasresolver.impl_RoomAliasResolverView_Day_0_en","features.roomaliasresolver.impl_RoomAliasResolverView_Night_0_en",0,], -["features.roomaliasresolver.impl_RoomAliasResolverView_Day_1_en","features.roomaliasresolver.impl_RoomAliasResolverView_Night_1_en",20224,], -["features.roomaliasresolver.impl_RoomAliasResolverView_Day_2_en","features.roomaliasresolver.impl_RoomAliasResolverView_Night_2_en",20224,], -["features.roomdetails.impl_RoomDetailsDark_0_en","",20224,], -["features.roomdetails.impl_RoomDetailsDark_10_en","",20224,], -["features.roomdetails.impl_RoomDetailsDark_11_en","",20224,], -["features.roomdetails.impl_RoomDetailsDark_12_en","",20224,], -["features.roomdetails.impl_RoomDetailsDark_13_en","",20224,], -["features.roomdetails.impl_RoomDetailsDark_14_en","",20224,], -["features.roomdetails.impl_RoomDetailsDark_15_en","",20224,], -["features.roomdetails.impl_RoomDetailsDark_16_en","",20224,], -["features.roomdetails.impl_RoomDetailsDark_17_en","",20224,], -["features.roomdetails.impl_RoomDetailsDark_18_en","",20224,], -["features.roomdetails.impl_RoomDetailsDark_1_en","",20224,], -["features.roomdetails.impl_RoomDetailsDark_2_en","",20224,], -["features.roomdetails.impl_RoomDetailsDark_3_en","",20224,], -["features.roomdetails.impl_RoomDetailsDark_4_en","",20224,], -["features.roomdetails.impl_RoomDetailsDark_5_en","",20224,], -["features.roomdetails.impl_RoomDetailsDark_6_en","",20224,], -["features.roomdetails.impl_RoomDetailsDark_7_en","",20224,], -["features.roomdetails.impl_RoomDetailsDark_8_en","",20224,], -["features.roomdetails.impl_RoomDetailsDark_9_en","",20224,], -["features.roomdetails.impl.edit_RoomDetailsEditView_Day_0_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_0_en",20224,], -["features.roomdetails.impl.edit_RoomDetailsEditView_Day_1_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_1_en",20224,], -["features.roomdetails.impl.edit_RoomDetailsEditView_Day_2_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_2_en",20224,], -["features.roomdetails.impl.edit_RoomDetailsEditView_Day_3_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_3_en",20224,], -["features.roomdetails.impl.edit_RoomDetailsEditView_Day_4_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_4_en",20224,], -["features.roomdetails.impl.edit_RoomDetailsEditView_Day_5_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_5_en",20224,], -["features.roomdetails.impl.edit_RoomDetailsEditView_Day_6_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_6_en",20224,], -["features.roomdetails.impl.edit_RoomDetailsEditView_Day_7_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_7_en",20224,], -["features.roomdetails.impl_RoomDetails_0_en","",20224,], -["features.roomdetails.impl_RoomDetails_10_en","",20224,], -["features.roomdetails.impl_RoomDetails_11_en","",20224,], -["features.roomdetails.impl_RoomDetails_12_en","",20224,], -["features.roomdetails.impl_RoomDetails_13_en","",20224,], -["features.roomdetails.impl_RoomDetails_14_en","",20224,], -["features.roomdetails.impl_RoomDetails_15_en","",20224,], -["features.roomdetails.impl_RoomDetails_16_en","",20224,], -["features.roomdetails.impl_RoomDetails_17_en","",20224,], -["features.roomdetails.impl_RoomDetails_18_en","",20224,], -["features.roomdetails.impl_RoomDetails_1_en","",20224,], -["features.roomdetails.impl_RoomDetails_2_en","",20224,], -["features.roomdetails.impl_RoomDetails_3_en","",20224,], -["features.roomdetails.impl_RoomDetails_4_en","",20224,], -["features.roomdetails.impl_RoomDetails_5_en","",20224,], -["features.roomdetails.impl_RoomDetails_6_en","",20224,], -["features.roomdetails.impl_RoomDetails_7_en","",20224,], -["features.roomdetails.impl_RoomDetails_8_en","",20224,], -["features.roomdetails.impl_RoomDetails_9_en","",20224,], -["features.roomdirectory.impl.root_RoomDirectoryView_Day_0_en","features.roomdirectory.impl.root_RoomDirectoryView_Night_0_en",20224,], -["features.roomdirectory.impl.root_RoomDirectoryView_Day_1_en","features.roomdirectory.impl.root_RoomDirectoryView_Night_1_en",20224,], -["features.roomdirectory.impl.root_RoomDirectoryView_Day_2_en","features.roomdirectory.impl.root_RoomDirectoryView_Night_2_en",20224,], -["features.roomdetails.impl.invite_RoomInviteMembersView_Day_0_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_0_en",20224,], -["features.roomdetails.impl.invite_RoomInviteMembersView_Day_1_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_1_en",20224,], -["features.roomdetails.impl.invite_RoomInviteMembersView_Day_2_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_2_en",20224,], -["features.roomdetails.impl.invite_RoomInviteMembersView_Day_3_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_3_en",20224,], -["features.roomdetails.impl.invite_RoomInviteMembersView_Day_4_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_4_en",20224,], -["features.roomdetails.impl.invite_RoomInviteMembersView_Day_5_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_5_en",20224,], -["features.roomdetails.impl.invite_RoomInviteMembersView_Day_6_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_6_en",20224,], -["features.roomdetails.impl.invite_RoomInviteMembersView_Day_7_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_7_en",20224,], -["features.roomlist.impl.components_RoomListContentView_Day_0_en","features.roomlist.impl.components_RoomListContentView_Night_0_en",20224,], -["features.roomlist.impl.components_RoomListContentView_Day_1_en","features.roomlist.impl.components_RoomListContentView_Night_1_en",20224,], +["features.roomaliasresolver.impl_RoomAliasResolverView_Day_1_en","features.roomaliasresolver.impl_RoomAliasResolverView_Night_1_en",20236,], +["features.roomaliasresolver.impl_RoomAliasResolverView_Day_2_en","features.roomaliasresolver.impl_RoomAliasResolverView_Night_2_en",20236,], +["features.roomdetails.impl_RoomDetailsDark_0_en","",20236,], +["features.roomdetails.impl_RoomDetailsDark_10_en","",20236,], +["features.roomdetails.impl_RoomDetailsDark_11_en","",20236,], +["features.roomdetails.impl_RoomDetailsDark_12_en","",20236,], +["features.roomdetails.impl_RoomDetailsDark_13_en","",20236,], +["features.roomdetails.impl_RoomDetailsDark_14_en","",20236,], +["features.roomdetails.impl_RoomDetailsDark_15_en","",20236,], +["features.roomdetails.impl_RoomDetailsDark_16_en","",20236,], +["features.roomdetails.impl_RoomDetailsDark_17_en","",20236,], +["features.roomdetails.impl_RoomDetailsDark_18_en","",20236,], +["features.roomdetails.impl_RoomDetailsDark_1_en","",20236,], +["features.roomdetails.impl_RoomDetailsDark_2_en","",20236,], +["features.roomdetails.impl_RoomDetailsDark_3_en","",20236,], +["features.roomdetails.impl_RoomDetailsDark_4_en","",20236,], +["features.roomdetails.impl_RoomDetailsDark_5_en","",20236,], +["features.roomdetails.impl_RoomDetailsDark_6_en","",20236,], +["features.roomdetails.impl_RoomDetailsDark_7_en","",20236,], +["features.roomdetails.impl_RoomDetailsDark_8_en","",20236,], +["features.roomdetails.impl_RoomDetailsDark_9_en","",20236,], +["features.roomdetails.impl.edit_RoomDetailsEditView_Day_0_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_0_en",20236,], +["features.roomdetails.impl.edit_RoomDetailsEditView_Day_1_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_1_en",20236,], +["features.roomdetails.impl.edit_RoomDetailsEditView_Day_2_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_2_en",20236,], +["features.roomdetails.impl.edit_RoomDetailsEditView_Day_3_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_3_en",20236,], +["features.roomdetails.impl.edit_RoomDetailsEditView_Day_4_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_4_en",20236,], +["features.roomdetails.impl.edit_RoomDetailsEditView_Day_5_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_5_en",20236,], +["features.roomdetails.impl.edit_RoomDetailsEditView_Day_6_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_6_en",20236,], +["features.roomdetails.impl.edit_RoomDetailsEditView_Day_7_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_7_en",20236,], +["features.roomdetails.impl_RoomDetails_0_en","",20236,], +["features.roomdetails.impl_RoomDetails_10_en","",20236,], +["features.roomdetails.impl_RoomDetails_11_en","",20236,], +["features.roomdetails.impl_RoomDetails_12_en","",20236,], +["features.roomdetails.impl_RoomDetails_13_en","",20236,], +["features.roomdetails.impl_RoomDetails_14_en","",20236,], +["features.roomdetails.impl_RoomDetails_15_en","",20236,], +["features.roomdetails.impl_RoomDetails_16_en","",20236,], +["features.roomdetails.impl_RoomDetails_17_en","",20236,], +["features.roomdetails.impl_RoomDetails_18_en","",20236,], +["features.roomdetails.impl_RoomDetails_1_en","",20236,], +["features.roomdetails.impl_RoomDetails_2_en","",20236,], +["features.roomdetails.impl_RoomDetails_3_en","",20236,], +["features.roomdetails.impl_RoomDetails_4_en","",20236,], +["features.roomdetails.impl_RoomDetails_5_en","",20236,], +["features.roomdetails.impl_RoomDetails_6_en","",20236,], +["features.roomdetails.impl_RoomDetails_7_en","",20236,], +["features.roomdetails.impl_RoomDetails_8_en","",20236,], +["features.roomdetails.impl_RoomDetails_9_en","",20236,], +["features.roomdirectory.impl.root_RoomDirectoryView_Day_0_en","features.roomdirectory.impl.root_RoomDirectoryView_Night_0_en",20236,], +["features.roomdirectory.impl.root_RoomDirectoryView_Day_1_en","features.roomdirectory.impl.root_RoomDirectoryView_Night_1_en",20236,], +["features.roomdirectory.impl.root_RoomDirectoryView_Day_2_en","features.roomdirectory.impl.root_RoomDirectoryView_Night_2_en",20236,], +["features.roomdetails.impl.invite_RoomInviteMembersView_Day_0_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_0_en",20236,], +["features.roomdetails.impl.invite_RoomInviteMembersView_Day_1_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_1_en",20236,], +["features.roomdetails.impl.invite_RoomInviteMembersView_Day_2_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_2_en",20236,], +["features.roomdetails.impl.invite_RoomInviteMembersView_Day_3_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_3_en",20236,], +["features.roomdetails.impl.invite_RoomInviteMembersView_Day_4_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_4_en",20236,], +["features.roomdetails.impl.invite_RoomInviteMembersView_Day_5_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_5_en",20236,], +["features.roomdetails.impl.invite_RoomInviteMembersView_Day_6_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_6_en",20236,], +["features.roomdetails.impl.invite_RoomInviteMembersView_Day_7_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_7_en",20236,], +["features.roomlist.impl.components_RoomListContentView_Day_0_en","features.roomlist.impl.components_RoomListContentView_Night_0_en",20236,], +["features.roomlist.impl.components_RoomListContentView_Day_1_en","features.roomlist.impl.components_RoomListContentView_Night_1_en",20236,], ["features.roomlist.impl.components_RoomListContentView_Day_2_en","features.roomlist.impl.components_RoomListContentView_Night_2_en",0,], -["features.roomlist.impl.components_RoomListContentView_Day_3_en","features.roomlist.impl.components_RoomListContentView_Night_3_en",20224,], -["features.roomlist.impl.components_RoomListContentView_Day_4_en","features.roomlist.impl.components_RoomListContentView_Night_4_en",20224,], -["features.roomlist.impl_RoomListDeclineInviteMenuContent_Day_0_en","features.roomlist.impl_RoomListDeclineInviteMenuContent_Night_0_en",20224,], -["features.roomlist.impl.filters_RoomListFiltersView_Day_0_en","features.roomlist.impl.filters_RoomListFiltersView_Night_0_en",20224,], -["features.roomlist.impl.filters_RoomListFiltersView_Day_1_en","features.roomlist.impl.filters_RoomListFiltersView_Night_1_en",20224,], -["features.roomlist.impl_RoomListModalBottomSheetContent_Day_0_en","features.roomlist.impl_RoomListModalBottomSheetContent_Night_0_en",20224,], -["features.roomlist.impl_RoomListModalBottomSheetContent_Day_1_en","features.roomlist.impl_RoomListModalBottomSheetContent_Night_1_en",20224,], -["features.roomlist.impl_RoomListModalBottomSheetContent_Day_2_en","features.roomlist.impl_RoomListModalBottomSheetContent_Night_2_en",20224,], +["features.roomlist.impl.components_RoomListContentView_Day_3_en","features.roomlist.impl.components_RoomListContentView_Night_3_en",20236,], +["features.roomlist.impl.components_RoomListContentView_Day_4_en","features.roomlist.impl.components_RoomListContentView_Night_4_en",20236,], +["features.roomlist.impl_RoomListDeclineInviteMenuContent_Day_0_en","features.roomlist.impl_RoomListDeclineInviteMenuContent_Night_0_en",20236,], +["features.roomlist.impl.filters_RoomListFiltersView_Day_0_en","features.roomlist.impl.filters_RoomListFiltersView_Night_0_en",20236,], +["features.roomlist.impl.filters_RoomListFiltersView_Day_1_en","features.roomlist.impl.filters_RoomListFiltersView_Night_1_en",20236,], +["features.roomlist.impl_RoomListModalBottomSheetContent_Day_0_en","features.roomlist.impl_RoomListModalBottomSheetContent_Night_0_en",20236,], +["features.roomlist.impl_RoomListModalBottomSheetContent_Day_1_en","features.roomlist.impl_RoomListModalBottomSheetContent_Night_1_en",20236,], +["features.roomlist.impl_RoomListModalBottomSheetContent_Day_2_en","features.roomlist.impl_RoomListModalBottomSheetContent_Night_2_en",20236,], ["features.roomlist.impl.search_RoomListSearchContent_Day_0_en","features.roomlist.impl.search_RoomListSearchContent_Night_0_en",0,], -["features.roomlist.impl.search_RoomListSearchContent_Day_1_en","features.roomlist.impl.search_RoomListSearchContent_Night_1_en",20224,], -["features.roomlist.impl_RoomListView_Day_0_en","features.roomlist.impl_RoomListView_Night_0_en",20224,], -["features.roomlist.impl_RoomListView_Day_10_en","features.roomlist.impl_RoomListView_Night_10_en",20224,], -["features.roomlist.impl_RoomListView_Day_1_en","features.roomlist.impl_RoomListView_Night_1_en",20224,], -["features.roomlist.impl_RoomListView_Day_2_en","features.roomlist.impl_RoomListView_Night_2_en",20224,], -["features.roomlist.impl_RoomListView_Day_3_en","features.roomlist.impl_RoomListView_Night_3_en",20224,], -["features.roomlist.impl_RoomListView_Day_4_en","features.roomlist.impl_RoomListView_Night_4_en",20224,], -["features.roomlist.impl_RoomListView_Day_5_en","features.roomlist.impl_RoomListView_Night_5_en",20224,], -["features.roomlist.impl_RoomListView_Day_6_en","features.roomlist.impl_RoomListView_Night_6_en",20224,], -["features.roomlist.impl_RoomListView_Day_7_en","features.roomlist.impl_RoomListView_Night_7_en",20224,], +["features.roomlist.impl.search_RoomListSearchContent_Day_1_en","features.roomlist.impl.search_RoomListSearchContent_Night_1_en",20236,], +["features.roomlist.impl_RoomListView_Day_0_en","features.roomlist.impl_RoomListView_Night_0_en",20236,], +["features.roomlist.impl_RoomListView_Day_10_en","features.roomlist.impl_RoomListView_Night_10_en",20236,], +["features.roomlist.impl_RoomListView_Day_1_en","features.roomlist.impl_RoomListView_Night_1_en",20236,], +["features.roomlist.impl_RoomListView_Day_2_en","features.roomlist.impl_RoomListView_Night_2_en",20236,], +["features.roomlist.impl_RoomListView_Day_3_en","features.roomlist.impl_RoomListView_Night_3_en",20236,], +["features.roomlist.impl_RoomListView_Day_4_en","features.roomlist.impl_RoomListView_Night_4_en",20236,], +["features.roomlist.impl_RoomListView_Day_5_en","features.roomlist.impl_RoomListView_Night_5_en",20236,], +["features.roomlist.impl_RoomListView_Day_6_en","features.roomlist.impl_RoomListView_Night_6_en",20236,], +["features.roomlist.impl_RoomListView_Day_7_en","features.roomlist.impl_RoomListView_Night_7_en",20236,], ["features.roomlist.impl_RoomListView_Day_8_en","features.roomlist.impl_RoomListView_Night_8_en",0,], ["features.roomlist.impl_RoomListView_Day_9_en","features.roomlist.impl_RoomListView_Night_9_en",0,], -["features.roomdetails.impl.members_RoomMemberListViewBanned_Day_0_en","features.roomdetails.impl.members_RoomMemberListViewBanned_Night_0_en",20224,], -["features.roomdetails.impl.members_RoomMemberListViewBanned_Day_1_en","features.roomdetails.impl.members_RoomMemberListViewBanned_Night_1_en",20224,], -["features.roomdetails.impl.members_RoomMemberListViewBanned_Day_2_en","features.roomdetails.impl.members_RoomMemberListViewBanned_Night_2_en",20224,], -["features.roomdetails.impl.members_RoomMemberListView_Day_0_en","features.roomdetails.impl.members_RoomMemberListView_Night_0_en",20224,], -["features.roomdetails.impl.members_RoomMemberListView_Day_1_en","features.roomdetails.impl.members_RoomMemberListView_Night_1_en",20224,], -["features.roomdetails.impl.members_RoomMemberListView_Day_2_en","features.roomdetails.impl.members_RoomMemberListView_Night_2_en",20224,], -["features.roomdetails.impl.members_RoomMemberListView_Day_3_en","features.roomdetails.impl.members_RoomMemberListView_Night_3_en",20224,], -["features.roomdetails.impl.members_RoomMemberListView_Day_4_en","features.roomdetails.impl.members_RoomMemberListView_Night_4_en",20224,], -["features.roomdetails.impl.members_RoomMemberListView_Day_5_en","features.roomdetails.impl.members_RoomMemberListView_Night_5_en",20224,], +["features.roomdetails.impl.members_RoomMemberListViewBanned_Day_0_en","features.roomdetails.impl.members_RoomMemberListViewBanned_Night_0_en",20236,], +["features.roomdetails.impl.members_RoomMemberListViewBanned_Day_1_en","features.roomdetails.impl.members_RoomMemberListViewBanned_Night_1_en",20236,], +["features.roomdetails.impl.members_RoomMemberListViewBanned_Day_2_en","features.roomdetails.impl.members_RoomMemberListViewBanned_Night_2_en",20236,], +["features.roomdetails.impl.members_RoomMemberListView_Day_0_en","features.roomdetails.impl.members_RoomMemberListView_Night_0_en",20236,], +["features.roomdetails.impl.members_RoomMemberListView_Day_1_en","features.roomdetails.impl.members_RoomMemberListView_Night_1_en",20236,], +["features.roomdetails.impl.members_RoomMemberListView_Day_2_en","features.roomdetails.impl.members_RoomMemberListView_Night_2_en",20236,], +["features.roomdetails.impl.members_RoomMemberListView_Day_3_en","features.roomdetails.impl.members_RoomMemberListView_Night_3_en",20236,], +["features.roomdetails.impl.members_RoomMemberListView_Day_4_en","features.roomdetails.impl.members_RoomMemberListView_Night_4_en",20236,], +["features.roomdetails.impl.members_RoomMemberListView_Day_5_en","features.roomdetails.impl.members_RoomMemberListView_Night_5_en",20236,], ["features.roomdetails.impl.members_RoomMemberListView_Day_6_en","features.roomdetails.impl.members_RoomMemberListView_Night_6_en",0,], -["features.roomdetails.impl.members_RoomMemberListView_Day_7_en","features.roomdetails.impl.members_RoomMemberListView_Night_7_en",20224,], -["features.roomdetails.impl.members_RoomMemberListView_Day_8_en","features.roomdetails.impl.members_RoomMemberListView_Night_8_en",20224,], -["features.roomdetails.impl.members_RoomMemberListView_Day_9_en","features.roomdetails.impl.members_RoomMemberListView_Night_9_en",20224,], +["features.roomdetails.impl.members_RoomMemberListView_Day_7_en","features.roomdetails.impl.members_RoomMemberListView_Night_7_en",20236,], +["features.roomdetails.impl.members_RoomMemberListView_Day_8_en","features.roomdetails.impl.members_RoomMemberListView_Night_8_en",20236,], +["features.roomdetails.impl.members_RoomMemberListView_Day_9_en","features.roomdetails.impl.members_RoomMemberListView_Night_9_en",20236,], ["libraries.designsystem.atomic.molecules_RoomMembersCountMolecule_Day_0_en","libraries.designsystem.atomic.molecules_RoomMembersCountMolecule_Night_0_en",0,], -["features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_0_en","features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_0_en",20224,], +["features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_0_en","features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_0_en",20236,], ["features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_10_en","features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_10_en",0,], -["features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_1_en","features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_1_en",20224,], -["features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_2_en","features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_2_en",20224,], -["features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_3_en","features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_3_en",20224,], -["features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_4_en","features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_4_en",20224,], -["features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_5_en","features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_5_en",20224,], -["features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_6_en","features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_6_en",20224,], +["features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_1_en","features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_1_en",20236,], +["features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_2_en","features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_2_en",20236,], +["features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_3_en","features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_3_en",20236,], +["features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_4_en","features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_4_en",20236,], +["features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_5_en","features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_5_en",20236,], +["features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_6_en","features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_6_en",20236,], ["features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_7_en","features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_7_en",0,], -["features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_8_en","features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_8_en",20224,], -["features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_9_en","features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_9_en",20224,], -["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsOption_Day_0_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsOption_Night_0_en",20224,], -["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_0_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_0_en",20224,], -["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_1_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_1_en",20224,], -["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_2_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_2_en",20224,], -["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_3_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_3_en",20224,], -["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_4_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_4_en",20224,], -["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_5_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_5_en",20224,], -["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_6_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_6_en",20224,], -["libraries.roomselect.impl_RoomSelectView_Day_0_en","libraries.roomselect.impl_RoomSelectView_Night_0_en",20224,], -["libraries.roomselect.impl_RoomSelectView_Day_1_en","libraries.roomselect.impl_RoomSelectView_Night_1_en",20224,], -["libraries.roomselect.impl_RoomSelectView_Day_2_en","libraries.roomselect.impl_RoomSelectView_Night_2_en",20224,], -["libraries.roomselect.impl_RoomSelectView_Day_3_en","libraries.roomselect.impl_RoomSelectView_Night_3_en",20224,], -["libraries.roomselect.impl_RoomSelectView_Day_4_en","libraries.roomselect.impl_RoomSelectView_Night_4_en",20224,], -["libraries.roomselect.impl_RoomSelectView_Day_5_en","libraries.roomselect.impl_RoomSelectView_Night_5_en",20224,], +["features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_8_en","features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_8_en",20236,], +["features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_9_en","features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_9_en",20236,], +["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsOption_Day_0_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsOption_Night_0_en",20236,], +["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_0_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_0_en",20236,], +["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_1_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_1_en",20236,], +["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_2_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_2_en",20236,], +["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_3_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_3_en",20236,], +["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_4_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_4_en",20236,], +["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_5_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_5_en",20236,], +["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_6_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_6_en",20236,], +["libraries.roomselect.impl_RoomSelectView_Day_0_en","libraries.roomselect.impl_RoomSelectView_Night_0_en",20236,], +["libraries.roomselect.impl_RoomSelectView_Day_1_en","libraries.roomselect.impl_RoomSelectView_Night_1_en",20236,], +["libraries.roomselect.impl_RoomSelectView_Day_2_en","libraries.roomselect.impl_RoomSelectView_Night_2_en",20236,], +["libraries.roomselect.impl_RoomSelectView_Day_3_en","libraries.roomselect.impl_RoomSelectView_Night_3_en",20236,], +["libraries.roomselect.impl_RoomSelectView_Day_4_en","libraries.roomselect.impl_RoomSelectView_Night_4_en",20236,], +["libraries.roomselect.impl_RoomSelectView_Day_5_en","libraries.roomselect.impl_RoomSelectView_Night_5_en",20236,], ["features.roomlist.impl.components_RoomSummaryPlaceholderRow_Day_0_en","features.roomlist.impl.components_RoomSummaryPlaceholderRow_Night_0_en",0,], ["features.roomlist.impl.components_RoomSummaryRow_Day_0_en","features.roomlist.impl.components_RoomSummaryRow_Night_0_en",0,], ["features.roomlist.impl.components_RoomSummaryRow_Day_10_en","features.roomlist.impl.components_RoomSummaryRow_Night_10_en",0,], @@ -1053,12 +1060,12 @@ export const screenshots = [ ["features.roomlist.impl.components_RoomSummaryRow_Day_26_en","features.roomlist.impl.components_RoomSummaryRow_Night_26_en",0,], ["features.roomlist.impl.components_RoomSummaryRow_Day_27_en","features.roomlist.impl.components_RoomSummaryRow_Night_27_en",0,], ["features.roomlist.impl.components_RoomSummaryRow_Day_28_en","features.roomlist.impl.components_RoomSummaryRow_Night_28_en",0,], -["features.roomlist.impl.components_RoomSummaryRow_Day_29_en","features.roomlist.impl.components_RoomSummaryRow_Night_29_en",20224,], -["features.roomlist.impl.components_RoomSummaryRow_Day_2_en","features.roomlist.impl.components_RoomSummaryRow_Night_2_en",20224,], -["features.roomlist.impl.components_RoomSummaryRow_Day_30_en","features.roomlist.impl.components_RoomSummaryRow_Night_30_en",20224,], -["features.roomlist.impl.components_RoomSummaryRow_Day_31_en","features.roomlist.impl.components_RoomSummaryRow_Night_31_en",20224,], -["features.roomlist.impl.components_RoomSummaryRow_Day_32_en","features.roomlist.impl.components_RoomSummaryRow_Night_32_en",20224,], -["features.roomlist.impl.components_RoomSummaryRow_Day_33_en","features.roomlist.impl.components_RoomSummaryRow_Night_33_en",20224,], +["features.roomlist.impl.components_RoomSummaryRow_Day_29_en","features.roomlist.impl.components_RoomSummaryRow_Night_29_en",20236,], +["features.roomlist.impl.components_RoomSummaryRow_Day_2_en","features.roomlist.impl.components_RoomSummaryRow_Night_2_en",20236,], +["features.roomlist.impl.components_RoomSummaryRow_Day_30_en","features.roomlist.impl.components_RoomSummaryRow_Night_30_en",20236,], +["features.roomlist.impl.components_RoomSummaryRow_Day_31_en","features.roomlist.impl.components_RoomSummaryRow_Night_31_en",20236,], +["features.roomlist.impl.components_RoomSummaryRow_Day_32_en","features.roomlist.impl.components_RoomSummaryRow_Night_32_en",20236,], +["features.roomlist.impl.components_RoomSummaryRow_Day_33_en","features.roomlist.impl.components_RoomSummaryRow_Night_33_en",20236,], ["features.roomlist.impl.components_RoomSummaryRow_Day_3_en","features.roomlist.impl.components_RoomSummaryRow_Night_3_en",0,], ["features.roomlist.impl.components_RoomSummaryRow_Day_4_en","features.roomlist.impl.components_RoomSummaryRow_Night_4_en",0,], ["features.roomlist.impl.components_RoomSummaryRow_Day_5_en","features.roomlist.impl.components_RoomSummaryRow_Night_5_en",0,], @@ -1066,77 +1073,77 @@ export const screenshots = [ ["features.roomlist.impl.components_RoomSummaryRow_Day_7_en","features.roomlist.impl.components_RoomSummaryRow_Night_7_en",0,], ["features.roomlist.impl.components_RoomSummaryRow_Day_8_en","features.roomlist.impl.components_RoomSummaryRow_Night_8_en",0,], ["features.roomlist.impl.components_RoomSummaryRow_Day_9_en","features.roomlist.impl.components_RoomSummaryRow_Night_9_en",0,], -["appnav.root_RootView_Day_0_en","appnav.root_RootView_Night_0_en",20224,], -["appnav.root_RootView_Day_1_en","appnav.root_RootView_Night_1_en",20224,], -["appnav.root_RootView_Day_2_en","appnav.root_RootView_Night_2_en",20224,], +["appnav.root_RootView_Day_0_en","appnav.root_RootView_Night_0_en",20236,], +["appnav.root_RootView_Day_1_en","appnav.root_RootView_Night_1_en",20236,], +["appnav.root_RootView_Day_2_en","appnav.root_RootView_Night_2_en",20236,], ["appicon.element_RoundIcon_en","",0,], ["appicon.enterprise_RoundIcon_en","",0,], ["libraries.designsystem.atomic.atoms_RoundedIconAtom_Day_0_en","libraries.designsystem.atomic.atoms_RoundedIconAtom_Night_0_en",0,], -["features.verifysession.impl.emoji_SasEmojis_Day_0_en","features.verifysession.impl.emoji_SasEmojis_Night_0_en",20224,], -["features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Day_0_en","features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Night_0_en",20224,], -["features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Day_1_en","features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Night_1_en",20224,], +["features.verifysession.impl.emoji_SasEmojis_Day_0_en","features.verifysession.impl.emoji_SasEmojis_Night_0_en",20236,], +["features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Day_0_en","features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Night_0_en",20236,], +["features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Day_1_en","features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Night_1_en",20236,], ["libraries.designsystem.theme.components_SearchBarActiveNoneQuery_Search_views_en","",0,], ["libraries.designsystem.theme.components_SearchBarActiveWithContent_Search_views_en","",0,], -["libraries.designsystem.theme.components_SearchBarActiveWithNoResults_Search_views_en","",20224,], +["libraries.designsystem.theme.components_SearchBarActiveWithNoResults_Search_views_en","",20236,], ["libraries.designsystem.theme.components_SearchBarActiveWithQueryNoBackButton_Search_views_en","",0,], ["libraries.designsystem.theme.components_SearchBarActiveWithQuery_Search_views_en","",0,], ["libraries.designsystem.theme.components_SearchBarInactive_Search_views_en","",0,], -["features.createroom.impl.components_SearchMultipleUsersResultItem_en","",20224,], -["features.createroom.impl.components_SearchSingleUserResultItem_en","",20224,], -["features.securebackup.impl.disable_SecureBackupDisableView_Day_0_en","features.securebackup.impl.disable_SecureBackupDisableView_Night_0_en",20224,], -["features.securebackup.impl.disable_SecureBackupDisableView_Day_1_en","features.securebackup.impl.disable_SecureBackupDisableView_Night_1_en",20224,], -["features.securebackup.impl.disable_SecureBackupDisableView_Day_2_en","features.securebackup.impl.disable_SecureBackupDisableView_Night_2_en",20224,], -["features.securebackup.impl.disable_SecureBackupDisableView_Day_3_en","features.securebackup.impl.disable_SecureBackupDisableView_Night_3_en",20224,], -["features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_0_en","features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_0_en",20224,], -["features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_1_en","features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_1_en",20224,], -["features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_2_en","features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_2_en",20224,], -["features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_3_en","features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_3_en",20224,], -["features.securebackup.impl.root_SecureBackupRootView_Day_0_en","features.securebackup.impl.root_SecureBackupRootView_Night_0_en",20224,], -["features.securebackup.impl.root_SecureBackupRootView_Day_10_en","features.securebackup.impl.root_SecureBackupRootView_Night_10_en",20224,], -["features.securebackup.impl.root_SecureBackupRootView_Day_11_en","features.securebackup.impl.root_SecureBackupRootView_Night_11_en",20224,], -["features.securebackup.impl.root_SecureBackupRootView_Day_12_en","features.securebackup.impl.root_SecureBackupRootView_Night_12_en",20224,], -["features.securebackup.impl.root_SecureBackupRootView_Day_13_en","features.securebackup.impl.root_SecureBackupRootView_Night_13_en",20224,], -["features.securebackup.impl.root_SecureBackupRootView_Day_14_en","features.securebackup.impl.root_SecureBackupRootView_Night_14_en",20224,], -["features.securebackup.impl.root_SecureBackupRootView_Day_15_en","features.securebackup.impl.root_SecureBackupRootView_Night_15_en",20224,], -["features.securebackup.impl.root_SecureBackupRootView_Day_16_en","features.securebackup.impl.root_SecureBackupRootView_Night_16_en",20224,], -["features.securebackup.impl.root_SecureBackupRootView_Day_17_en","features.securebackup.impl.root_SecureBackupRootView_Night_17_en",20224,], -["features.securebackup.impl.root_SecureBackupRootView_Day_1_en","features.securebackup.impl.root_SecureBackupRootView_Night_1_en",20224,], -["features.securebackup.impl.root_SecureBackupRootView_Day_2_en","features.securebackup.impl.root_SecureBackupRootView_Night_2_en",20224,], -["features.securebackup.impl.root_SecureBackupRootView_Day_3_en","features.securebackup.impl.root_SecureBackupRootView_Night_3_en",20224,], -["features.securebackup.impl.root_SecureBackupRootView_Day_4_en","features.securebackup.impl.root_SecureBackupRootView_Night_4_en",20224,], -["features.securebackup.impl.root_SecureBackupRootView_Day_5_en","features.securebackup.impl.root_SecureBackupRootView_Night_5_en",20224,], -["features.securebackup.impl.root_SecureBackupRootView_Day_6_en","features.securebackup.impl.root_SecureBackupRootView_Night_6_en",20224,], -["features.securebackup.impl.root_SecureBackupRootView_Day_7_en","features.securebackup.impl.root_SecureBackupRootView_Night_7_en",20224,], -["features.securebackup.impl.root_SecureBackupRootView_Day_8_en","features.securebackup.impl.root_SecureBackupRootView_Night_8_en",20224,], -["features.securebackup.impl.root_SecureBackupRootView_Day_9_en","features.securebackup.impl.root_SecureBackupRootView_Night_9_en",20224,], -["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_0_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_0_en",20224,], -["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_1_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_1_en",20224,], -["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_2_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_2_en",20224,], -["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_3_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_3_en",20224,], -["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_4_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_4_en",20224,], -["features.securebackup.impl.setup_SecureBackupSetupView_Day_0_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_0_en",20224,], -["features.securebackup.impl.setup_SecureBackupSetupView_Day_1_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_1_en",20224,], -["features.securebackup.impl.setup_SecureBackupSetupView_Day_2_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_2_en",20224,], -["features.securebackup.impl.setup_SecureBackupSetupView_Day_3_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_3_en",20224,], -["features.securebackup.impl.setup_SecureBackupSetupView_Day_4_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_4_en",20224,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_0_en","",20224,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_1_en","",20224,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_2_en","",20224,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_3_en","",20224,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_4_en","",20224,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_5_en","",20224,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_6_en","",20224,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_7_en","",20224,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_8_en","",20224,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_0_en","",20224,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_1_en","",20224,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_2_en","",20224,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_3_en","",20224,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_4_en","",20224,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_5_en","",20224,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_6_en","",20224,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_7_en","",20224,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_8_en","",20224,], +["features.createroom.impl.components_SearchMultipleUsersResultItem_en","",20236,], +["features.createroom.impl.components_SearchSingleUserResultItem_en","",20236,], +["features.securebackup.impl.disable_SecureBackupDisableView_Day_0_en","features.securebackup.impl.disable_SecureBackupDisableView_Night_0_en",20236,], +["features.securebackup.impl.disable_SecureBackupDisableView_Day_1_en","features.securebackup.impl.disable_SecureBackupDisableView_Night_1_en",20236,], +["features.securebackup.impl.disable_SecureBackupDisableView_Day_2_en","features.securebackup.impl.disable_SecureBackupDisableView_Night_2_en",20236,], +["features.securebackup.impl.disable_SecureBackupDisableView_Day_3_en","features.securebackup.impl.disable_SecureBackupDisableView_Night_3_en",20236,], +["features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_0_en","features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_0_en",20236,], +["features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_1_en","features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_1_en",20236,], +["features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_2_en","features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_2_en",20236,], +["features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_3_en","features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_3_en",20236,], +["features.securebackup.impl.root_SecureBackupRootView_Day_0_en","features.securebackup.impl.root_SecureBackupRootView_Night_0_en",20236,], +["features.securebackup.impl.root_SecureBackupRootView_Day_10_en","features.securebackup.impl.root_SecureBackupRootView_Night_10_en",20236,], +["features.securebackup.impl.root_SecureBackupRootView_Day_11_en","features.securebackup.impl.root_SecureBackupRootView_Night_11_en",20236,], +["features.securebackup.impl.root_SecureBackupRootView_Day_12_en","features.securebackup.impl.root_SecureBackupRootView_Night_12_en",20236,], +["features.securebackup.impl.root_SecureBackupRootView_Day_13_en","features.securebackup.impl.root_SecureBackupRootView_Night_13_en",20236,], +["features.securebackup.impl.root_SecureBackupRootView_Day_14_en","features.securebackup.impl.root_SecureBackupRootView_Night_14_en",20236,], +["features.securebackup.impl.root_SecureBackupRootView_Day_15_en","features.securebackup.impl.root_SecureBackupRootView_Night_15_en",20236,], +["features.securebackup.impl.root_SecureBackupRootView_Day_16_en","features.securebackup.impl.root_SecureBackupRootView_Night_16_en",20236,], +["features.securebackup.impl.root_SecureBackupRootView_Day_17_en","features.securebackup.impl.root_SecureBackupRootView_Night_17_en",20236,], +["features.securebackup.impl.root_SecureBackupRootView_Day_1_en","features.securebackup.impl.root_SecureBackupRootView_Night_1_en",20236,], +["features.securebackup.impl.root_SecureBackupRootView_Day_2_en","features.securebackup.impl.root_SecureBackupRootView_Night_2_en",20236,], +["features.securebackup.impl.root_SecureBackupRootView_Day_3_en","features.securebackup.impl.root_SecureBackupRootView_Night_3_en",20236,], +["features.securebackup.impl.root_SecureBackupRootView_Day_4_en","features.securebackup.impl.root_SecureBackupRootView_Night_4_en",20236,], +["features.securebackup.impl.root_SecureBackupRootView_Day_5_en","features.securebackup.impl.root_SecureBackupRootView_Night_5_en",20236,], +["features.securebackup.impl.root_SecureBackupRootView_Day_6_en","features.securebackup.impl.root_SecureBackupRootView_Night_6_en",20236,], +["features.securebackup.impl.root_SecureBackupRootView_Day_7_en","features.securebackup.impl.root_SecureBackupRootView_Night_7_en",20236,], +["features.securebackup.impl.root_SecureBackupRootView_Day_8_en","features.securebackup.impl.root_SecureBackupRootView_Night_8_en",20236,], +["features.securebackup.impl.root_SecureBackupRootView_Day_9_en","features.securebackup.impl.root_SecureBackupRootView_Night_9_en",20236,], +["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_0_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_0_en",20236,], +["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_1_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_1_en",20236,], +["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_2_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_2_en",20236,], +["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_3_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_3_en",20236,], +["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_4_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_4_en",20236,], +["features.securebackup.impl.setup_SecureBackupSetupView_Day_0_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_0_en",20236,], +["features.securebackup.impl.setup_SecureBackupSetupView_Day_1_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_1_en",20236,], +["features.securebackup.impl.setup_SecureBackupSetupView_Day_2_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_2_en",20236,], +["features.securebackup.impl.setup_SecureBackupSetupView_Day_3_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_3_en",20236,], +["features.securebackup.impl.setup_SecureBackupSetupView_Day_4_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_4_en",20236,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_0_en","",20236,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_1_en","",20236,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_2_en","",20236,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_3_en","",20236,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_4_en","",20236,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_5_en","",20236,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_6_en","",20236,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_7_en","",20236,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_8_en","",20236,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_0_en","",20236,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_1_en","",20236,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_2_en","",20236,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_3_en","",20236,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_4_en","",20236,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_5_en","",20236,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_6_en","",20236,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_7_en","",20236,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_8_en","",20236,], ["libraries.matrix.ui.components_SelectedRoom_Day_0_en","libraries.matrix.ui.components_SelectedRoom_Night_0_en",0,], ["libraries.matrix.ui.components_SelectedRoom_Day_1_en","libraries.matrix.ui.components_SelectedRoom_Night_1_en",0,], ["libraries.matrix.ui.components_SelectedRoom_Day_2_en","libraries.matrix.ui.components_SelectedRoom_Night_2_en",0,], @@ -1144,11 +1151,11 @@ export const screenshots = [ ["libraries.matrix.ui.components_SelectedUser_Day_0_en","libraries.matrix.ui.components_SelectedUser_Night_0_en",0,], ["libraries.matrix.ui.components_SelectedUsersRowList_Day_0_en","libraries.matrix.ui.components_SelectedUsersRowList_Night_0_en",0,], ["libraries.textcomposer.components_SendButton_Day_0_en","libraries.textcomposer.components_SendButton_Night_0_en",0,], -["features.location.impl.send_SendLocationView_Day_0_en","features.location.impl.send_SendLocationView_Night_0_en",20224,], -["features.location.impl.send_SendLocationView_Day_1_en","features.location.impl.send_SendLocationView_Night_1_en",20224,], -["features.location.impl.send_SendLocationView_Day_2_en","features.location.impl.send_SendLocationView_Night_2_en",20224,], -["features.location.impl.send_SendLocationView_Day_3_en","features.location.impl.send_SendLocationView_Night_3_en",20224,], -["features.location.impl.send_SendLocationView_Day_4_en","features.location.impl.send_SendLocationView_Night_4_en",20224,], +["features.location.impl.send_SendLocationView_Day_0_en","features.location.impl.send_SendLocationView_Night_0_en",20236,], +["features.location.impl.send_SendLocationView_Day_1_en","features.location.impl.send_SendLocationView_Night_1_en",20236,], +["features.location.impl.send_SendLocationView_Day_2_en","features.location.impl.send_SendLocationView_Night_2_en",20236,], +["features.location.impl.send_SendLocationView_Day_3_en","features.location.impl.send_SendLocationView_Night_3_en",20236,], +["features.location.impl.send_SendLocationView_Day_4_en","features.location.impl.send_SendLocationView_Night_4_en",20236,], ["libraries.matrix.ui.messages.sender_SenderName_Day_0_en","libraries.matrix.ui.messages.sender_SenderName_Night_0_en",0,], ["libraries.matrix.ui.messages.sender_SenderName_Day_1_en","libraries.matrix.ui.messages.sender_SenderName_Night_1_en",0,], ["libraries.matrix.ui.messages.sender_SenderName_Day_2_en","libraries.matrix.ui.messages.sender_SenderName_Night_2_en",0,], @@ -1158,27 +1165,27 @@ export const screenshots = [ ["libraries.matrix.ui.messages.sender_SenderName_Day_6_en","libraries.matrix.ui.messages.sender_SenderName_Night_6_en",0,], ["libraries.matrix.ui.messages.sender_SenderName_Day_7_en","libraries.matrix.ui.messages.sender_SenderName_Night_7_en",0,], ["libraries.matrix.ui.messages.sender_SenderName_Day_8_en","libraries.matrix.ui.messages.sender_SenderName_Night_8_en",0,], -["features.verifysession.impl.incoming.ui_SessionDetailsView_Day_0_en","features.verifysession.impl.incoming.ui_SessionDetailsView_Night_0_en",20224,], -["features.roomlist.impl.components_SetUpRecoveryKeyBanner_Day_0_en","features.roomlist.impl.components_SetUpRecoveryKeyBanner_Night_0_en",20224,], -["features.lockscreen.impl.setup.biometric_SetupBiometricView_Day_0_en","features.lockscreen.impl.setup.biometric_SetupBiometricView_Night_0_en",20224,], -["features.lockscreen.impl.setup.pin_SetupPinView_Day_0_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_0_en",20224,], -["features.lockscreen.impl.setup.pin_SetupPinView_Day_1_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_1_en",20224,], -["features.lockscreen.impl.setup.pin_SetupPinView_Day_2_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_2_en",20224,], -["features.lockscreen.impl.setup.pin_SetupPinView_Day_3_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_3_en",20224,], -["features.lockscreen.impl.setup.pin_SetupPinView_Day_4_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_4_en",20224,], +["features.verifysession.impl.incoming.ui_SessionDetailsView_Day_0_en","features.verifysession.impl.incoming.ui_SessionDetailsView_Night_0_en",20236,], +["features.roomlist.impl.components_SetUpRecoveryKeyBanner_Day_0_en","features.roomlist.impl.components_SetUpRecoveryKeyBanner_Night_0_en",20236,], +["features.lockscreen.impl.setup.biometric_SetupBiometricView_Day_0_en","features.lockscreen.impl.setup.biometric_SetupBiometricView_Night_0_en",20236,], +["features.lockscreen.impl.setup.pin_SetupPinView_Day_0_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_0_en",20236,], +["features.lockscreen.impl.setup.pin_SetupPinView_Day_1_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_1_en",20236,], +["features.lockscreen.impl.setup.pin_SetupPinView_Day_2_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_2_en",20236,], +["features.lockscreen.impl.setup.pin_SetupPinView_Day_3_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_3_en",20236,], +["features.lockscreen.impl.setup.pin_SetupPinView_Day_4_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_4_en",20236,], ["features.share.impl_ShareView_Day_0_en","features.share.impl_ShareView_Night_0_en",0,], ["features.share.impl_ShareView_Day_1_en","features.share.impl_ShareView_Night_1_en",0,], ["features.share.impl_ShareView_Day_2_en","features.share.impl_ShareView_Night_2_en",0,], -["features.share.impl_ShareView_Day_3_en","features.share.impl_ShareView_Night_3_en",20224,], -["features.location.impl.show_ShowLocationView_Day_0_en","features.location.impl.show_ShowLocationView_Night_0_en",20224,], -["features.location.impl.show_ShowLocationView_Day_1_en","features.location.impl.show_ShowLocationView_Night_1_en",20224,], -["features.location.impl.show_ShowLocationView_Day_2_en","features.location.impl.show_ShowLocationView_Night_2_en",20224,], -["features.location.impl.show_ShowLocationView_Day_3_en","features.location.impl.show_ShowLocationView_Night_3_en",20224,], -["features.location.impl.show_ShowLocationView_Day_4_en","features.location.impl.show_ShowLocationView_Night_4_en",20224,], -["features.location.impl.show_ShowLocationView_Day_5_en","features.location.impl.show_ShowLocationView_Night_5_en",20224,], -["features.location.impl.show_ShowLocationView_Day_6_en","features.location.impl.show_ShowLocationView_Night_6_en",20224,], -["features.location.impl.show_ShowLocationView_Day_7_en","features.location.impl.show_ShowLocationView_Night_7_en",20224,], -["features.signedout.impl_SignedOutView_Day_0_en","features.signedout.impl_SignedOutView_Night_0_en",20224,], +["features.share.impl_ShareView_Day_3_en","features.share.impl_ShareView_Night_3_en",20236,], +["features.location.impl.show_ShowLocationView_Day_0_en","features.location.impl.show_ShowLocationView_Night_0_en",20236,], +["features.location.impl.show_ShowLocationView_Day_1_en","features.location.impl.show_ShowLocationView_Night_1_en",20236,], +["features.location.impl.show_ShowLocationView_Day_2_en","features.location.impl.show_ShowLocationView_Night_2_en",20236,], +["features.location.impl.show_ShowLocationView_Day_3_en","features.location.impl.show_ShowLocationView_Night_3_en",20236,], +["features.location.impl.show_ShowLocationView_Day_4_en","features.location.impl.show_ShowLocationView_Night_4_en",20236,], +["features.location.impl.show_ShowLocationView_Day_5_en","features.location.impl.show_ShowLocationView_Night_5_en",20236,], +["features.location.impl.show_ShowLocationView_Day_6_en","features.location.impl.show_ShowLocationView_Night_6_en",20236,], +["features.location.impl.show_ShowLocationView_Day_7_en","features.location.impl.show_ShowLocationView_Night_7_en",20236,], +["features.signedout.impl_SignedOutView_Day_0_en","features.signedout.impl_SignedOutView_Night_0_en",20236,], ["libraries.designsystem.components.dialogs_SingleSelectionDialogContent_Dialogs_en","",0,], ["libraries.designsystem.components.dialogs_SingleSelectionDialog_Day_0_en","libraries.designsystem.components.dialogs_SingleSelectionDialog_Night_0_en",0,], ["libraries.designsystem.components.list_SingleSelectionListItemCustomFormattert_Single_selection_List_item_-_custom_formatter_List_items_en","",0,], @@ -1187,7 +1194,7 @@ export const screenshots = [ ["libraries.designsystem.components.list_SingleSelectionListItemUnselectedWithSupportingText_Single_selection_List_item_-_no_selection,_supporting_text_List_items_en","",0,], ["libraries.designsystem.components.list_SingleSelectionListItem_Single_selection_List_item_-_no_selection_List_items_en","",0,], ["libraries.designsystem.theme.components_Sliders_Sliders_en","",0,], -["features.login.impl.dialogs_SlidingSyncNotSupportedDialog_Day_0_en","features.login.impl.dialogs_SlidingSyncNotSupportedDialog_Night_0_en",20224,], +["features.login.impl.dialogs_SlidingSyncNotSupportedDialog_Day_0_en","features.login.impl.dialogs_SlidingSyncNotSupportedDialog_Night_0_en",20236,], ["libraries.designsystem.theme.components_SnackbarWithActionAndCloseButton_Snackbar_with_action_and_close_button_Snackbars_en","",0,], ["libraries.designsystem.theme.components_SnackbarWithActionOnNewLineAndCloseButton_Snackbar_with_action_and_close_button_on_new_line_Snackbars_en","",0,], ["libraries.designsystem.theme.components_SnackbarWithActionOnNewLine_Snackbar_with_action_on_new_line_Snackbars_en","",0,], @@ -1196,60 +1203,60 @@ export const screenshots = [ ["libraries.designsystem.modifiers_SquareSizeModifierInsideSquare_en","",0,], ["libraries.designsystem.modifiers_SquareSizeModifierLargeHeight_en","",0,], ["libraries.designsystem.modifiers_SquareSizeModifierLargeWidth_en","",0,], -["features.location.api.internal_StaticMapPlaceholder_Day_0_en","features.location.api.internal_StaticMapPlaceholder_Night_0_en",20224,], +["features.location.api.internal_StaticMapPlaceholder_Day_0_en","features.location.api.internal_StaticMapPlaceholder_Night_0_en",20236,], ["features.location.api_StaticMapView_Day_0_en","features.location.api_StaticMapView_Night_0_en",0,], -["features.messages.impl.messagecomposer.suggestions_SuggestionsPickerView_Day_0_en","features.messages.impl.messagecomposer.suggestions_SuggestionsPickerView_Night_0_en",20224,], +["features.messages.impl.messagecomposer.suggestions_SuggestionsPickerView_Day_0_en","features.messages.impl.messagecomposer.suggestions_SuggestionsPickerView_Night_0_en",20236,], ["libraries.designsystem.atomic.pages_SunsetPage_Day_0_en","libraries.designsystem.atomic.pages_SunsetPage_Night_0_en",0,], ["libraries.designsystem.components.button_SuperButton_Day_0_en","libraries.designsystem.components.button_SuperButton_Night_0_en",0,], ["libraries.designsystem.theme.components_Surface_en","",0,], ["libraries.designsystem.theme.components_Switch_Toggles_en","",0,], -["appnav.loggedin_SyncStateView_Day_0_en","appnav.loggedin_SyncStateView_Night_0_en",20224,], +["appnav.loggedin_SyncStateView_Day_0_en","appnav.loggedin_SyncStateView_Night_0_en",20236,], ["libraries.designsystem.theme.components_TextButtonLargeLowPadding_Buttons_en","",0,], ["libraries.designsystem.theme.components_TextButtonLarge_Buttons_en","",0,], ["libraries.designsystem.theme.components_TextButtonMediumLowPadding_Buttons_en","",0,], ["libraries.designsystem.theme.components_TextButtonMedium_Buttons_en","",0,], ["libraries.designsystem.theme.components_TextButtonSmall_Buttons_en","",0,], -["libraries.textcomposer_TextComposerAddCaption_Day_0_en","libraries.textcomposer_TextComposerAddCaption_Night_0_en",20224,], -["libraries.textcomposer_TextComposerCaption_Day_0_en","libraries.textcomposer_TextComposerCaption_Night_0_en",20224,], -["libraries.textcomposer_TextComposerEditCaption_Day_0_en","libraries.textcomposer_TextComposerEditCaption_Night_0_en",20224,], -["libraries.textcomposer_TextComposerEditNotEncrypted_Day_0_en","libraries.textcomposer_TextComposerEditNotEncrypted_Night_0_en",20224,], -["libraries.textcomposer_TextComposerEdit_Day_0_en","libraries.textcomposer_TextComposerEdit_Night_0_en",20224,], -["libraries.textcomposer_TextComposerFormattingNotEncrypted_Day_0_en","libraries.textcomposer_TextComposerFormattingNotEncrypted_Night_0_en",20224,], -["libraries.textcomposer_TextComposerFormatting_Day_0_en","libraries.textcomposer_TextComposerFormatting_Night_0_en",20224,], -["libraries.textcomposer_TextComposerLinkDialogCreateLinkWithoutText_Day_0_en","libraries.textcomposer_TextComposerLinkDialogCreateLinkWithoutText_Night_0_en",20224,], -["libraries.textcomposer_TextComposerLinkDialogCreateLink_Day_0_en","libraries.textcomposer_TextComposerLinkDialogCreateLink_Night_0_en",20224,], -["libraries.textcomposer_TextComposerLinkDialogEditLink_Day_0_en","libraries.textcomposer_TextComposerLinkDialogEditLink_Night_0_en",20224,], -["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_0_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_0_en",20224,], -["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_10_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_10_en",20224,], -["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_11_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_11_en",20224,], -["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_1_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_1_en",20224,], -["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_2_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_2_en",20224,], -["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_3_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_3_en",20224,], -["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_4_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_4_en",20224,], -["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_5_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_5_en",20224,], -["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_6_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_6_en",20224,], -["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_7_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_7_en",20224,], -["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_8_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_8_en",20224,], -["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_9_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_9_en",20224,], -["libraries.textcomposer_TextComposerReply_Day_0_en","libraries.textcomposer_TextComposerReply_Night_0_en",20224,], -["libraries.textcomposer_TextComposerReply_Day_10_en","libraries.textcomposer_TextComposerReply_Night_10_en",20224,], -["libraries.textcomposer_TextComposerReply_Day_11_en","libraries.textcomposer_TextComposerReply_Night_11_en",20224,], -["libraries.textcomposer_TextComposerReply_Day_1_en","libraries.textcomposer_TextComposerReply_Night_1_en",20224,], -["libraries.textcomposer_TextComposerReply_Day_2_en","libraries.textcomposer_TextComposerReply_Night_2_en",20224,], -["libraries.textcomposer_TextComposerReply_Day_3_en","libraries.textcomposer_TextComposerReply_Night_3_en",20224,], -["libraries.textcomposer_TextComposerReply_Day_4_en","libraries.textcomposer_TextComposerReply_Night_4_en",20224,], -["libraries.textcomposer_TextComposerReply_Day_5_en","libraries.textcomposer_TextComposerReply_Night_5_en",20224,], -["libraries.textcomposer_TextComposerReply_Day_6_en","libraries.textcomposer_TextComposerReply_Night_6_en",20224,], -["libraries.textcomposer_TextComposerReply_Day_7_en","libraries.textcomposer_TextComposerReply_Night_7_en",20224,], -["libraries.textcomposer_TextComposerReply_Day_8_en","libraries.textcomposer_TextComposerReply_Night_8_en",20224,], -["libraries.textcomposer_TextComposerReply_Day_9_en","libraries.textcomposer_TextComposerReply_Night_9_en",20224,], -["libraries.textcomposer_TextComposerSimpleNotEncrypted_Day_0_en","libraries.textcomposer_TextComposerSimpleNotEncrypted_Night_0_en",20224,], -["libraries.textcomposer_TextComposerSimple_Day_0_en","libraries.textcomposer_TextComposerSimple_Night_0_en",20224,], -["libraries.textcomposer_TextComposerVoiceNotEncrypted_Day_0_en","libraries.textcomposer_TextComposerVoiceNotEncrypted_Night_0_en",20224,], +["libraries.textcomposer_TextComposerAddCaption_Day_0_en","libraries.textcomposer_TextComposerAddCaption_Night_0_en",20236,], +["libraries.textcomposer_TextComposerCaption_Day_0_en","libraries.textcomposer_TextComposerCaption_Night_0_en",20236,], +["libraries.textcomposer_TextComposerEditCaption_Day_0_en","libraries.textcomposer_TextComposerEditCaption_Night_0_en",20236,], +["libraries.textcomposer_TextComposerEditNotEncrypted_Day_0_en","libraries.textcomposer_TextComposerEditNotEncrypted_Night_0_en",20236,], +["libraries.textcomposer_TextComposerEdit_Day_0_en","libraries.textcomposer_TextComposerEdit_Night_0_en",20236,], +["libraries.textcomposer_TextComposerFormattingNotEncrypted_Day_0_en","libraries.textcomposer_TextComposerFormattingNotEncrypted_Night_0_en",20236,], +["libraries.textcomposer_TextComposerFormatting_Day_0_en","libraries.textcomposer_TextComposerFormatting_Night_0_en",20236,], +["libraries.textcomposer_TextComposerLinkDialogCreateLinkWithoutText_Day_0_en","libraries.textcomposer_TextComposerLinkDialogCreateLinkWithoutText_Night_0_en",20236,], +["libraries.textcomposer_TextComposerLinkDialogCreateLink_Day_0_en","libraries.textcomposer_TextComposerLinkDialogCreateLink_Night_0_en",20236,], +["libraries.textcomposer_TextComposerLinkDialogEditLink_Day_0_en","libraries.textcomposer_TextComposerLinkDialogEditLink_Night_0_en",20236,], +["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_0_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_0_en",20236,], +["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_10_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_10_en",20236,], +["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_11_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_11_en",20236,], +["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_1_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_1_en",20236,], +["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_2_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_2_en",20236,], +["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_3_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_3_en",20236,], +["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_4_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_4_en",20236,], +["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_5_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_5_en",20236,], +["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_6_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_6_en",20236,], +["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_7_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_7_en",20236,], +["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_8_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_8_en",20236,], +["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_9_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_9_en",20236,], +["libraries.textcomposer_TextComposerReply_Day_0_en","libraries.textcomposer_TextComposerReply_Night_0_en",20236,], +["libraries.textcomposer_TextComposerReply_Day_10_en","libraries.textcomposer_TextComposerReply_Night_10_en",20236,], +["libraries.textcomposer_TextComposerReply_Day_11_en","libraries.textcomposer_TextComposerReply_Night_11_en",20236,], +["libraries.textcomposer_TextComposerReply_Day_1_en","libraries.textcomposer_TextComposerReply_Night_1_en",20236,], +["libraries.textcomposer_TextComposerReply_Day_2_en","libraries.textcomposer_TextComposerReply_Night_2_en",20236,], +["libraries.textcomposer_TextComposerReply_Day_3_en","libraries.textcomposer_TextComposerReply_Night_3_en",20236,], +["libraries.textcomposer_TextComposerReply_Day_4_en","libraries.textcomposer_TextComposerReply_Night_4_en",20236,], +["libraries.textcomposer_TextComposerReply_Day_5_en","libraries.textcomposer_TextComposerReply_Night_5_en",20236,], +["libraries.textcomposer_TextComposerReply_Day_6_en","libraries.textcomposer_TextComposerReply_Night_6_en",20236,], +["libraries.textcomposer_TextComposerReply_Day_7_en","libraries.textcomposer_TextComposerReply_Night_7_en",20236,], +["libraries.textcomposer_TextComposerReply_Day_8_en","libraries.textcomposer_TextComposerReply_Night_8_en",20236,], +["libraries.textcomposer_TextComposerReply_Day_9_en","libraries.textcomposer_TextComposerReply_Night_9_en",20236,], +["libraries.textcomposer_TextComposerSimpleNotEncrypted_Day_0_en","libraries.textcomposer_TextComposerSimpleNotEncrypted_Night_0_en",20236,], +["libraries.textcomposer_TextComposerSimple_Day_0_en","libraries.textcomposer_TextComposerSimple_Night_0_en",20236,], +["libraries.textcomposer_TextComposerVoiceNotEncrypted_Day_0_en","libraries.textcomposer_TextComposerVoiceNotEncrypted_Night_0_en",20236,], ["libraries.textcomposer_TextComposerVoice_Day_0_en","libraries.textcomposer_TextComposerVoice_Night_0_en",0,], ["libraries.designsystem.theme.components_TextDark_Text_en","",0,], -["libraries.designsystem.components.dialogs_TextFieldDialogWithError_Day_0_en","libraries.designsystem.components.dialogs_TextFieldDialogWithError_Night_0_en",20224,], -["libraries.designsystem.components.dialogs_TextFieldDialog_Day_0_en","libraries.designsystem.components.dialogs_TextFieldDialog_Night_0_en",20224,], +["libraries.designsystem.components.dialogs_TextFieldDialogWithError_Day_0_en","libraries.designsystem.components.dialogs_TextFieldDialogWithError_Night_0_en",20236,], +["libraries.designsystem.components.dialogs_TextFieldDialog_Day_0_en","libraries.designsystem.components.dialogs_TextFieldDialog_Night_0_en",20236,], ["libraries.designsystem.components.list_TextFieldListItemEmpty_Text_field_List_item_-_empty_List_items_en","",0,], ["libraries.designsystem.components.list_TextFieldListItemTextFieldValue_Text_field_List_item_-_textfieldvalue_List_items_en","",0,], ["libraries.designsystem.components.list_TextFieldListItem_Text_field_List_item_-_text_List_items_en","",0,], @@ -1261,14 +1268,14 @@ export const screenshots = [ ["libraries.mediaviewer.impl.local.txt_TextFileContentView_Day_3_en","libraries.mediaviewer.impl.local.txt_TextFileContentView_Night_3_en",0,], ["libraries.textcomposer.components_TextFormatting_Day_0_en","libraries.textcomposer.components_TextFormatting_Night_0_en",0,], ["libraries.designsystem.theme.components_TextLight_Text_en","",0,], -["libraries.designsystem.theme.components.previews_TimePickerHorizontal_DateTime_pickers_en","",20224,], -["libraries.designsystem.theme.components.previews_TimePickerVerticalDark_DateTime_pickers_en","",20224,], -["libraries.designsystem.theme.components.previews_TimePickerVerticalLight_DateTime_pickers_en","",20224,], +["libraries.designsystem.theme.components.previews_TimePickerHorizontal_DateTime_pickers_en","",20236,], +["libraries.designsystem.theme.components.previews_TimePickerVerticalDark_DateTime_pickers_en","",20236,], +["libraries.designsystem.theme.components.previews_TimePickerVerticalLight_DateTime_pickers_en","",20236,], ["features.messages.impl.timeline.components_TimelineEventTimestampView_Day_0_en","features.messages.impl.timeline.components_TimelineEventTimestampView_Night_0_en",0,], ["features.messages.impl.timeline.components_TimelineEventTimestampView_Day_1_en","features.messages.impl.timeline.components_TimelineEventTimestampView_Night_1_en",0,], ["features.messages.impl.timeline.components_TimelineEventTimestampView_Day_2_en","features.messages.impl.timeline.components_TimelineEventTimestampView_Night_2_en",0,], -["features.messages.impl.timeline.components_TimelineEventTimestampView_Day_3_en","features.messages.impl.timeline.components_TimelineEventTimestampView_Night_3_en",20224,], -["features.messages.impl.timeline.components_TimelineEventTimestampView_Day_4_en","features.messages.impl.timeline.components_TimelineEventTimestampView_Night_4_en",20224,], +["features.messages.impl.timeline.components_TimelineEventTimestampView_Day_3_en","features.messages.impl.timeline.components_TimelineEventTimestampView_Night_3_en",20236,], +["features.messages.impl.timeline.components_TimelineEventTimestampView_Day_4_en","features.messages.impl.timeline.components_TimelineEventTimestampView_Night_4_en",20236,], ["features.messages.impl.timeline.components_TimelineEventTimestampView_Day_5_en","features.messages.impl.timeline.components_TimelineEventTimestampView_Night_5_en",0,], ["features.messages.impl.timeline.components_TimelineEventTimestampView_Day_6_en","features.messages.impl.timeline.components_TimelineEventTimestampView_Night_6_en",0,], ["features.messages.impl.timeline.components_TimelineEventTimestampView_Day_7_en","features.messages.impl.timeline.components_TimelineEventTimestampView_Night_7_en",0,], @@ -1278,18 +1285,18 @@ export const screenshots = [ ["features.messages.impl.timeline.components.event_TimelineItemAudioView_Day_2_en","features.messages.impl.timeline.components.event_TimelineItemAudioView_Night_2_en",0,], ["features.messages.impl.timeline.components.event_TimelineItemAudioView_Day_3_en","features.messages.impl.timeline.components.event_TimelineItemAudioView_Night_3_en",0,], ["features.messages.impl.timeline.components.event_TimelineItemAudioView_Day_4_en","features.messages.impl.timeline.components.event_TimelineItemAudioView_Night_4_en",0,], -["features.messages.impl.timeline.components_TimelineItemCallNotifyView_Day_0_en","features.messages.impl.timeline.components_TimelineItemCallNotifyView_Night_0_en",20224,], +["features.messages.impl.timeline.components_TimelineItemCallNotifyView_Day_0_en","features.messages.impl.timeline.components_TimelineItemCallNotifyView_Night_0_en",20236,], ["features.messages.impl.timeline.components.virtual_TimelineItemDaySeparatorView_Day_0_en","features.messages.impl.timeline.components.virtual_TimelineItemDaySeparatorView_Night_0_en",0,], ["features.messages.impl.timeline.components.virtual_TimelineItemDaySeparatorView_Day_1_en","features.messages.impl.timeline.components.virtual_TimelineItemDaySeparatorView_Night_1_en",0,], -["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_0_en",20224,], -["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_1_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_1_en",20224,], -["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_2_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_2_en",20224,], -["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_3_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_3_en",20224,], -["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_4_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_4_en",20224,], -["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_5_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_5_en",20224,], -["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_6_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_6_en",20224,], -["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_7_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_7_en",20224,], -["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_8_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_8_en",20224,], +["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_0_en",20236,], +["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_1_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_1_en",20236,], +["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_2_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_2_en",20236,], +["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_3_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_3_en",20236,], +["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_4_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_4_en",20236,], +["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_5_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_5_en",20236,], +["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_6_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_6_en",20236,], +["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_7_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_7_en",20236,], +["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_8_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_8_en",20236,], ["features.messages.impl.timeline.components_TimelineItemEventRowDisambiguated_Day_0_en","features.messages.impl.timeline.components_TimelineItemEventRowDisambiguated_Night_0_en",0,], ["features.messages.impl.timeline.components_TimelineItemEventRowForDirectRoom_Day_0_en","features.messages.impl.timeline.components_TimelineItemEventRowForDirectRoom_Night_0_en",0,], ["features.messages.impl.timeline.components_TimelineItemEventRowLongSenderName_en","",0,], @@ -1297,18 +1304,18 @@ export const screenshots = [ ["features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_0_en","features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Night_0_en",0,], ["features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_1_en","features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Night_1_en",0,], ["features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_2_en","features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Night_2_en",0,], -["features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_3_en","features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Night_3_en",20224,], -["features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_4_en","features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Night_4_en",20224,], +["features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_3_en","features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Night_3_en",20236,], +["features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_4_en","features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Night_4_en",20236,], ["features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_5_en","features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Night_5_en",0,], ["features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_6_en","features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Night_6_en",0,], -["features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_7_en","features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Night_7_en",20224,], -["features.messages.impl.timeline.components_TimelineItemEventRowUtd_Day_0_en","features.messages.impl.timeline.components_TimelineItemEventRowUtd_Night_0_en",20224,], -["features.messages.impl.timeline.components_TimelineItemEventRowWithManyReactions_Day_0_en","features.messages.impl.timeline.components_TimelineItemEventRowWithManyReactions_Night_0_en",20224,], +["features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_7_en","features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Night_7_en",20236,], +["features.messages.impl.timeline.components_TimelineItemEventRowUtd_Day_0_en","features.messages.impl.timeline.components_TimelineItemEventRowUtd_Night_0_en",20236,], +["features.messages.impl.timeline.components_TimelineItemEventRowWithManyReactions_Day_0_en","features.messages.impl.timeline.components_TimelineItemEventRowWithManyReactions_Night_0_en",20236,], ["features.messages.impl.timeline.components_TimelineItemEventRowWithRR_Day_0_en","features.messages.impl.timeline.components_TimelineItemEventRowWithRR_Night_0_en",0,], ["features.messages.impl.timeline.components_TimelineItemEventRowWithRR_Day_1_en","features.messages.impl.timeline.components_TimelineItemEventRowWithRR_Night_1_en",0,], ["features.messages.impl.timeline.components_TimelineItemEventRowWithRR_Day_2_en","features.messages.impl.timeline.components_TimelineItemEventRowWithRR_Night_2_en",0,], -["features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Day_0_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Night_0_en",20224,], -["features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Day_1_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Night_1_en",20224,], +["features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Day_0_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Night_0_en",20236,], +["features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Day_1_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Night_1_en",20236,], ["features.messages.impl.timeline.components_TimelineItemEventRowWithReplyOther_Day_0_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReplyOther_Night_0_en",0,], ["features.messages.impl.timeline.components_TimelineItemEventRowWithReplyOther_Day_1_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReplyOther_Night_1_en",0,], ["features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_0_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_0_en",0,], @@ -1317,40 +1324,40 @@ export const screenshots = [ ["features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_1_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_1_en",0,], ["features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_2_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_2_en",0,], ["features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_3_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_3_en",0,], -["features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_4_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_4_en",20224,], +["features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_4_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_4_en",20236,], ["features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_5_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_5_en",0,], ["features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_6_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_6_en",0,], ["features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_7_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_7_en",0,], -["features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_8_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_8_en",20224,], +["features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_8_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_8_en",20236,], ["features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_9_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_9_en",0,], ["features.messages.impl.timeline.components_TimelineItemEventRow_Day_0_en","features.messages.impl.timeline.components_TimelineItemEventRow_Night_0_en",0,], -["features.messages.impl.timeline.components_TimelineItemEventTimestampBelow_en","",20224,], +["features.messages.impl.timeline.components_TimelineItemEventTimestampBelow_en","",20236,], ["features.messages.impl.timeline.components.event_TimelineItemFileView_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemFileView_Night_0_en",0,], ["features.messages.impl.timeline.components.event_TimelineItemFileView_Day_1_en","features.messages.impl.timeline.components.event_TimelineItemFileView_Night_1_en",0,], ["features.messages.impl.timeline.components.event_TimelineItemFileView_Day_2_en","features.messages.impl.timeline.components.event_TimelineItemFileView_Night_2_en",0,], ["features.messages.impl.timeline.components.event_TimelineItemFileView_Day_3_en","features.messages.impl.timeline.components.event_TimelineItemFileView_Night_3_en",0,], ["features.messages.impl.timeline.components.event_TimelineItemFileView_Day_4_en","features.messages.impl.timeline.components.event_TimelineItemFileView_Night_4_en",0,], -["features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentCollapse_Day_0_en","features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentCollapse_Night_0_en",20224,], -["features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentExpanded_Day_0_en","features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentExpanded_Night_0_en",20224,], -["features.messages.impl.timeline.components.event_TimelineItemImageViewHideMediaContent_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemImageViewHideMediaContent_Night_0_en",20224,], +["features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentCollapse_Day_0_en","features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentCollapse_Night_0_en",20236,], +["features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentExpanded_Day_0_en","features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentExpanded_Night_0_en",20236,], +["features.messages.impl.timeline.components.event_TimelineItemImageViewHideMediaContent_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemImageViewHideMediaContent_Night_0_en",20236,], ["features.messages.impl.timeline.components.event_TimelineItemImageView_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemImageView_Night_0_en",0,], ["features.messages.impl.timeline.components.event_TimelineItemImageView_Day_1_en","features.messages.impl.timeline.components.event_TimelineItemImageView_Night_1_en",0,], ["features.messages.impl.timeline.components.event_TimelineItemImageView_Day_2_en","features.messages.impl.timeline.components.event_TimelineItemImageView_Night_2_en",0,], ["features.messages.impl.timeline.components.event_TimelineItemImageView_Day_3_en","features.messages.impl.timeline.components.event_TimelineItemImageView_Night_3_en",0,], ["features.messages.impl.timeline.components.event_TimelineItemInformativeView_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemInformativeView_Night_0_en",0,], -["features.messages.impl.timeline.components.event_TimelineItemLegacyCallInviteView_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemLegacyCallInviteView_Night_0_en",20224,], +["features.messages.impl.timeline.components.event_TimelineItemLegacyCallInviteView_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemLegacyCallInviteView_Night_0_en",20236,], ["features.messages.impl.timeline.components.event_TimelineItemLocationView_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemLocationView_Night_0_en",0,], ["features.messages.impl.timeline.components.event_TimelineItemLocationView_Day_1_en","features.messages.impl.timeline.components.event_TimelineItemLocationView_Night_1_en",0,], -["features.messages.impl.timeline.components.event_TimelineItemPollView_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemPollView_Night_0_en",20224,], -["features.messages.impl.timeline.components.event_TimelineItemPollView_Day_1_en","features.messages.impl.timeline.components.event_TimelineItemPollView_Night_1_en",20224,], -["features.messages.impl.timeline.components.event_TimelineItemPollView_Day_2_en","features.messages.impl.timeline.components.event_TimelineItemPollView_Night_2_en",20224,], -["features.messages.impl.timeline.components.event_TimelineItemPollView_Day_3_en","features.messages.impl.timeline.components.event_TimelineItemPollView_Night_3_en",20224,], -["features.messages.impl.timeline.components_TimelineItemReactionsLayout_Day_0_en","features.messages.impl.timeline.components_TimelineItemReactionsLayout_Night_0_en",20224,], +["features.messages.impl.timeline.components.event_TimelineItemPollView_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemPollView_Night_0_en",20236,], +["features.messages.impl.timeline.components.event_TimelineItemPollView_Day_1_en","features.messages.impl.timeline.components.event_TimelineItemPollView_Night_1_en",20236,], +["features.messages.impl.timeline.components.event_TimelineItemPollView_Day_2_en","features.messages.impl.timeline.components.event_TimelineItemPollView_Night_2_en",20236,], +["features.messages.impl.timeline.components.event_TimelineItemPollView_Day_3_en","features.messages.impl.timeline.components.event_TimelineItemPollView_Night_3_en",20236,], +["features.messages.impl.timeline.components_TimelineItemReactionsLayout_Day_0_en","features.messages.impl.timeline.components_TimelineItemReactionsLayout_Night_0_en",20236,], ["features.messages.impl.timeline.components_TimelineItemReactionsViewFew_Day_0_en","features.messages.impl.timeline.components_TimelineItemReactionsViewFew_Night_0_en",0,], -["features.messages.impl.timeline.components_TimelineItemReactionsViewIncoming_Day_0_en","features.messages.impl.timeline.components_TimelineItemReactionsViewIncoming_Night_0_en",20224,], -["features.messages.impl.timeline.components_TimelineItemReactionsViewOutgoing_Day_0_en","features.messages.impl.timeline.components_TimelineItemReactionsViewOutgoing_Night_0_en",20224,], +["features.messages.impl.timeline.components_TimelineItemReactionsViewIncoming_Day_0_en","features.messages.impl.timeline.components_TimelineItemReactionsViewIncoming_Night_0_en",20236,], +["features.messages.impl.timeline.components_TimelineItemReactionsViewOutgoing_Day_0_en","features.messages.impl.timeline.components_TimelineItemReactionsViewOutgoing_Night_0_en",20236,], ["features.messages.impl.timeline.components_TimelineItemReactionsView_Day_0_en","features.messages.impl.timeline.components_TimelineItemReactionsView_Night_0_en",0,], -["features.messages.impl.timeline.components.virtual_TimelineItemReadMarkerView_Day_0_en","features.messages.impl.timeline.components.virtual_TimelineItemReadMarkerView_Night_0_en",20224,], +["features.messages.impl.timeline.components.virtual_TimelineItemReadMarkerView_Day_0_en","features.messages.impl.timeline.components.virtual_TimelineItemReadMarkerView_Night_0_en",20236,], ["features.messages.impl.timeline.components.receipt_TimelineItemReadReceiptView_Day_0_en","features.messages.impl.timeline.components.receipt_TimelineItemReadReceiptView_Night_0_en",0,], ["features.messages.impl.timeline.components.receipt_TimelineItemReadReceiptView_Day_1_en","features.messages.impl.timeline.components.receipt_TimelineItemReadReceiptView_Night_1_en",0,], ["features.messages.impl.timeline.components.receipt_TimelineItemReadReceiptView_Day_2_en","features.messages.impl.timeline.components.receipt_TimelineItemReadReceiptView_Night_2_en",0,], @@ -1359,8 +1366,8 @@ export const screenshots = [ ["features.messages.impl.timeline.components.receipt_TimelineItemReadReceiptView_Day_5_en","features.messages.impl.timeline.components.receipt_TimelineItemReadReceiptView_Night_5_en",0,], ["features.messages.impl.timeline.components.receipt_TimelineItemReadReceiptView_Day_6_en","features.messages.impl.timeline.components.receipt_TimelineItemReadReceiptView_Night_6_en",0,], ["features.messages.impl.timeline.components.receipt_TimelineItemReadReceiptView_Day_7_en","features.messages.impl.timeline.components.receipt_TimelineItemReadReceiptView_Night_7_en",0,], -["features.messages.impl.timeline.components.event_TimelineItemRedactedView_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemRedactedView_Night_0_en",20224,], -["features.messages.impl.timeline.components.virtual_TimelineItemRoomBeginningView_Day_0_en","features.messages.impl.timeline.components.virtual_TimelineItemRoomBeginningView_Night_0_en",20224,], +["features.messages.impl.timeline.components.event_TimelineItemRedactedView_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemRedactedView_Night_0_en",20236,], +["features.messages.impl.timeline.components.virtual_TimelineItemRoomBeginningView_Day_0_en","features.messages.impl.timeline.components.virtual_TimelineItemRoomBeginningView_Night_0_en",20236,], ["features.messages.impl.timeline.components_TimelineItemStateEventRow_Day_0_en","features.messages.impl.timeline.components_TimelineItemStateEventRow_Night_0_en",0,], ["features.messages.impl.timeline.components.event_TimelineItemStateView_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemStateView_Night_0_en",0,], ["features.messages.impl.timeline.components.event_TimelineItemStickerView_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemStickerView_Night_0_en",0,], @@ -1375,8 +1382,8 @@ export const screenshots = [ ["features.messages.impl.timeline.components.event_TimelineItemTextView_Day_3_en","features.messages.impl.timeline.components.event_TimelineItemTextView_Night_3_en",0,], ["features.messages.impl.timeline.components.event_TimelineItemTextView_Day_4_en","features.messages.impl.timeline.components.event_TimelineItemTextView_Night_4_en",0,], ["features.messages.impl.timeline.components.event_TimelineItemTextView_Day_5_en","features.messages.impl.timeline.components.event_TimelineItemTextView_Night_5_en",0,], -["features.messages.impl.timeline.components.event_TimelineItemUnknownView_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemUnknownView_Night_0_en",20224,], -["features.messages.impl.timeline.components.event_TimelineItemVideoViewHideMediaContent_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemVideoViewHideMediaContent_Night_0_en",20224,], +["features.messages.impl.timeline.components.event_TimelineItemUnknownView_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemUnknownView_Night_0_en",20236,], +["features.messages.impl.timeline.components.event_TimelineItemVideoViewHideMediaContent_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemVideoViewHideMediaContent_Night_0_en",20236,], ["features.messages.impl.timeline.components.event_TimelineItemVideoView_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemVideoView_Night_0_en",0,], ["features.messages.impl.timeline.components.event_TimelineItemVideoView_Day_1_en","features.messages.impl.timeline.components.event_TimelineItemVideoView_Night_1_en",0,], ["features.messages.impl.timeline.components.event_TimelineItemVideoView_Day_2_en","features.messages.impl.timeline.components.event_TimelineItemVideoView_Night_2_en",0,], @@ -1399,73 +1406,73 @@ export const screenshots = [ ["features.messages.impl.timeline.components.event_TimelineItemVoiceView_Day_9_en","features.messages.impl.timeline.components.event_TimelineItemVoiceView_Night_9_en",0,], ["features.messages.impl.timeline.components.virtual_TimelineLoadingMoreIndicator_Day_0_en","features.messages.impl.timeline.components.virtual_TimelineLoadingMoreIndicator_Night_0_en",0,], ["features.messages.impl.timeline.components.event_TimelineVideoWithCaptionRow_Day_0_en","features.messages.impl.timeline.components.event_TimelineVideoWithCaptionRow_Night_0_en",0,], -["features.messages.impl.timeline_TimelineViewMessageShield_Day_0_en","features.messages.impl.timeline_TimelineViewMessageShield_Night_0_en",20224,], -["features.messages.impl.timeline_TimelineView_Day_0_en","features.messages.impl.timeline_TimelineView_Night_0_en",20224,], +["features.messages.impl.timeline_TimelineViewMessageShield_Day_0_en","features.messages.impl.timeline_TimelineViewMessageShield_Night_0_en",20236,], +["features.messages.impl.timeline_TimelineView_Day_0_en","features.messages.impl.timeline_TimelineView_Night_0_en",20236,], ["features.messages.impl.timeline_TimelineView_Day_10_en","features.messages.impl.timeline_TimelineView_Night_10_en",0,], -["features.messages.impl.timeline_TimelineView_Day_11_en","features.messages.impl.timeline_TimelineView_Night_11_en",20224,], -["features.messages.impl.timeline_TimelineView_Day_12_en","features.messages.impl.timeline_TimelineView_Night_12_en",20224,], -["features.messages.impl.timeline_TimelineView_Day_13_en","features.messages.impl.timeline_TimelineView_Night_13_en",20224,], -["features.messages.impl.timeline_TimelineView_Day_14_en","features.messages.impl.timeline_TimelineView_Night_14_en",20224,], -["features.messages.impl.timeline_TimelineView_Day_15_en","features.messages.impl.timeline_TimelineView_Night_15_en",20224,], -["features.messages.impl.timeline_TimelineView_Day_16_en","features.messages.impl.timeline_TimelineView_Night_16_en",20224,], -["features.messages.impl.timeline_TimelineView_Day_17_en","features.messages.impl.timeline_TimelineView_Night_17_en",20224,], -["features.messages.impl.timeline_TimelineView_Day_1_en","features.messages.impl.timeline_TimelineView_Night_1_en",20224,], +["features.messages.impl.timeline_TimelineView_Day_11_en","features.messages.impl.timeline_TimelineView_Night_11_en",20236,], +["features.messages.impl.timeline_TimelineView_Day_12_en","features.messages.impl.timeline_TimelineView_Night_12_en",20236,], +["features.messages.impl.timeline_TimelineView_Day_13_en","features.messages.impl.timeline_TimelineView_Night_13_en",20236,], +["features.messages.impl.timeline_TimelineView_Day_14_en","features.messages.impl.timeline_TimelineView_Night_14_en",20236,], +["features.messages.impl.timeline_TimelineView_Day_15_en","features.messages.impl.timeline_TimelineView_Night_15_en",20236,], +["features.messages.impl.timeline_TimelineView_Day_16_en","features.messages.impl.timeline_TimelineView_Night_16_en",20236,], +["features.messages.impl.timeline_TimelineView_Day_17_en","features.messages.impl.timeline_TimelineView_Night_17_en",20236,], +["features.messages.impl.timeline_TimelineView_Day_1_en","features.messages.impl.timeline_TimelineView_Night_1_en",20236,], ["features.messages.impl.timeline_TimelineView_Day_2_en","features.messages.impl.timeline_TimelineView_Night_2_en",0,], ["features.messages.impl.timeline_TimelineView_Day_3_en","features.messages.impl.timeline_TimelineView_Night_3_en",0,], -["features.messages.impl.timeline_TimelineView_Day_4_en","features.messages.impl.timeline_TimelineView_Night_4_en",20224,], +["features.messages.impl.timeline_TimelineView_Day_4_en","features.messages.impl.timeline_TimelineView_Night_4_en",20236,], ["features.messages.impl.timeline_TimelineView_Day_5_en","features.messages.impl.timeline_TimelineView_Night_5_en",0,], -["features.messages.impl.timeline_TimelineView_Day_6_en","features.messages.impl.timeline_TimelineView_Night_6_en",20224,], +["features.messages.impl.timeline_TimelineView_Day_6_en","features.messages.impl.timeline_TimelineView_Night_6_en",20236,], ["features.messages.impl.timeline_TimelineView_Day_7_en","features.messages.impl.timeline_TimelineView_Night_7_en",0,], -["features.messages.impl.timeline_TimelineView_Day_8_en","features.messages.impl.timeline_TimelineView_Night_8_en",20224,], +["features.messages.impl.timeline_TimelineView_Day_8_en","features.messages.impl.timeline_TimelineView_Night_8_en",20236,], ["features.messages.impl.timeline_TimelineView_Day_9_en","features.messages.impl.timeline_TimelineView_Night_9_en",0,], ["libraries.designsystem.theme.components_TopAppBar_App_Bars_en","",0,], -["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_0_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_0_en",20224,], -["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_1_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_1_en",20224,], -["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_2_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_2_en",20224,], -["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_3_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_3_en",20224,], -["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_4_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_4_en",20224,], -["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_5_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_5_en",20224,], -["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_6_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_6_en",20224,], -["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_7_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_7_en",20224,], +["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_0_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_0_en",20236,], +["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_1_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_1_en",20236,], +["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_2_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_2_en",20236,], +["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_3_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_3_en",20236,], +["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_4_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_4_en",20236,], +["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_5_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_5_en",20236,], +["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_6_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_6_en",20236,], +["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_7_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_7_en",20236,], ["features.messages.impl.typing_TypingNotificationView_Day_0_en","features.messages.impl.typing_TypingNotificationView_Night_0_en",0,], -["features.messages.impl.typing_TypingNotificationView_Day_1_en","features.messages.impl.typing_TypingNotificationView_Night_1_en",20224,], -["features.messages.impl.typing_TypingNotificationView_Day_2_en","features.messages.impl.typing_TypingNotificationView_Night_2_en",20224,], -["features.messages.impl.typing_TypingNotificationView_Day_3_en","features.messages.impl.typing_TypingNotificationView_Night_3_en",20224,], -["features.messages.impl.typing_TypingNotificationView_Day_4_en","features.messages.impl.typing_TypingNotificationView_Night_4_en",20224,], -["features.messages.impl.typing_TypingNotificationView_Day_5_en","features.messages.impl.typing_TypingNotificationView_Night_5_en",20224,], -["features.messages.impl.typing_TypingNotificationView_Day_6_en","features.messages.impl.typing_TypingNotificationView_Night_6_en",20224,], +["features.messages.impl.typing_TypingNotificationView_Day_1_en","features.messages.impl.typing_TypingNotificationView_Night_1_en",20236,], +["features.messages.impl.typing_TypingNotificationView_Day_2_en","features.messages.impl.typing_TypingNotificationView_Night_2_en",20236,], +["features.messages.impl.typing_TypingNotificationView_Day_3_en","features.messages.impl.typing_TypingNotificationView_Night_3_en",20236,], +["features.messages.impl.typing_TypingNotificationView_Day_4_en","features.messages.impl.typing_TypingNotificationView_Night_4_en",20236,], +["features.messages.impl.typing_TypingNotificationView_Day_5_en","features.messages.impl.typing_TypingNotificationView_Night_5_en",20236,], +["features.messages.impl.typing_TypingNotificationView_Day_6_en","features.messages.impl.typing_TypingNotificationView_Night_6_en",20236,], ["features.messages.impl.typing_TypingNotificationView_Day_7_en","features.messages.impl.typing_TypingNotificationView_Night_7_en",0,], ["features.messages.impl.typing_TypingNotificationView_Day_8_en","features.messages.impl.typing_TypingNotificationView_Night_8_en",0,], ["libraries.designsystem.atomic.atoms_UnreadIndicatorAtom_Day_0_en","libraries.designsystem.atomic.atoms_UnreadIndicatorAtom_Night_0_en",0,], -["libraries.matrix.ui.components_UnresolvedUserRow_en","",20224,], +["libraries.matrix.ui.components_UnresolvedUserRow_en","",20236,], ["libraries.matrix.ui.components_UnsavedAvatar_Day_0_en","libraries.matrix.ui.components_UnsavedAvatar_Night_0_en",0,], ["libraries.designsystem.components.avatar_UserAvatarColors_Day_0_en","libraries.designsystem.components.avatar_UserAvatarColors_Night_0_en",0,], -["features.roomdetails.impl.notificationsettings_UserDefinedRoomNotificationSettingsView_Day_0_en","features.roomdetails.impl.notificationsettings_UserDefinedRoomNotificationSettingsView_Night_0_en",20224,], -["features.createroom.impl.components_UserListView_Day_0_en","features.createroom.impl.components_UserListView_Night_0_en",20224,], -["features.createroom.impl.components_UserListView_Day_1_en","features.createroom.impl.components_UserListView_Night_1_en",20224,], -["features.createroom.impl.components_UserListView_Day_2_en","features.createroom.impl.components_UserListView_Night_2_en",20224,], +["features.roomdetails.impl.notificationsettings_UserDefinedRoomNotificationSettingsView_Day_0_en","features.roomdetails.impl.notificationsettings_UserDefinedRoomNotificationSettingsView_Night_0_en",20236,], +["features.createroom.impl.components_UserListView_Day_0_en","features.createroom.impl.components_UserListView_Night_0_en",20236,], +["features.createroom.impl.components_UserListView_Day_1_en","features.createroom.impl.components_UserListView_Night_1_en",20236,], +["features.createroom.impl.components_UserListView_Day_2_en","features.createroom.impl.components_UserListView_Night_2_en",20236,], ["features.createroom.impl.components_UserListView_Day_3_en","features.createroom.impl.components_UserListView_Night_3_en",0,], ["features.createroom.impl.components_UserListView_Day_4_en","features.createroom.impl.components_UserListView_Night_4_en",0,], ["features.createroom.impl.components_UserListView_Day_5_en","features.createroom.impl.components_UserListView_Night_5_en",0,], ["features.createroom.impl.components_UserListView_Day_6_en","features.createroom.impl.components_UserListView_Night_6_en",0,], -["features.createroom.impl.components_UserListView_Day_7_en","features.createroom.impl.components_UserListView_Night_7_en",20224,], +["features.createroom.impl.components_UserListView_Day_7_en","features.createroom.impl.components_UserListView_Night_7_en",20236,], ["features.createroom.impl.components_UserListView_Day_8_en","features.createroom.impl.components_UserListView_Night_8_en",0,], -["features.createroom.impl.components_UserListView_Day_9_en","features.createroom.impl.components_UserListView_Night_9_en",20224,], +["features.createroom.impl.components_UserListView_Day_9_en","features.createroom.impl.components_UserListView_Night_9_en",20236,], ["features.preferences.impl.user_UserPreferences_Day_0_en","features.preferences.impl.user_UserPreferences_Night_0_en",0,], ["features.preferences.impl.user_UserPreferences_Day_1_en","features.preferences.impl.user_UserPreferences_Night_1_en",0,], ["features.preferences.impl.user_UserPreferences_Day_2_en","features.preferences.impl.user_UserPreferences_Night_2_en",0,], -["features.userprofile.shared_UserProfileHeaderSectionWithVerificationViolation_Day_0_en","features.userprofile.shared_UserProfileHeaderSectionWithVerificationViolation_Night_0_en",20224,], -["features.userprofile.shared_UserProfileHeaderSection_Day_0_en","features.userprofile.shared_UserProfileHeaderSection_Night_0_en",20224,], -["features.userprofile.shared_UserProfileView_Day_0_en","features.userprofile.shared_UserProfileView_Night_0_en",20224,], -["features.userprofile.shared_UserProfileView_Day_1_en","features.userprofile.shared_UserProfileView_Night_1_en",20224,], -["features.userprofile.shared_UserProfileView_Day_2_en","features.userprofile.shared_UserProfileView_Night_2_en",20224,], -["features.userprofile.shared_UserProfileView_Day_3_en","features.userprofile.shared_UserProfileView_Night_3_en",20224,], -["features.userprofile.shared_UserProfileView_Day_4_en","features.userprofile.shared_UserProfileView_Night_4_en",20224,], -["features.userprofile.shared_UserProfileView_Day_5_en","features.userprofile.shared_UserProfileView_Night_5_en",20224,], -["features.userprofile.shared_UserProfileView_Day_6_en","features.userprofile.shared_UserProfileView_Night_6_en",20224,], -["features.userprofile.shared_UserProfileView_Day_7_en","features.userprofile.shared_UserProfileView_Night_7_en",20224,], -["features.userprofile.shared_UserProfileView_Day_8_en","features.userprofile.shared_UserProfileView_Night_8_en",20224,], -["features.userprofile.shared_UserProfileView_Day_9_en","features.userprofile.shared_UserProfileView_Night_9_en",20224,], +["features.userprofile.shared_UserProfileHeaderSectionWithVerificationViolation_Day_0_en","features.userprofile.shared_UserProfileHeaderSectionWithVerificationViolation_Night_0_en",20236,], +["features.userprofile.shared_UserProfileHeaderSection_Day_0_en","features.userprofile.shared_UserProfileHeaderSection_Night_0_en",20236,], +["features.userprofile.shared_UserProfileView_Day_0_en","features.userprofile.shared_UserProfileView_Night_0_en",20236,], +["features.userprofile.shared_UserProfileView_Day_1_en","features.userprofile.shared_UserProfileView_Night_1_en",20236,], +["features.userprofile.shared_UserProfileView_Day_2_en","features.userprofile.shared_UserProfileView_Night_2_en",20236,], +["features.userprofile.shared_UserProfileView_Day_3_en","features.userprofile.shared_UserProfileView_Night_3_en",20236,], +["features.userprofile.shared_UserProfileView_Day_4_en","features.userprofile.shared_UserProfileView_Night_4_en",20236,], +["features.userprofile.shared_UserProfileView_Day_5_en","features.userprofile.shared_UserProfileView_Night_5_en",20236,], +["features.userprofile.shared_UserProfileView_Day_6_en","features.userprofile.shared_UserProfileView_Night_6_en",20236,], +["features.userprofile.shared_UserProfileView_Day_7_en","features.userprofile.shared_UserProfileView_Night_7_en",20236,], +["features.userprofile.shared_UserProfileView_Day_8_en","features.userprofile.shared_UserProfileView_Night_8_en",20236,], +["features.userprofile.shared_UserProfileView_Day_9_en","features.userprofile.shared_UserProfileView_Night_9_en",20236,], ["features.verifysession.impl.ui_VerificationUserProfileContent_Day_0_en","features.verifysession.impl.ui_VerificationUserProfileContent_Night_0_en",0,], ["libraries.designsystem.ruler_VerticalRuler_Day_0_en","libraries.designsystem.ruler_VerticalRuler_Night_0_en",0,], ["libraries.mediaviewer.impl.gallery.ui_VideoItemView_Day_0_en","libraries.mediaviewer.impl.gallery.ui_VideoItemView_Night_0_en",0,], @@ -1473,7 +1480,7 @@ export const screenshots = [ ["features.viewfolder.impl.file_ViewFileView_Day_0_en","features.viewfolder.impl.file_ViewFileView_Night_0_en",0,], ["features.viewfolder.impl.file_ViewFileView_Day_1_en","features.viewfolder.impl.file_ViewFileView_Night_1_en",0,], ["features.viewfolder.impl.file_ViewFileView_Day_2_en","features.viewfolder.impl.file_ViewFileView_Night_2_en",0,], -["features.viewfolder.impl.file_ViewFileView_Day_3_en","features.viewfolder.impl.file_ViewFileView_Night_3_en",20224,], +["features.viewfolder.impl.file_ViewFileView_Day_3_en","features.viewfolder.impl.file_ViewFileView_Night_3_en",20236,], ["features.viewfolder.impl.file_ViewFileView_Day_4_en","features.viewfolder.impl.file_ViewFileView_Night_4_en",0,], ["features.viewfolder.impl.file_ViewFileView_Day_5_en","features.viewfolder.impl.file_ViewFileView_Night_5_en",0,], ["features.viewfolder.impl.folder_ViewFolderView_Day_0_en","features.viewfolder.impl.folder_ViewFolderView_Night_0_en",0,], @@ -1492,6 +1499,6 @@ export const screenshots = [ ["libraries.textcomposer.components_VoiceMessageRecording_Day_0_en","libraries.textcomposer.components_VoiceMessageRecording_Night_0_en",0,], ["libraries.textcomposer.components_VoiceMessage_Day_0_en","libraries.textcomposer.components_VoiceMessage_Night_0_en",0,], ["libraries.designsystem.components.media_WaveformPlaybackView_Day_0_en","libraries.designsystem.components.media_WaveformPlaybackView_Night_0_en",0,], -["features.ftue.impl.welcome_WelcomeView_Day_0_en","features.ftue.impl.welcome_WelcomeView_Night_0_en",20224,], +["features.ftue.impl.welcome_WelcomeView_Day_0_en","features.ftue.impl.welcome_WelcomeView_Night_0_en",20236,], ["libraries.designsystem.ruler_WithRulers_Day_0_en","libraries.designsystem.ruler_WithRulers_Night_0_en",0,], ]; From db2db5eb9cc9b29f85948f95311fdf99cc032fb3 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 30 May 2025 10:48:33 +0200 Subject: [PATCH 16/25] fix(deps): update dependency io.element.android:element-call-embedded to v0.12.0 (#4743) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index ce49c51e0a..fce5b332b4 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -207,7 +207,7 @@ anvil_compiler_api = { module = "dev.zacsweers.anvil:compiler-api", version.ref anvil_compiler_utils = { module = "dev.zacsweers.anvil:compiler-utils", version.ref = "anvil" } # Element Call -element_call_embedded = "io.element.android:element-call-embedded:0.9.0" +element_call_embedded = "io.element.android:element-call-embedded:0.12.0" # Auto services google_autoservice = { module = "com.google.auto.service:auto-service", version.ref = "autoservice" } From 9d4602dae769d0fb82ba313ffa157b636ee518e1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 30 May 2025 17:30:55 +0200 Subject: [PATCH 17/25] fix(deps): update dependencyanalysis to v2.18.0 (#4796) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index fce5b332b4..3048a0e6cd 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -45,7 +45,7 @@ wysiwyg = "2.38.3" telephoto = "0.15.1" # Dependency analysis -dependencyAnalysis = "2.17.0" +dependencyAnalysis = "2.18.0" # DI dagger = "2.56.2" From 0b5e816f0db53c936653d64e495c820cce9f7106 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Mon, 2 Jun 2025 10:51:02 +0200 Subject: [PATCH 18/25] Cleanup testImplementation dependencies (#4790) --- appnav/build.gradle.kts | 4 +- .../appnav/intent/IntentResolverTest.kt | 64 ++++------- features/ftue/impl/build.gradle.kts | 1 - .../ftue/impl/DefaultFtueServiceTest.kt | 2 +- .../NotificationsOptInPresenterTest.kt | 2 +- features/login/impl/build.gradle.kts | 2 +- .../ConfirmAccountProviderPresenterTest.kt | 12 +-- .../onboarding/OnBoardingPresenterTest.kt | 4 +- features/messages/impl/build.gradle.kts | 1 - features/preferences/impl/build.gradle.kts | 5 +- .../impl/root/PreferencesRootPresenterTest.kt | 33 ++++-- features/roomlist/impl/build.gradle.kts | 2 +- .../roomlist/impl/RoomListPresenterTest.kt | 31 ++---- libraries/indicator/impl/build.gradle.kts | 1 + .../impl/DefaultIndicatorServiceTest.kt | 102 ++++++++++++++++++ libraries/indicator/test/build.gradle.kts | 19 ++++ .../indicator/test/FakeIndicatorService.kt | 37 +++++++ libraries/oidc/impl/build.gradle.kts | 1 + .../impl/DefaultOidcIntentResolverTest.kt | 69 ++++++++++++ .../customtab/DefaultOidcActionFlowTest.kt | 33 ++++++ libraries/oidc/test/build.gradle.kts | 20 ++++ .../oidc/test/FakeOidcIntentResolver.kt | 21 ++++ .../oidc/test/customtab/FakeOidcActionFlow.kt | 32 ++++++ ...tionTroubleshootCheckPermissionTestTest.kt | 2 +- .../test}/FakePermissionStateProvider.kt | 2 +- 25 files changed, 409 insertions(+), 93 deletions(-) create mode 100644 libraries/indicator/impl/src/test/kotlin/io/element/android/libraries/indicator/impl/DefaultIndicatorServiceTest.kt create mode 100644 libraries/indicator/test/build.gradle.kts create mode 100644 libraries/indicator/test/src/main/kotlin/io/element/android/libraries/indicator/test/FakeIndicatorService.kt create mode 100644 libraries/oidc/impl/src/test/kotlin/io/element/android/libraries/oidc/impl/DefaultOidcIntentResolverTest.kt create mode 100644 libraries/oidc/impl/src/test/kotlin/io/element/android/libraries/oidc/impl/customtab/DefaultOidcActionFlowTest.kt create mode 100644 libraries/oidc/test/build.gradle.kts create mode 100644 libraries/oidc/test/src/main/kotlin/io/element/android/libraries/oidc/test/FakeOidcIntentResolver.kt create mode 100644 libraries/oidc/test/src/main/kotlin/io/element/android/libraries/oidc/test/customtab/FakeOidcActionFlow.kt rename libraries/permissions/{impl/src/main/kotlin/io/element/android/libraries/permissions/impl => test/src/main/kotlin/io/element/android/libraries/permissions/test}/FakePermissionStateProvider.kt (96%) diff --git a/appnav/build.gradle.kts b/appnav/build.gradle.kts index a5fe7f0ec3..09b0a634a4 100644 --- a/appnav/build.gradle.kts +++ b/appnav/build.gradle.kts @@ -55,15 +55,13 @@ dependencies { testImplementation(libs.test.turbine) testImplementation(projects.features.login.test) testImplementation(projects.libraries.matrix.test) - testImplementation(projects.libraries.oidc.impl) + testImplementation(projects.libraries.oidc.test) testImplementation(projects.libraries.preferences.test) testImplementation(projects.libraries.push.test) testImplementation(projects.libraries.pushproviders.test) testImplementation(projects.features.networkmonitor.test) - testImplementation(projects.features.login.impl) testImplementation(projects.tests.testutils) testImplementation(projects.features.rageshake.test) - testImplementation(projects.features.rageshake.impl) testImplementation(projects.features.share.test) testImplementation(projects.services.appnavstate.test) testImplementation(projects.services.analytics.test) diff --git a/appnav/src/test/kotlin/io/element/android/appnav/intent/IntentResolverTest.kt b/appnav/src/test/kotlin/io/element/android/appnav/intent/IntentResolverTest.kt index 3fe9a9b728..e95eb66cc3 100644 --- a/appnav/src/test/kotlin/io/element/android/appnav/intent/IntentResolverTest.kt +++ b/appnav/src/test/kotlin/io/element/android/appnav/intent/IntentResolverTest.kt @@ -22,13 +22,10 @@ import io.element.android.libraries.matrix.api.permalink.PermalinkData import io.element.android.libraries.matrix.test.A_ROOM_ID import io.element.android.libraries.matrix.test.A_SESSION_ID import io.element.android.libraries.matrix.test.A_THREAD_ID -import io.element.android.libraries.matrix.test.auth.FakeOidcRedirectUrlProvider import io.element.android.libraries.matrix.test.permalink.FakePermalinkParser import io.element.android.libraries.oidc.api.OidcAction -import io.element.android.libraries.oidc.impl.DefaultOidcIntentResolver -import io.element.android.libraries.oidc.impl.DefaultOidcUrlParser +import io.element.android.libraries.oidc.test.FakeOidcIntentResolver import io.element.android.tests.testutils.lambda.lambdaError -import org.junit.Assert.assertThrows import org.junit.Test import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner @@ -118,8 +115,10 @@ class IntentResolverTest { } @Test - fun `test resolve oidc go back`() { - val sut = createIntentResolver() + fun `test resolve oidc`() { + val sut = createIntentResolver( + oidcIntentResolverResult = { OidcAction.GoBack }, + ) val intent = Intent(RuntimeEnvironment.getApplication(), Activity::class.java).apply { action = Intent.ACTION_VIEW data = "io.element.android:/?error=access_denied&state=IFF1UETGye2ZA8pO".toUri() @@ -132,35 +131,6 @@ class IntentResolverTest { ) } - @Test - fun `test resolve oidc success`() { - val sut = createIntentResolver() - val intent = Intent(RuntimeEnvironment.getApplication(), Activity::class.java).apply { - action = Intent.ACTION_VIEW - data = "io.element.android:/?state=IFF1UETGye2ZA8pO&code=y6X1GZeqA3xxOWcTeShgv8nkgFJXyzWB".toUri() - } - val result = sut.resolve(intent) - assertThat(result).isEqualTo( - ResolvedIntent.Oidc( - oidcAction = OidcAction.Success( - url = "io.element.android:/?state=IFF1UETGye2ZA8pO&code=y6X1GZeqA3xxOWcTeShgv8nkgFJXyzWB" - ) - ) - ) - } - - @Test - fun `test resolve oidc invalid`() { - val sut = createIntentResolver() - val intent = Intent(RuntimeEnvironment.getApplication(), Activity::class.java).apply { - action = Intent.ACTION_VIEW - data = "io.element.android:/invalid".toUri() - } - assertThrows(IllegalStateException::class.java) { - sut.resolve(intent) - } - } - @Test fun `test resolve external permalink`() { val permalinkData = PermalinkData.UserLink( @@ -168,7 +138,8 @@ class IntentResolverTest { ) val sut = createIntentResolver( loginIntentResolverResult = { null }, - permalinkParserResult = { permalinkData } + permalinkParserResult = { permalinkData }, + oidcIntentResolverResult = { null }, ) val intent = Intent(RuntimeEnvironment.getApplication(), Activity::class.java).apply { action = Intent.ACTION_VIEW @@ -187,6 +158,7 @@ class IntentResolverTest { val sut = createIntentResolver( permalinkParserResult = { PermalinkData.FallbackLink(Uri.parse("https://matrix.org")) }, loginIntentResolverResult = { null }, + oidcIntentResolverResult = { null }, ) val intent = Intent(RuntimeEnvironment.getApplication(), Activity::class.java).apply { action = Intent.ACTION_VIEW @@ -202,7 +174,8 @@ class IntentResolverTest { userId = UserId("@alice:matrix.org") ) val sut = createIntentResolver( - permalinkParserResult = { permalinkData } + permalinkParserResult = { permalinkData }, + oidcIntentResolverResult = { null }, ) val intent = Intent(RuntimeEnvironment.getApplication(), Activity::class.java).apply { action = Intent.ACTION_BATTERY_LOW @@ -214,7 +187,9 @@ class IntentResolverTest { @Test fun `test incoming share simple`() { - val sut = createIntentResolver() + val sut = createIntentResolver( + oidcIntentResolverResult = { null }, + ) val intent = Intent(RuntimeEnvironment.getApplication(), Activity::class.java).apply { action = Intent.ACTION_SEND } @@ -224,7 +199,9 @@ class IntentResolverTest { @Test fun `test incoming share multiple`() { - val sut = createIntentResolver() + val sut = createIntentResolver( + oidcIntentResolverResult = { null }, + ) val intent = Intent(RuntimeEnvironment.getApplication(), Activity::class.java).apply { action = Intent.ACTION_SEND_MULTIPLE } @@ -237,6 +214,7 @@ class IntentResolverTest { val sut = createIntentResolver( permalinkParserResult = { PermalinkData.FallbackLink(Uri.parse("https://matrix.org")) }, loginIntentResolverResult = { null }, + oidcIntentResolverResult = { null }, ) val intent = Intent(RuntimeEnvironment.getApplication(), Activity::class.java).apply { action = Intent.ACTION_VIEW @@ -251,6 +229,7 @@ class IntentResolverTest { val aLoginParams = LoginParams("accountProvider", null) val sut = createIntentResolver( loginIntentResolverResult = { aLoginParams }, + oidcIntentResolverResult = { null }, ) val intent = Intent(RuntimeEnvironment.getApplication(), Activity::class.java).apply { action = Intent.ACTION_VIEW @@ -263,16 +242,15 @@ class IntentResolverTest { private fun createIntentResolver( permalinkParserResult: (String) -> PermalinkData = { lambdaError() }, loginIntentResolverResult: (String) -> LoginParams? = { lambdaError() }, + oidcIntentResolverResult: (Intent) -> OidcAction? = { lambdaError() }, ): IntentResolver { return IntentResolver( deeplinkParser = DeeplinkParser(), loginIntentResolver = FakeLoginIntentResolver( parseResult = loginIntentResolverResult, ), - oidcIntentResolver = DefaultOidcIntentResolver( - oidcUrlParser = DefaultOidcUrlParser( - oidcRedirectUrlProvider = FakeOidcRedirectUrlProvider(), - ) + oidcIntentResolver = FakeOidcIntentResolver( + resolveResult = oidcIntentResolverResult, ), permalinkParser = FakePermalinkParser( result = permalinkParserResult diff --git a/features/ftue/impl/build.gradle.kts b/features/ftue/impl/build.gradle.kts index 4b7e982474..e95a4697ae 100644 --- a/features/ftue/impl/build.gradle.kts +++ b/features/ftue/impl/build.gradle.kts @@ -57,7 +57,6 @@ dependencies { testImplementation(projects.libraries.matrix.test) testImplementation(projects.services.analytics.test) testImplementation(projects.services.analytics.noop) - testImplementation(projects.libraries.permissions.impl) testImplementation(projects.libraries.permissions.test) testImplementation(projects.libraries.preferences.test) testImplementation(projects.features.lockscreen.test) diff --git a/features/ftue/impl/src/test/kotlin/io/element/android/features/ftue/impl/DefaultFtueServiceTest.kt b/features/ftue/impl/src/test/kotlin/io/element/android/features/ftue/impl/DefaultFtueServiceTest.kt index 9ee2f51994..4a05433e5e 100644 --- a/features/ftue/impl/src/test/kotlin/io/element/android/features/ftue/impl/DefaultFtueServiceTest.kt +++ b/features/ftue/impl/src/test/kotlin/io/element/android/features/ftue/impl/DefaultFtueServiceTest.kt @@ -19,7 +19,7 @@ import io.element.android.libraries.matrix.api.verification.SessionVerificationS import io.element.android.libraries.matrix.api.verification.SessionVerifiedStatus import io.element.android.libraries.matrix.test.verification.FakeSessionVerificationService import io.element.android.libraries.permissions.api.PermissionStateProvider -import io.element.android.libraries.permissions.impl.FakePermissionStateProvider +import io.element.android.libraries.permissions.test.FakePermissionStateProvider import io.element.android.libraries.preferences.api.store.SessionPreferencesStore import io.element.android.libraries.preferences.test.InMemorySessionPreferencesStore import io.element.android.services.analytics.api.AnalyticsService diff --git a/features/ftue/impl/src/test/kotlin/io/element/android/features/ftue/impl/notifications/NotificationsOptInPresenterTest.kt b/features/ftue/impl/src/test/kotlin/io/element/android/features/ftue/impl/notifications/NotificationsOptInPresenterTest.kt index 55bc1b9243..fbdc9d1dd1 100644 --- a/features/ftue/impl/src/test/kotlin/io/element/android/features/ftue/impl/notifications/NotificationsOptInPresenterTest.kt +++ b/features/ftue/impl/src/test/kotlin/io/element/android/features/ftue/impl/notifications/NotificationsOptInPresenterTest.kt @@ -14,7 +14,7 @@ import app.cash.turbine.test import com.google.common.truth.Truth.assertThat import io.element.android.libraries.permissions.api.PermissionStateProvider import io.element.android.libraries.permissions.api.PermissionsPresenter -import io.element.android.libraries.permissions.impl.FakePermissionStateProvider +import io.element.android.libraries.permissions.test.FakePermissionStateProvider import io.element.android.libraries.permissions.test.FakePermissionsPresenter import io.element.android.libraries.permissions.test.FakePermissionsPresenterFactory import io.element.android.services.toolbox.test.sdk.FakeBuildVersionSdkIntProvider diff --git a/features/login/impl/build.gradle.kts b/features/login/impl/build.gradle.kts index 9fb87aa7f1..1d92cf00c9 100644 --- a/features/login/impl/build.gradle.kts +++ b/features/login/impl/build.gradle.kts @@ -62,7 +62,7 @@ dependencies { testImplementation(projects.features.enterprise.test) testImplementation(projects.libraries.featureflag.test) testImplementation(projects.libraries.matrix.test) - testImplementation(projects.libraries.oidc.impl) + testImplementation(projects.libraries.oidc.test) testImplementation(projects.libraries.permissions.test) testImplementation(projects.tests.testutils) testReleaseImplementation(libs.androidx.compose.ui.test.manifest) diff --git a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/confirmaccountprovider/ConfirmAccountProviderPresenterTest.kt b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/confirmaccountprovider/ConfirmAccountProviderPresenterTest.kt index e8be30c127..a2384baaeb 100644 --- a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/confirmaccountprovider/ConfirmAccountProviderPresenterTest.kt +++ b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/confirmaccountprovider/ConfirmAccountProviderPresenterTest.kt @@ -28,7 +28,7 @@ import io.element.android.libraries.matrix.test.A_THROWABLE import io.element.android.libraries.matrix.test.auth.FakeMatrixAuthenticationService import io.element.android.libraries.oidc.api.OidcAction import io.element.android.libraries.oidc.api.OidcActionFlow -import io.element.android.libraries.oidc.impl.customtab.DefaultOidcActionFlow +import io.element.android.libraries.oidc.test.customtab.FakeOidcActionFlow import io.element.android.tests.testutils.WarmUpRule import io.element.android.tests.testutils.waitForPredicate import kotlinx.coroutines.test.runTest @@ -100,7 +100,7 @@ class ConfirmAccountProviderPresenterTest { @Test fun `present - oidc - cancel with failure`() = runTest { val authenticationService = FakeMatrixAuthenticationService() - val defaultOidcActionFlow = DefaultOidcActionFlow() + val defaultOidcActionFlow = FakeOidcActionFlow() val presenter = createConfirmAccountProviderPresenter( matrixAuthenticationService = authenticationService, defaultOidcActionFlow = defaultOidcActionFlow, @@ -128,7 +128,7 @@ class ConfirmAccountProviderPresenterTest { @Test fun `present - oidc - cancel with success`() = runTest { val authenticationService = FakeMatrixAuthenticationService() - val defaultOidcActionFlow = DefaultOidcActionFlow() + val defaultOidcActionFlow = FakeOidcActionFlow() val presenter = createConfirmAccountProviderPresenter( matrixAuthenticationService = authenticationService, defaultOidcActionFlow = defaultOidcActionFlow, @@ -155,7 +155,7 @@ class ConfirmAccountProviderPresenterTest { @Test fun `present - oidc - success with failure`() = runTest { val authenticationService = FakeMatrixAuthenticationService() - val defaultOidcActionFlow = DefaultOidcActionFlow() + val defaultOidcActionFlow = FakeOidcActionFlow() val presenter = createConfirmAccountProviderPresenter( matrixAuthenticationService = authenticationService, defaultOidcActionFlow = defaultOidcActionFlow, @@ -185,7 +185,7 @@ class ConfirmAccountProviderPresenterTest { @Test fun `present - oidc - success with success`() = runTest { val authenticationService = FakeMatrixAuthenticationService() - val defaultOidcActionFlow = DefaultOidcActionFlow() + val defaultOidcActionFlow = FakeOidcActionFlow() val defaultLoginUserStory = DefaultLoginUserStory().apply { setLoginFlowIsDone(false) } @@ -356,7 +356,7 @@ class ConfirmAccountProviderPresenterTest { params: ConfirmAccountProviderPresenter.Params = ConfirmAccountProviderPresenter.Params(isAccountCreation = false), accountProviderDataSource: AccountProviderDataSource = AccountProviderDataSource(FakeEnterpriseService()), matrixAuthenticationService: MatrixAuthenticationService = FakeMatrixAuthenticationService(), - defaultOidcActionFlow: OidcActionFlow = DefaultOidcActionFlow(), + defaultOidcActionFlow: OidcActionFlow = FakeOidcActionFlow(), defaultLoginUserStory: DefaultLoginUserStory = DefaultLoginUserStory(), webClientUrlForAuthenticationRetriever: WebClientUrlForAuthenticationRetriever = FakeWebClientUrlForAuthenticationRetriever(), ) = ConfirmAccountProviderPresenter( diff --git a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingPresenterTest.kt b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingPresenterTest.kt index 45be02b128..d57c67df7e 100644 --- a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingPresenterTest.kt +++ b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingPresenterTest.kt @@ -30,7 +30,7 @@ import io.element.android.libraries.matrix.test.A_THROWABLE import io.element.android.libraries.matrix.test.auth.FakeMatrixAuthenticationService import io.element.android.libraries.matrix.test.core.aBuildMeta import io.element.android.libraries.oidc.api.OidcActionFlow -import io.element.android.libraries.oidc.impl.customtab.DefaultOidcActionFlow +import io.element.android.libraries.oidc.test.customtab.FakeOidcActionFlow import io.element.android.tests.testutils.WarmUpRule import io.element.android.tests.testutils.test import kotlinx.coroutines.test.runTest @@ -226,7 +226,7 @@ private fun createPresenter( ) fun createLoginHelper( - oidcActionFlow: OidcActionFlow = DefaultOidcActionFlow(), + oidcActionFlow: OidcActionFlow = FakeOidcActionFlow(), authenticationService: MatrixAuthenticationService = FakeMatrixAuthenticationService(), defaultLoginUserStory: DefaultLoginUserStory = DefaultLoginUserStory(), webClientUrlForAuthenticationRetriever: WebClientUrlForAuthenticationRetriever = FakeWebClientUrlForAuthenticationRetriever(), diff --git a/features/messages/impl/build.gradle.kts b/features/messages/impl/build.gradle.kts index cf8f73f47a..aed90d3e9f 100644 --- a/features/messages/impl/build.gradle.kts +++ b/features/messages/impl/build.gradle.kts @@ -93,7 +93,6 @@ dependencies { testImplementation(libs.test.mockk) testImplementation(libs.test.robolectric) testImplementation(projects.features.poll.test) - testImplementation(projects.features.poll.impl) testImplementation(libs.androidx.compose.ui.test.junit) testImplementation(projects.libraries.eventformatter.test) testReleaseImplementation(libs.androidx.compose.ui.test.manifest) diff --git a/features/preferences/impl/build.gradle.kts b/features/preferences/impl/build.gradle.kts index 397d0c7acb..6fb6e4a55b 100644 --- a/features/preferences/impl/build.gradle.kts +++ b/features/preferences/impl/build.gradle.kts @@ -107,14 +107,11 @@ dependencies { testImplementation(projects.features.ftue.test) testImplementation(projects.features.invite.test) testImplementation(projects.features.rageshake.test) - testImplementation(projects.features.rageshake.impl) testImplementation(projects.features.logout.test) - testImplementation(projects.libraries.indicator.impl) + testImplementation(projects.libraries.indicator.test) testImplementation(projects.libraries.pushproviders.test) - testImplementation(projects.features.logout.impl) testImplementation(projects.services.analytics.test) testImplementation(projects.services.toolbox.test) - testImplementation(projects.features.analytics.impl) testImplementation(projects.tests.testutils) testImplementation(libs.androidx.compose.ui.test.junit) testReleaseImplementation(libs.androidx.compose.ui.test.manifest) diff --git a/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootPresenterTest.kt b/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootPresenterTest.kt index 8075a43485..1f1b527a45 100644 --- a/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootPresenterTest.kt +++ b/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootPresenterTest.kt @@ -17,14 +17,14 @@ import io.element.android.features.rageshake.api.RageshakeFeatureAvailability import io.element.android.libraries.core.meta.BuildType import io.element.android.libraries.designsystem.utils.snackbar.SnackbarDispatcher import io.element.android.libraries.featureflag.test.FakeFeatureFlagService -import io.element.android.libraries.indicator.impl.DefaultIndicatorService +import io.element.android.libraries.indicator.api.IndicatorService +import io.element.android.libraries.indicator.test.FakeIndicatorService import io.element.android.libraries.matrix.api.oidc.AccountManagementAction import io.element.android.libraries.matrix.api.user.MatrixUser import io.element.android.libraries.matrix.test.AN_AVATAR_URL import io.element.android.libraries.matrix.test.A_USER_NAME import io.element.android.libraries.matrix.test.FakeMatrixClient import io.element.android.libraries.matrix.test.core.aBuildMeta -import io.element.android.libraries.matrix.test.encryption.FakeEncryptionService import io.element.android.libraries.matrix.test.verification.FakeSessionVerificationService import io.element.android.services.analytics.test.FakeAnalyticsService import io.element.android.tests.testutils.WarmUpRule @@ -71,7 +71,7 @@ class PreferencesRootPresenterTest { ) assertThat(initialState.version).isEqualTo("A Version") assertThat(loadedState.showSecureBackup).isFalse() - assertThat(loadedState.showSecureBackupBadge).isTrue() + assertThat(loadedState.showSecureBackupBadge).isFalse() assertThat(loadedState.accountManagementUrl).isNull() assertThat(loadedState.devicesManagementUrl).isNull() assertThat(loadedState.showAnalyticsSettings).isFalse() @@ -110,6 +110,27 @@ class PreferencesRootPresenterTest { } } + @Test + fun `present - secure backup badge`() = runTest { + val matrixClient = FakeMatrixClient( + canDeactivateAccountResult = { true }, + accountManagementUrlResult = { Result.success("") }, + ) + val indicatorService = FakeIndicatorService() + createPresenter( + matrixClient = matrixClient, + rageshakeFeatureAvailability = { false }, + indicatorService = indicatorService, + ).test { + skipItems(1) + val initialState = awaitItem() + assertThat(initialState.showSecureBackupBadge).isFalse() + indicatorService.setShowSettingChatBackupIndicator(true) + val finalState = awaitItem() + assertThat(finalState.showSecureBackupBadge).isTrue() + } + } + @Test fun `present - can deactivate account is false if the Matrix client say so`() = runTest { createPresenter( @@ -165,6 +186,7 @@ class PreferencesRootPresenterTest { sessionVerificationService: FakeSessionVerificationService = FakeSessionVerificationService(), showDeveloperSettingsProvider: ShowDeveloperSettingsProvider = ShowDeveloperSettingsProvider(aBuildMeta(BuildType.DEBUG)), rageshakeFeatureAvailability: RageshakeFeatureAvailability = RageshakeFeatureAvailability { true }, + indicatorService: IndicatorService = FakeIndicatorService(), ) = PreferencesRootPresenter( matrixClient = matrixClient, sessionVerificationService = sessionVerificationService, @@ -172,10 +194,7 @@ class PreferencesRootPresenterTest { versionFormatter = FakeVersionFormatter(), snackbarDispatcher = SnackbarDispatcher(), featureFlagService = FakeFeatureFlagService(), - indicatorService = DefaultIndicatorService( - sessionVerificationService = sessionVerificationService, - encryptionService = FakeEncryptionService(), - ), + indicatorService = indicatorService, directLogoutPresenter = { aDirectLogoutState() }, showDeveloperSettingsProvider = showDeveloperSettingsProvider, rageshakeFeatureAvailability = rageshakeFeatureAvailability, diff --git a/features/roomlist/impl/build.gradle.kts b/features/roomlist/impl/build.gradle.kts index 847787d774..e0d795efd6 100644 --- a/features/roomlist/impl/build.gradle.kts +++ b/features/roomlist/impl/build.gradle.kts @@ -69,7 +69,7 @@ dependencies { testImplementation(projects.libraries.featureflag.test) testImplementation(projects.libraries.dateformatter.test) testImplementation(projects.libraries.eventformatter.test) - testImplementation(projects.libraries.indicator.impl) + testImplementation(projects.libraries.indicator.test) testImplementation(projects.libraries.permissions.noop) testImplementation(projects.libraries.permissions.test) testImplementation(projects.libraries.preferences.test) diff --git a/features/roomlist/impl/src/test/kotlin/io/element/android/features/roomlist/impl/RoomListPresenterTest.kt b/features/roomlist/impl/src/test/kotlin/io/element/android/features/roomlist/impl/RoomListPresenterTest.kt index c5d09f7656..5726eb1eb0 100644 --- a/features/roomlist/impl/src/test/kotlin/io/element/android/features/roomlist/impl/RoomListPresenterTest.kt +++ b/features/roomlist/impl/src/test/kotlin/io/element/android/features/roomlist/impl/RoomListPresenterTest.kt @@ -40,11 +40,11 @@ import io.element.android.libraries.eventformatter.test.FakeRoomLastMessageForma import io.element.android.libraries.featureflag.api.FeatureFlagService import io.element.android.libraries.featureflag.test.FakeFeatureFlagService import io.element.android.libraries.fullscreenintent.api.aFullScreenIntentPermissionsState -import io.element.android.libraries.indicator.impl.DefaultIndicatorService +import io.element.android.libraries.indicator.api.IndicatorService +import io.element.android.libraries.indicator.test.FakeIndicatorService import io.element.android.libraries.matrix.api.MatrixClient import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.SessionId -import io.element.android.libraries.matrix.api.encryption.BackupState import io.element.android.libraries.matrix.api.encryption.RecoveryState import io.element.android.libraries.matrix.api.room.CurrentUserMembership import io.element.android.libraries.matrix.api.room.RoomNotificationMode @@ -121,31 +121,24 @@ class RoomListPresenterTest { assertThat(withUserState.matrixUser.userId).isEqualTo(A_USER_ID) assertThat(withUserState.matrixUser.displayName).isEqualTo(A_USER_NAME) assertThat(withUserState.matrixUser.avatarUrl).isEqualTo(AN_AVATAR_URL) - assertThat(withUserState.showAvatarIndicator).isTrue() + assertThat(withUserState.showAvatarIndicator).isFalse() } } @Test fun `present - show avatar indicator`() = runTest { - val encryptionService = FakeEncryptionService() - val sessionVerificationService = FakeSessionVerificationService() - val matrixClient = FakeMatrixClient( - encryptionService = encryptionService, - sessionVerificationService = sessionVerificationService, - ) + val indicatorService = FakeIndicatorService() val presenter = createRoomListPresenter( - client = matrixClient, + indicatorService = indicatorService, ) moleculeFlow(RecompositionMode.Immediate) { presenter.present() }.test { val initialState = awaitItem() - assertThat(initialState.showAvatarIndicator).isTrue() - assertThat(initialState.canReportBug).isTrue() - sessionVerificationService.emitNeedsSessionVerification(false) - encryptionService.emitBackupState(BackupState.ENABLED) + assertThat(initialState.showAvatarIndicator).isFalse() + indicatorService.setShowRoomListTopBarIndicator(true) val finalState = awaitItem() - assertThat(finalState.showAvatarIndicator).isFalse() + assertThat(finalState.showAvatarIndicator).isTrue() } } @@ -686,7 +679,8 @@ class RoomListPresenterTest { notificationCleaner: NotificationCleaner = FakeNotificationCleaner(), appPreferencesStore: AppPreferencesStore = InMemoryAppPreferencesStore(), rageshakeFeatureAvailability: RageshakeFeatureAvailability = RageshakeFeatureAvailability { true }, - seenInvitesStore: SeenInvitesStore = InMemorySeenInvitesStore() + seenInvitesStore: SeenInvitesStore = InMemorySeenInvitesStore(), + indicatorService: IndicatorService = FakeIndicatorService(), ) = RoomListPresenter( client = client, syncService = syncService, @@ -704,10 +698,7 @@ class RoomListPresenterTest { dateTimeObserver = FakeDateTimeObserver(), ), featureFlagService = featureFlagService, - indicatorService = DefaultIndicatorService( - sessionVerificationService = client.sessionVerificationService(), - encryptionService = client.encryptionService(), - ), + indicatorService = indicatorService, searchPresenter = searchPresenter, sessionPreferencesStore = sessionPreferencesStore, filtersPresenter = filtersPresenter, diff --git a/libraries/indicator/impl/build.gradle.kts b/libraries/indicator/impl/build.gradle.kts index 4ce892325c..d5046eb00c 100644 --- a/libraries/indicator/impl/build.gradle.kts +++ b/libraries/indicator/impl/build.gradle.kts @@ -31,6 +31,7 @@ dependencies { testImplementation(projects.libraries.matrix.test) testImplementation(libs.test.junit) testImplementation(libs.coroutines.test) + testImplementation(libs.molecule.runtime) testImplementation(libs.test.turbine) testImplementation(libs.test.truth) } diff --git a/libraries/indicator/impl/src/test/kotlin/io/element/android/libraries/indicator/impl/DefaultIndicatorServiceTest.kt b/libraries/indicator/impl/src/test/kotlin/io/element/android/libraries/indicator/impl/DefaultIndicatorServiceTest.kt new file mode 100644 index 0000000000..9e325a6573 --- /dev/null +++ b/libraries/indicator/impl/src/test/kotlin/io/element/android/libraries/indicator/impl/DefaultIndicatorServiceTest.kt @@ -0,0 +1,102 @@ +/* + * Copyright 2025 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +package io.element.android.libraries.indicator.impl + +import app.cash.molecule.RecompositionMode +import app.cash.molecule.moleculeFlow +import app.cash.turbine.test +import com.google.common.truth.Truth.assertThat +import io.element.android.libraries.matrix.api.encryption.BackupState +import io.element.android.libraries.matrix.api.encryption.RecoveryState +import io.element.android.libraries.matrix.test.encryption.FakeEncryptionService +import io.element.android.libraries.matrix.test.verification.FakeSessionVerificationService +import kotlinx.coroutines.test.runTest +import org.junit.Test + +class DefaultIndicatorServiceTest { + @Test + fun `test - showRoomListTopBarIndicator`() = runTest { + val encryptionService = FakeEncryptionService() + val sessionVerificationService = FakeSessionVerificationService() + val sut = DefaultIndicatorService( + sessionVerificationService = sessionVerificationService, + encryptionService = encryptionService, + ) + moleculeFlow(RecompositionMode.Immediate) { + sut.showRoomListTopBarIndicator().value + }.test { + assertThat(awaitItem()).isTrue() + sessionVerificationService.emitNeedsSessionVerification(false) + encryptionService.emitBackupState(BackupState.ENABLED) + encryptionService.emitRecoveryState(RecoveryState.ENABLED) + assertThat(awaitItem()).isFalse() + sessionVerificationService.emitNeedsSessionVerification(true) + assertThat(awaitItem()).isTrue() + } + } + + @Test + fun `test - showSettingChatBackupIndicator is true when BackupState is UNKNOWN`() = runTest { + val encryptionService = FakeEncryptionService() + val sessionVerificationService = FakeSessionVerificationService() + val sut = DefaultIndicatorService( + sessionVerificationService = sessionVerificationService, + encryptionService = encryptionService, + ) + moleculeFlow(RecompositionMode.Immediate) { + sut.showSettingChatBackupIndicator().value + }.test { + assertThat(awaitItem()).isTrue() + encryptionService.emitBackupState(BackupState.ENABLED) + encryptionService.emitRecoveryState(RecoveryState.ENABLED) + assertThat(awaitItem()).isFalse() + encryptionService.emitBackupState(BackupState.UNKNOWN) + assertThat(awaitItem()).isTrue() + } + } + + @Test + fun `test - showSettingChatBackupIndicator is true when recoveryState is DISABLED`() = runTest { + val encryptionService = FakeEncryptionService() + val sessionVerificationService = FakeSessionVerificationService() + val sut = DefaultIndicatorService( + sessionVerificationService = sessionVerificationService, + encryptionService = encryptionService, + ) + moleculeFlow(RecompositionMode.Immediate) { + sut.showSettingChatBackupIndicator().value + }.test { + assertThat(awaitItem()).isTrue() + encryptionService.emitBackupState(BackupState.ENABLED) + encryptionService.emitRecoveryState(RecoveryState.ENABLED) + assertThat(awaitItem()).isFalse() + encryptionService.emitRecoveryState(RecoveryState.DISABLED) + assertThat(awaitItem()).isTrue() + } + } + + @Test + fun `test - showSettingChatBackupIndicator is true when recoveryState is INCOMPLETE`() = runTest { + val encryptionService = FakeEncryptionService() + val sessionVerificationService = FakeSessionVerificationService() + val sut = DefaultIndicatorService( + sessionVerificationService = sessionVerificationService, + encryptionService = encryptionService, + ) + moleculeFlow(RecompositionMode.Immediate) { + sut.showSettingChatBackupIndicator().value + }.test { + assertThat(awaitItem()).isTrue() + encryptionService.emitBackupState(BackupState.ENABLED) + encryptionService.emitRecoveryState(RecoveryState.ENABLED) + assertThat(awaitItem()).isFalse() + encryptionService.emitRecoveryState(RecoveryState.INCOMPLETE) + assertThat(awaitItem()).isTrue() + } + } +} diff --git a/libraries/indicator/test/build.gradle.kts b/libraries/indicator/test/build.gradle.kts new file mode 100644 index 0000000000..5d61dde8be --- /dev/null +++ b/libraries/indicator/test/build.gradle.kts @@ -0,0 +1,19 @@ +/* + * Copyright 2025 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +plugins { + id("io.element.android-compose-library") +} + +android { + namespace = "io.element.android.libraries.indicator.test" +} + +dependencies { + implementation(projects.libraries.matrix.api) + api(projects.libraries.indicator.api) +} diff --git a/libraries/indicator/test/src/main/kotlin/io/element/android/libraries/indicator/test/FakeIndicatorService.kt b/libraries/indicator/test/src/main/kotlin/io/element/android/libraries/indicator/test/FakeIndicatorService.kt new file mode 100644 index 0000000000..26f8547b66 --- /dev/null +++ b/libraries/indicator/test/src/main/kotlin/io/element/android/libraries/indicator/test/FakeIndicatorService.kt @@ -0,0 +1,37 @@ +/* + * Copyright 2025 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +package io.element.android.libraries.indicator.test + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.MutableState +import androidx.compose.runtime.State +import androidx.compose.runtime.mutableStateOf +import io.element.android.libraries.indicator.api.IndicatorService + +class FakeIndicatorService : IndicatorService { + private val showRoomListTopBarIndicatorResult: MutableState = mutableStateOf(false) + private val showSettingChatBackupIndicatorResult: MutableState = mutableStateOf(false) + + fun setShowRoomListTopBarIndicator(value: Boolean) { + showRoomListTopBarIndicatorResult.value = value + } + + fun setShowSettingChatBackupIndicator(value: Boolean) { + showSettingChatBackupIndicatorResult.value = value + } + + @Composable + override fun showRoomListTopBarIndicator(): State { + return showRoomListTopBarIndicatorResult + } + + @Composable + override fun showSettingChatBackupIndicator(): State { + return showSettingChatBackupIndicatorResult + } +} diff --git a/libraries/oidc/impl/build.gradle.kts b/libraries/oidc/impl/build.gradle.kts index 2d4699c246..c0f8e9d1d6 100644 --- a/libraries/oidc/impl/build.gradle.kts +++ b/libraries/oidc/impl/build.gradle.kts @@ -40,6 +40,7 @@ dependencies { api(projects.libraries.oidc.api) testImplementation(libs.test.junit) + testImplementation(libs.test.robolectric) testImplementation(libs.androidx.test.ext.junit) testImplementation(libs.coroutines.test) testImplementation(libs.molecule.runtime) diff --git a/libraries/oidc/impl/src/test/kotlin/io/element/android/libraries/oidc/impl/DefaultOidcIntentResolverTest.kt b/libraries/oidc/impl/src/test/kotlin/io/element/android/libraries/oidc/impl/DefaultOidcIntentResolverTest.kt new file mode 100644 index 0000000000..e48e0c2e1e --- /dev/null +++ b/libraries/oidc/impl/src/test/kotlin/io/element/android/libraries/oidc/impl/DefaultOidcIntentResolverTest.kt @@ -0,0 +1,69 @@ +/* + * Copyright 2025 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +package io.element.android.libraries.oidc.impl + +import android.app.Activity +import android.content.Intent +import androidx.core.net.toUri +import com.google.common.truth.Truth.assertThat +import io.element.android.libraries.matrix.test.auth.FakeOidcRedirectUrlProvider +import io.element.android.libraries.oidc.api.OidcAction +import org.junit.Assert.assertThrows +import org.junit.Test +import org.junit.runner.RunWith +import org.robolectric.RobolectricTestRunner +import org.robolectric.RuntimeEnvironment + +@RunWith(RobolectricTestRunner::class) +class DefaultOidcIntentResolverTest { + @Test + fun `test resolve oidc go back`() { + val sut = createDefaultOidcIntentResolver() + val intent = Intent(RuntimeEnvironment.getApplication(), Activity::class.java).apply { + action = Intent.ACTION_VIEW + data = "io.element.android:/?error=access_denied&state=IFF1UETGye2ZA8pO".toUri() + } + val result = sut.resolve(intent) + assertThat(result).isEqualTo(OidcAction.GoBack) + } + + @Test + fun `test resolve oidc success`() { + val sut = createDefaultOidcIntentResolver() + val intent = Intent(RuntimeEnvironment.getApplication(), Activity::class.java).apply { + action = Intent.ACTION_VIEW + data = "io.element.android:/?state=IFF1UETGye2ZA8pO&code=y6X1GZeqA3xxOWcTeShgv8nkgFJXyzWB".toUri() + } + val result = sut.resolve(intent) + assertThat(result).isEqualTo( + OidcAction.Success( + url = "io.element.android:/?state=IFF1UETGye2ZA8pO&code=y6X1GZeqA3xxOWcTeShgv8nkgFJXyzWB" + ) + ) + } + + @Test + fun `test resolve oidc invalid`() { + val sut = createDefaultOidcIntentResolver() + val intent = Intent(RuntimeEnvironment.getApplication(), Activity::class.java).apply { + action = Intent.ACTION_VIEW + data = "io.element.android:/invalid".toUri() + } + assertThrows(IllegalStateException::class.java) { + sut.resolve(intent) + } + } + + private fun createDefaultOidcIntentResolver(): DefaultOidcIntentResolver { + return DefaultOidcIntentResolver( + oidcUrlParser = DefaultOidcUrlParser( + oidcRedirectUrlProvider = FakeOidcRedirectUrlProvider(), + ), + ) + } +} diff --git a/libraries/oidc/impl/src/test/kotlin/io/element/android/libraries/oidc/impl/customtab/DefaultOidcActionFlowTest.kt b/libraries/oidc/impl/src/test/kotlin/io/element/android/libraries/oidc/impl/customtab/DefaultOidcActionFlowTest.kt new file mode 100644 index 0000000000..104ff6c347 --- /dev/null +++ b/libraries/oidc/impl/src/test/kotlin/io/element/android/libraries/oidc/impl/customtab/DefaultOidcActionFlowTest.kt @@ -0,0 +1,33 @@ +/* + * Copyright 2025 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +package io.element.android.libraries.oidc.impl.customtab + +import com.google.common.truth.Truth.assertThat +import io.element.android.libraries.oidc.api.OidcAction +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch +import kotlinx.coroutines.test.runTest +import org.junit.Test + +class DefaultOidcActionFlowTest { + @Test + fun `collect gets all the posted events`() = runTest { + val data = mutableListOf() + val sut = DefaultOidcActionFlow() + backgroundScope.launch { + sut.collect { action -> + data.add(action) + } + } + sut.post(OidcAction.GoBack) + delay(1) + sut.reset() + delay(1) + assertThat(data).containsExactly(OidcAction.GoBack, null) + } +} diff --git a/libraries/oidc/test/build.gradle.kts b/libraries/oidc/test/build.gradle.kts new file mode 100644 index 0000000000..ac9d4cfda8 --- /dev/null +++ b/libraries/oidc/test/build.gradle.kts @@ -0,0 +1,20 @@ +/* + * Copyright 2025 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +plugins { + id("io.element.android-library") +} + +android { + namespace = "io.element.android.libraries.oidc.test" +} + +dependencies { + implementation(libs.coroutines.core) + api(projects.libraries.oidc.api) + implementation(projects.tests.testutils) +} diff --git a/libraries/oidc/test/src/main/kotlin/io/element/android/libraries/oidc/test/FakeOidcIntentResolver.kt b/libraries/oidc/test/src/main/kotlin/io/element/android/libraries/oidc/test/FakeOidcIntentResolver.kt new file mode 100644 index 0000000000..1fa5947c3f --- /dev/null +++ b/libraries/oidc/test/src/main/kotlin/io/element/android/libraries/oidc/test/FakeOidcIntentResolver.kt @@ -0,0 +1,21 @@ +/* + * Copyright 2025 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +package io.element.android.libraries.oidc.test + +import android.content.Intent +import io.element.android.libraries.oidc.api.OidcAction +import io.element.android.libraries.oidc.api.OidcIntentResolver +import io.element.android.tests.testutils.lambda.lambdaError + +class FakeOidcIntentResolver( + private val resolveResult: (Intent) -> OidcAction? = { lambdaError() } +) : OidcIntentResolver { + override fun resolve(intent: Intent): OidcAction? { + return resolveResult(intent) + } +} diff --git a/libraries/oidc/test/src/main/kotlin/io/element/android/libraries/oidc/test/customtab/FakeOidcActionFlow.kt b/libraries/oidc/test/src/main/kotlin/io/element/android/libraries/oidc/test/customtab/FakeOidcActionFlow.kt new file mode 100644 index 0000000000..d1673d8bc8 --- /dev/null +++ b/libraries/oidc/test/src/main/kotlin/io/element/android/libraries/oidc/test/customtab/FakeOidcActionFlow.kt @@ -0,0 +1,32 @@ +/* + * Copyright 2025 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +package io.element.android.libraries.oidc.test.customtab + +import io.element.android.libraries.oidc.api.OidcAction +import io.element.android.libraries.oidc.api.OidcActionFlow +import kotlinx.coroutines.flow.FlowCollector +import kotlinx.coroutines.flow.MutableStateFlow + +/** + * This is actually a copy of DefaultOidcActionFlow. + */ +class FakeOidcActionFlow : OidcActionFlow { + private val mutableStateFlow = MutableStateFlow(null) + + override fun post(oidcAction: OidcAction) { + mutableStateFlow.value = oidcAction + } + + override suspend fun collect(collector: FlowCollector) { + mutableStateFlow.collect(collector) + } + + override fun reset() { + mutableStateFlow.value = null + } +} diff --git a/libraries/permissions/impl/src/test/kotlin/io/element/android/libraries/permissions/impl/troubleshoot/NotificationTroubleshootCheckPermissionTestTest.kt b/libraries/permissions/impl/src/test/kotlin/io/element/android/libraries/permissions/impl/troubleshoot/NotificationTroubleshootCheckPermissionTestTest.kt index b50cc16e69..a530b8dbee 100644 --- a/libraries/permissions/impl/src/test/kotlin/io/element/android/libraries/permissions/impl/troubleshoot/NotificationTroubleshootCheckPermissionTestTest.kt +++ b/libraries/permissions/impl/src/test/kotlin/io/element/android/libraries/permissions/impl/troubleshoot/NotificationTroubleshootCheckPermissionTestTest.kt @@ -10,8 +10,8 @@ package io.element.android.libraries.permissions.impl.troubleshoot import android.os.Build import app.cash.turbine.test import com.google.common.truth.Truth.assertThat -import io.element.android.libraries.permissions.impl.FakePermissionStateProvider import io.element.android.libraries.permissions.impl.action.FakePermissionActions +import io.element.android.libraries.permissions.test.FakePermissionStateProvider import io.element.android.libraries.troubleshoot.api.test.NotificationTroubleshootTestState import io.element.android.services.toolbox.test.sdk.FakeBuildVersionSdkIntProvider import io.element.android.services.toolbox.test.strings.FakeStringProvider diff --git a/libraries/permissions/impl/src/main/kotlin/io/element/android/libraries/permissions/impl/FakePermissionStateProvider.kt b/libraries/permissions/test/src/main/kotlin/io/element/android/libraries/permissions/test/FakePermissionStateProvider.kt similarity index 96% rename from libraries/permissions/impl/src/main/kotlin/io/element/android/libraries/permissions/impl/FakePermissionStateProvider.kt rename to libraries/permissions/test/src/main/kotlin/io/element/android/libraries/permissions/test/FakePermissionStateProvider.kt index ebd945c8e6..c97057bc7d 100644 --- a/libraries/permissions/impl/src/main/kotlin/io/element/android/libraries/permissions/impl/FakePermissionStateProvider.kt +++ b/libraries/permissions/test/src/main/kotlin/io/element/android/libraries/permissions/test/FakePermissionStateProvider.kt @@ -5,7 +5,7 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.libraries.permissions.impl +package io.element.android.libraries.permissions.test import io.element.android.libraries.permissions.api.PermissionStateProvider import kotlinx.coroutines.flow.Flow From 5a8919b6e35a89dc9e1e2a1276ca34bbf7c09eaf Mon Sep 17 00:00:00 2001 From: ElementBot <110224175+ElementBot@users.noreply.github.com> Date: Mon, 2 Jun 2025 12:05:08 +0200 Subject: [PATCH 19/25] Sync Strings from Localazy (#4804) Co-authored-by: bmarty <3940906+bmarty@users.noreply.github.com> --- .../src/main/res/values-de/translations.xml | 8 +- .../src/main/res/values-de/translations.xml | 2 +- .../src/main/res/values-de/translations.xml | 6 +- .../src/main/res/values-de/translations.xml | 8 +- .../src/main/res/values-de/translations.xml | 22 +- .../src/main/res/values-de/translations.xml | 2 +- .../src/main/res/values-de/translations.xml | 2 +- .../src/main/res/values-de/translations.xml | 18 +- .../src/main/res/values-de/translations.xml | 12 +- .../src/main/res/values-de/translations.xml | 14 +- .../src/main/res/values-de/translations.xml | 4 +- .../src/main/res/values-de/translations.xml | 28 +- .../src/main/res/values-de/translations.xml | 46 +- .../src/main/res/values-de/translations.xml | 20 +- .../src/main/res/values-de/translations.xml | 34 +- .../src/main/res/values-de/translations.xml | 8 +- .../src/main/res/values-de/translations.xml | 2 +- .../src/main/res/values-de/translations.xml | 6 +- .../src/main/res/values-de/translations.xml | 12 +- .../src/main/res/values-de/translations.xml | 4 +- .../src/main/res/values-de/translations.xml | 2 +- .../src/main/res/values-de/translations.xml | 14 +- .../src/main/res/values-de/translations.xml | 2 +- .../src/main/res/values-de/translations.xml | 8 +- .../src/main/res/values-cy/translations.xml | 8 +- .../src/main/res/values-de/translations.xml | 41 +- .../appnav.loggedin_LoggedInView_Day_2_de.png | 4 +- ...nfigureroom_ConfigureRoomViewDark_2_de.png | 4 +- ...nfigureroom_ConfigureRoomViewDark_3_de.png | 4 +- ...nfigureroom_ConfigureRoomViewDark_4_de.png | 4 +- ...nfigureroom_ConfigureRoomViewDark_5_de.png | 4 +- ...figureroom_ConfigureRoomViewLight_2_de.png | 4 +- ...figureroom_ConfigureRoomViewLight_3_de.png | 4 +- ...figureroom_ConfigureRoomViewLight_4_de.png | 4 +- ...figureroom_ConfigureRoomViewLight_5_de.png | 4 +- ...hooseSelfVerificationModeView_Day_0_de.png | 4 +- ...hooseSelfVerificationModeView_Day_1_de.png | 4 +- ...hooseSelfVerificationModeView_Day_2_de.png | 4 +- ...hooseSelfVerificationModeView_Day_3_de.png | 4 +- ...cline_AcceptDeclineInviteView_Day_2_de.png | 4 +- ...eandblock_DeclineAndBlockView_Day_0_de.png | 4 +- ...eandblock_DeclineAndBlockView_Day_1_de.png | 4 +- ...eandblock_DeclineAndBlockView_Day_2_de.png | 4 +- ...eandblock_DeclineAndBlockView_Day_3_de.png | 4 +- ...eandblock_DeclineAndBlockView_Day_4_de.png | 4 +- ...s.joinroom.impl_JoinRoomView_Day_13_de.png | 4 +- ...s.joinroom.impl_JoinRoomView_Day_14_de.png | 4 +- ...s.joinroom.impl_JoinRoomView_Day_15_de.png | 4 +- ...es.joinroom.impl_JoinRoomView_Day_4_de.png | 4 +- ...es.joinroom.impl_JoinRoomView_Day_9_de.png | 4 +- ...ttings_LockScreenSettingsView_Day_2_de.png | 4 +- ...n.impl.setup.pin_SetupPinView_Day_0_de.png | 4 +- ...n.impl.setup.pin_SetupPinView_Day_1_de.png | 4 +- ...n.impl.setup.pin_SetupPinView_Day_2_de.png | 4 +- ...n.impl.setup.pin_SetupPinView_Day_3_de.png | 4 +- ...n.impl.setup.pin_SetupPinView_Day_4_de.png | 4 +- ...mpl.unlock_PinUnlockViewInApp_Day_0_de.png | 4 +- ...mpl.unlock_PinUnlockViewInApp_Day_1_de.png | 4 +- ...mpl.unlock_PinUnlockViewInApp_Day_2_de.png | 4 +- ...mpl.unlock_PinUnlockViewInApp_Day_3_de.png | 4 +- ...mpl.unlock_PinUnlockViewInApp_Day_4_de.png | 4 +- ...mpl.unlock_PinUnlockViewInApp_Day_5_de.png | 4 +- ...mpl.unlock_PinUnlockViewInApp_Day_6_de.png | 4 +- ...mpl.unlock_PinUnlockViewInApp_Day_7_de.png | 4 +- ...een.impl.unlock_PinUnlockView_Day_0_de.png | 4 +- ...een.impl.unlock_PinUnlockView_Day_1_de.png | 4 +- ...een.impl.unlock_PinUnlockView_Day_2_de.png | 4 +- ...een.impl.unlock_PinUnlockView_Day_3_de.png | 4 +- ...een.impl.unlock_PinUnlockView_Day_4_de.png | 4 +- ...een.impl.unlock_PinUnlockView_Day_5_de.png | 4 +- ...een.impl.unlock_PinUnlockView_Day_6_de.png | 4 +- ...een.impl.unlock_PinUnlockView_Day_7_de.png | 4 +- ...changeserver_ChangeServerView_Day_3_de.png | 4 +- ...der_ChooseAccountProviderView_Day_0_de.png | 4 +- ...der_ChooseAccountProviderView_Day_1_de.png | 4 +- ...der_ChooseAccountProviderView_Day_2_de.png | 4 +- ...ens.onboarding_OnBoardingView_Day_5_de.png | 4 +- ...mation_QrCodeConfirmationView_Day_0_de.png | 4 +- ....qrcode.intro_QrCodeIntroView_Day_1_de.png | 4 +- ...ns.qrcode.scan_QrCodeScanView_Day_4_de.png | 4 +- ....impl_AccountDeactivationView_Day_0_de.png | 4 +- ....impl_AccountDeactivationView_Day_1_de.png | 4 +- ....impl_AccountDeactivationView_Day_2_de.png | 4 +- ....impl_AccountDeactivationView_Day_3_de.png | 4 +- ....impl_AccountDeactivationView_Day_4_de.png | 4 +- ...tures.logout.impl_LogoutView_Day_10_de.png | 4 +- ...tures.logout.impl_LogoutView_Day_11_de.png | 4 +- ...atures.logout.impl_LogoutView_Day_1_de.png | 4 +- ...atures.logout.impl_LogoutView_Day_2_de.png | 4 +- ...atures.logout.impl_LogoutView_Day_3_de.png | 4 +- ...atures.logout.impl_LogoutView_Day_7_de.png | 4 +- ...atures.logout.impl_LogoutView_Day_8_de.png | 4 +- ...atures.logout.impl_LogoutView_Day_9_de.png | 4 +- ...onlist_ActionListViewContent_Day_12_de.png | 4 +- ...tachments.preview_AttachmentsView_0_de.png | 4 +- ...tachments.preview_AttachmentsView_1_de.png | 4 +- ...tachments.preview_AttachmentsView_2_de.png | 4 +- ...tachments.preview_AttachmentsView_3_de.png | 4 +- ...tachments.preview_AttachmentsView_4_de.png | 4 +- ...tachments.preview_AttachmentsView_5_de.png | 4 +- ...tachments.preview_AttachmentsView_7_de.png | 4 +- ...veVerifiedUserSendFailureView_Day_1_de.png | 4 +- ...veVerifiedUserSendFailureView_Day_2_de.png | 4 +- ...ent_TimelineItemEncryptedView_Day_1_de.png | 4 +- ...ent_TimelineItemEncryptedView_Day_5_de.png | 4 +- ...nents_TimelineItemEventRowUtd_Day_0_de.png | 4 +- ...ll.impl.create_CreatePollView_Day_2_de.png | 4 +- ...ll.impl.create_CreatePollView_Day_7_de.png | 4 +- ...advanced_AdvancedSettingsViewDark_0_de.png | 4 +- ...advanced_AdvancedSettingsViewDark_1_de.png | 4 +- ...advanced_AdvancedSettingsViewDark_2_de.png | 4 +- ...advanced_AdvancedSettingsViewDark_3_de.png | 4 +- ...advanced_AdvancedSettingsViewDark_4_de.png | 4 +- ...advanced_AdvancedSettingsViewDark_5_de.png | 4 +- ...dvanced_AdvancedSettingsViewLight_0_de.png | 4 +- ...dvanced_AdvancedSettingsViewLight_1_de.png | 4 +- ...dvanced_AdvancedSettingsViewLight_2_de.png | 4 +- ...dvanced_AdvancedSettingsViewLight_3_de.png | 4 +- ...dvanced_AdvancedSettingsViewLight_4_de.png | 4 +- ...dvanced_AdvancedSettingsViewLight_5_de.png | 4 +- ...aultNotificationSettingOption_Day_0_de.png | 4 +- ...efaultNotificationSettingView_Day_4_de.png | 4 +- ...ons_NotificationSettingsView_Day_12_de.png | 4 +- ...impl.root_PreferencesRootViewDark_0_de.png | 4 +- ...impl.root_PreferencesRootViewDark_1_de.png | 4 +- ...mpl.root_PreferencesRootViewLight_0_de.png | 4 +- ...mpl.root_PreferencesRootViewLight_1_de.png | 4 +- ...ion_RoomMembersModerationView_Day_0_de.png | 4 +- ...ion_RoomMembersModerationView_Day_1_de.png | 4 +- ...ion_RoomMembersModerationView_Day_2_de.png | 4 +- ...ion_RoomMembersModerationView_Day_5_de.png | 4 +- ...ion_RoomMembersModerationView_Day_9_de.png | 4 +- ...bers_RoomMemberListViewBanned_Day_2_de.png | 4 +- ...oomNotificationSettingsOption_Day_0_de.png | 4 +- ...s.changeroles_ChangeRolesView_Day_6_de.png | 4 +- ...s.changeroles_ChangeRolesView_Day_7_de.png | 4 +- ...ons_ChangeRoomPermissionsView_Day_6_de.png | 4 +- ...sions_RolesAndPermissionsView_Day_2_de.png | 4 +- ...rivacy_SecurityAndPrivacyViewDark_0_de.png | 4 +- ...rivacy_SecurityAndPrivacyViewDark_1_de.png | 4 +- ...rivacy_SecurityAndPrivacyViewDark_2_de.png | 4 +- ...rivacy_SecurityAndPrivacyViewDark_3_de.png | 4 +- ...rivacy_SecurityAndPrivacyViewDark_4_de.png | 4 +- ...rivacy_SecurityAndPrivacyViewDark_5_de.png | 4 +- ...rivacy_SecurityAndPrivacyViewDark_6_de.png | 4 +- ...rivacy_SecurityAndPrivacyViewDark_7_de.png | 4 +- ...rivacy_SecurityAndPrivacyViewDark_8_de.png | 4 +- ...ivacy_SecurityAndPrivacyViewLight_0_de.png | 4 +- ...ivacy_SecurityAndPrivacyViewLight_1_de.png | 4 +- ...ivacy_SecurityAndPrivacyViewLight_2_de.png | 4 +- ...ivacy_SecurityAndPrivacyViewLight_3_de.png | 4 +- ...ivacy_SecurityAndPrivacyViewLight_4_de.png | 4 +- ...ivacy_SecurityAndPrivacyViewLight_5_de.png | 4 +- ...ivacy_SecurityAndPrivacyViewLight_6_de.png | 4 +- ...ivacy_SecurityAndPrivacyViewLight_7_de.png | 4 +- ...ivacy_SecurityAndPrivacyViewLight_8_de.png | 4 +- ...lScreenIntentPermissionBanner_Day_0_de.png | 4 +- ...omponents_RoomListContentView_Day_1_de.png | 4 +- ...omponents_RoomListContentView_Day_4_de.png | 4 +- ...onents_SetUpRecoveryKeyBanner_Day_0_de.png | 4 +- ...s.roomlist.impl_RoomListView_Day_10_de.png | 4 +- ...sable_SecureBackupDisableView_Day_0_de.png | 4 +- ...sable_SecureBackupDisableView_Day_1_de.png | 4 +- ...sable_SecureBackupDisableView_Day_2_de.png | 4 +- ...sable_SecureBackupDisableView_Day_3_de.png | 4 +- ...ord_ResetIdentityPasswordView_Day_0_de.png | 4 +- ...ord_ResetIdentityPasswordView_Day_1_de.png | 4 +- ...ord_ResetIdentityPasswordView_Day_2_de.png | 4 +- ...ord_ResetIdentityPasswordView_Day_3_de.png | 4 +- ...et.root_ResetIdentityRootView_Day_0_de.png | 4 +- ...et.root_ResetIdentityRootView_Day_1_de.png | 4 +- ...pl.root_SecureBackupRootView_Day_14_de.png | 4 +- ...p_SecureBackupSetupViewChange_Day_0_de.png | 4 +- ...p_SecureBackupSetupViewChange_Day_1_de.png | 4 +- ...p_SecureBackupSetupViewChange_Day_4_de.png | 4 +- ...l.setup_SecureBackupSetupView_Day_0_de.png | 4 +- ...l.setup_SecureBackupSetupView_Day_1_de.png | 4 +- ...l.setup_SecureBackupSetupView_Day_4_de.png | 4 +- ....signedout.impl_SignedOutView_Day_0_de.png | 4 +- ...ing_OutgoingVerificationView_Day_10_de.png | 4 +- ...tails_MediaDetailsBottomSheet_Day_0_de.png | 4 +- ...impl.gallery_MediaGalleryView_Day_8_de.png | 4 +- ...ewer.impl.viewer_MediaViewerView_11_de.png | 4 +- ...rmissions.api_PermissionsView_Day_1_de.png | 4 +- ...rmissions.api_PermissionsView_Day_2_de.png | 4 +- ...mposer_TextComposerAddCaption_Day_0_de.png | 4 +- ...tcomposer_TextComposerCaption_Day_0_de.png | 4 +- ...poser_TextComposerEditCaption_Day_0_de.png | 4 +- ...TroubleshootNotificationsView_Day_0_de.png | 4 +- ...TroubleshootNotificationsView_Day_1_de.png | 4 +- ...TroubleshootNotificationsView_Day_2_de.png | 4 +- ...TroubleshootNotificationsView_Day_3_de.png | 4 +- ...TroubleshootNotificationsView_Day_4_de.png | 4 +- ...TroubleshootNotificationsView_Day_5_de.png | 4 +- ...TroubleshootNotificationsView_Day_6_de.png | 4 +- ...TroubleshootNotificationsView_Day_7_de.png | 4 +- screenshots/html/data.js | 1626 ++++++++--------- 197 files changed, 1324 insertions(+), 1315 deletions(-) diff --git a/features/createroom/impl/src/main/res/values-de/translations.xml b/features/createroom/impl/src/main/res/values-de/translations.xml index 24fe39efca..90438aa38c 100644 --- a/features/createroom/impl/src/main/res/values-de/translations.xml +++ b/features/createroom/impl/src/main/res/values-de/translations.xml @@ -8,10 +8,10 @@ "Alle können diesen Chatroom finden. Sie können dies aber jederzeit in den Chatroomeinstellungen ändern." "Öffentlicher Raum" - "Jeder kann diesem Chatroom beitreten" - "Jemand" - "Chatroom Zugang" - "Jeder kann darum bitten, dem Chatroom beizutreten, aber ein Administrator oder ein Moderator muss die Anfrage akzeptieren." + "Jeder darf diesen Raum betreten" + "Jeder" + "Chatroomzugang" + "Jeder kann den Zutritt zum Raum beantragen, aber ein Moderator muss die Anfrage akzeptieren." "Beitritt beantragen" "Damit dieser Chatroom im öffentlichen Chatroomverzeichnis sichtbar ist, benötigen Sie eine Chatroomadresse." "Chatroomadresse" diff --git a/features/deactivation/impl/src/main/res/values-de/translations.xml b/features/deactivation/impl/src/main/res/values-de/translations.xml index 0830d6ba3f..cd61a6a9d0 100644 --- a/features/deactivation/impl/src/main/res/values-de/translations.xml +++ b/features/deactivation/impl/src/main/res/values-de/translations.xml @@ -10,5 +10,5 @@ "Sie werden aus allen Chatrooms entfernt." "Löschen Sie Ihre Kontoinformationen von unserem Identitätsserver." "Gelöschte Nachrichten werden für bereits registrierte Benutzer weiterhin sichtbar sein, wenn sie auch neuen oder nicht registrierten Benutzern nicht mehr zur Verfügung stehen." - "Benutzerkonto deaktivieren" + "Nutzerkonto deaktivieren" diff --git a/features/ftue/impl/src/main/res/values-de/translations.xml b/features/ftue/impl/src/main/res/values-de/translations.xml index 902dcadb04..10473d297e 100644 --- a/features/ftue/impl/src/main/res/values-de/translations.xml +++ b/features/ftue/impl/src/main/res/values-de/translations.xml @@ -1,12 +1,12 @@ - "Sie können es nicht bestätigen?" + "Bestätigung unmöglich?" "Erstelle einen neuen Wiederherstellungsschlüssel" "Verifiziere dieses Gerät, um sicheres Messaging einzurichten." - "Bestätige, dass du es bist" + "Bestätigen Sie Ihre Identität" "Ein anderes Gerät verwenden" "Wiederherstellungsschlüssel verwenden" - "Du kannst nun verschlüsselte Nachrichten lesen oder versenden." + "Sie können jetzt verschlüsselte Nachrichten lesen und versenden. Ihre Chatpartner vertrauen nun diesem Gerät auch." "Gerät verifiziert" "Ein anderes Gerät verwenden" "Bitte warten bis das andere Gerät bereit ist." diff --git a/features/invite/impl/src/main/res/values-de/translations.xml b/features/invite/impl/src/main/res/values-de/translations.xml index b03e5e1d49..e3937fbda1 100644 --- a/features/invite/impl/src/main/res/values-de/translations.xml +++ b/features/invite/impl/src/main/res/values-de/translations.xml @@ -1,9 +1,9 @@ - "Sie werden keine Nachrichten oder Chatroomeinladungen von diesem Benutzer sehen." + "Sie werden keine Nachrichten oder Chateinladungen von diesem Nutzer sehen." "Benutzer blockieren" "Melden Sie diesen Raum Ihrem Kontoanbieter." - "Beschreiben Sie den Grund für die Meldung…" + "Nennen Sie den Grund für die Meldung…" "Ablehnen und blockieren" "Möchten Sie die Einladung zum Betreten von %1$s wirklich ablehnen?" "Einladung ablehnen" @@ -11,8 +11,8 @@ "Einladung ablehnen" "Keine Einladungen" "%1$s (%2$s) hat dich eingeladen" - "Ja, ablehnen und blockieren" + "Ja, ablehnen & blockieren" "Sind Sie sicher, dass Sie die Einladung zu diesem Raum ablehnen möchten? Dadurch wird auch verhindert, dass %1$s Sie kontaktiert oder in Räume einlädt." - "Einladung ablehnen und blockieren" + "Einladung ablehnen & Nutzer blockieren" "Ablehnen und blockieren" diff --git a/features/joinroom/impl/src/main/res/values-de/translations.xml b/features/joinroom/impl/src/main/res/values-de/translations.xml index 980125bb64..0fa2bdce5f 100644 --- a/features/joinroom/impl/src/main/res/values-de/translations.xml +++ b/features/joinroom/impl/src/main/res/values-de/translations.xml @@ -1,32 +1,32 @@ - "Sie wurden aus diesem Chatroom ausgeschlossen %1$s." - "Sie wurden aus diesem Chatroom verbannt" + "Sie wurden von %1$s für diesen Chatroom gesperrt." + "Sie wurden für diesen Chatroom gesperrt" "Grund:%1$s." "Anfrage abbrechen" "Ja, abbrechen" "Möchten Sie Ihre Beitrittsanfrage für diesen Chatroom wirklich stornieren?" "Beitrittsanfrage stornieren" - "Ja, ablehnen und blockieren" + "Ja, ablehnen & blockieren" "Sind Sie sicher, dass Sie die Einladung zu diesem Raum ablehnen möchten? Dadurch wird auch verhindert, dass %1$s Sie kontaktiert oder in Räume einlädt." - "Einladung ablehnen und blockieren" + "Einladung ablehnen & Nutzer blockieren" "Ablehnen und blockieren" "Der Beitritt zum Chatroom schlug fehl." - "Dieser Chatroom ist entweder nur auf Einladung zugänglich oder es kann zu Zugangsbeschränkungen auf Spaceebene kommen." + "Dieser Chatroom ist entweder nur auf Einladung zugänglich oder es gibt andere Zugangsbeschränkungen durch Spaces." "Vergessen Sie diesen Raum" - "Sie benötigen eine Einladung, um diesem Raum beizutreten" + "Sie benötigen eine Einladung, um diesem Chatroom zu betreten" "Raum beitreten" "Möglicherweise müssen Sie eingeladen sein oder Mitglied eines Spaces sein, um beitreten zu können." "Anklopfen" "Nachricht (optional)" - "Falls Ihre Anfrage, dem Raum beizutreten, akzeptiert wird, werden Sie eine Einladung erhalten." + "Falls Ihre Anfrage, den Raum zu betreten, akzeptiert wird, erhalten Sie eine Einladung." "Beitrittsanfrage geschickt" "Wir konnten die Chatroomvorschau nicht anzeigen. Dies kann an Netzwerk- oder Serverproblemen liegen." "Wir konnten diese Chatroomvorschau nicht anzeigen" - "%1$s unterstützt noch keine Spaces. Du kannst auf Spaces im Web zugreifen." + "%1$s unterstützt noch keine Spaces. Sie können auf Spaces im Web zugreifen." "Spaces werden noch nicht unterstützt" - "Klopfe an um einen Administrator zu benachrichtigen. Nach der Freigabe kannst du dich an der Unterhaltung beteiligen." - "Du musst Mitglied in diesem Raum sein, um den Nachrichtenverlauf zu sehen." - "Willst du diesem Raum beitreten?" + "Klicken Sie auf die Schaltfläche unten und ein Chatroomadministrator wird benachrichtigt. Nach der Freigabe durch einen Chatroomadministrator können Sie sich an der Unterhaltung beteiligen." + "Sie müssen Mitglied in diesem Chatroom sein, um den Nachrichtenverlauf einsehen zu können." + "Möchten Sie diesem Chatroom betreten?" "Vorschau nicht verfügbar" diff --git a/features/knockrequests/impl/src/main/res/values-de/translations.xml b/features/knockrequests/impl/src/main/res/values-de/translations.xml index d9047019c0..45df2ecc8f 100644 --- a/features/knockrequests/impl/src/main/res/values-de/translations.xml +++ b/features/knockrequests/impl/src/main/res/values-de/translations.xml @@ -11,7 +11,7 @@ "Die Anfrage konnte nicht akzeptiert werden" "Beitrittsanfrage annehmen" "Ja, ablehnen und sperren" - "Sind Sie sicher, dass Sie %1$s ablehnen und sperren möchten ? Dieser Benutzer kann keinen erneuten Zugriff auf diesen Raum anfordern." + "Sind Sie sicher, dass Sie %1$s ablehnen und sperren möchten?Dieser Benutzer kann keine erneute Zulassung auf diesen Chatroom anfordern." "Ablehnen und Zugriff verbieten" "Ablehnung und Sperrung des Zugriffs" "Ja, ablehnen" diff --git a/features/leaveroom/api/src/main/res/values-de/translations.xml b/features/leaveroom/api/src/main/res/values-de/translations.xml index 6ac6c4a756..9a9a53a769 100644 --- a/features/leaveroom/api/src/main/res/values-de/translations.xml +++ b/features/leaveroom/api/src/main/res/values-de/translations.xml @@ -1,6 +1,6 @@ - "Bist du sicher, dass du diese Unterhaltung verlassen willst? Diese Unterhaltung ist nicht öffentlich und du kannst ihr ohne Einladung nicht wieder beitreten." + "Sind Sie sicher, dass Sie diesen Chat verlassen wollen? Dieser Chat ist nicht öffentlich und Sie können ihn ohne Einladung nicht wieder betreten." "Sind Sie sicher dass Sie diesen Chatroom verlassen möchten? Sie sind die einzige Person hier. Wenn Sie gehen, kann in Zukunft niemand mehr - auch Sie nicht - diesen Chatrooom betreten.." "Sind Sie sicher dass Sie diesen Chatroom verlassen möchten? Dieser Chatroom ist nicht öffentlich und Sie können ihn ohne Einladung nicht wieder betreten." "Sind Sie sicher, dass Sie den Raum verlassen möchten?" diff --git a/features/lockscreen/impl/src/main/res/values-de/translations.xml b/features/lockscreen/impl/src/main/res/values-de/translations.xml index e56938285c..f7e06457b4 100644 --- a/features/lockscreen/impl/src/main/res/values-de/translations.xml +++ b/features/lockscreen/impl/src/main/res/values-de/translations.xml @@ -8,29 +8,29 @@ "PIN-Code ändern" "Biometrisches Entsperren zulassen" "Pin entfernen" - "Bist du sicher, dass du die PIN entfernen willst?" + "Sind Sie sicher, dass Sie die PIN entfernen wollen?" "PIN entfernen?" "%1$s zulassen" "Ich möchte diese PIN verwenden." "Spare dir etwas Zeit und benutze %1$s, um die App zu entsperren" "PIN wählen" "PIN bestätigen" - "Sperre %1$s mit einem PIN Code, um den Zugriff auf deine Chats zu beschränken. + "Erhöhen Sie die Sicherheit von %1$s mit einem PIN Code. -Wähle etwas Einprägsames. Bei falscher Eingabe wirst du aus der App ausgeloggt." +Wählen Sie etwas Einprägsames. Wenn Sie die PIN vergessen, werden Sie aus der App ausgeloggt." "Aus Sicherheitsgründen kann dieser PIN-Code nicht verwendet werden." "Bitte eine andere PIN verwenden." "Bitte gib die gleiche PIN wie zuvor ein." "Die PINs stimmen nicht überein" - "Um fortzufahren, musst du dich erneut anmelden und eine neue PIN erstellen" - "Du wirst abgemeldet" + "Um fortzufahren, müssen Sie sich erneut anmelden und eine neue PIN erstellen" + "Sie werden abgemeldet" - "Du hast %1$d Versuch zu entsperren" - "Du hast %1$d Versuche zum Entsperren" + "Sie haben %1$d Entsperrversuch" + "Sie haben %1$d Entsperrversuche" - "Falsche PIN. Du hast %1$d weiteren Versuch" - "Falsche PIN. Du hast %1$d weitere Versuche" + "Falsche PIN. Sie haben %1$d weiteren Versuch" + "Falsche PIN. Sie haben %1$d weitere Versuche" "Biometrie verwenden" "PIN verwenden" diff --git a/features/login/impl/src/main/res/values-de/translations.xml b/features/login/impl/src/main/res/values-de/translations.xml index df54d7ad9e..672608484f 100644 --- a/features/login/impl/src/main/res/values-de/translations.xml +++ b/features/login/impl/src/main/res/values-de/translations.xml @@ -14,10 +14,12 @@ "Verwende einen anderen Kontoanbieter, z. B. deinen eigenen privaten Server oder ein Geschäftskonto." "Kontoanbieter wechseln" "Wir konnten diesen Homeserver nicht erreichen. Bitte überprüfen Sie ob die Homeserver-URL korrekt eingegeben wurde. Wenn die URL korrekt ist, wenden Sie sich an ihren Homeserver- Administrator, um weitere Hilfe zu erhalten." - "Der Server ist aufgrund eines Problems im \"well-known file\" nicht verfügbar: + "Der Server ist aufgrund eines Problems in der \".well-known\" Datei nicht verfügbar: %1$s" "Der gewählte Kontoanbieter unterstützt Sliding Sync nicht. Für die Verwendung von %1$s ist ein Upgrade des Servers erforderlich." - "%1$s darf keine Verbindung herstellen zu %2$s." + "%1$s darf keine Verbindung zu %2$s herstellen." + "Diese App wurde so konfiguriert, dass sie %1$s zulässt." + "Kontoanbieter %1$s ist nicht zulässig." "Homeserver-URL" "Geben Sie eine Domainadresse ein." "Wie lautet die Adresse deines Servers?" @@ -33,6 +35,7 @@ "Willkommen zurück!" "Anmelden bei %1$s" "Manuell anmelden" + "Bei %1$s anmelden" "Mit QR-Code anmelden" "Konto erstellen" "Willkommen beim schnellsten %1$s aller Zeiten. Optimiert für Geschwindigkeit und Einfachheit." @@ -45,7 +48,7 @@ "Wenn das Problem bestehen bleibt, versuche es mit einem anderen WLAN-Netzwerk oder verwende deine mobilen Daten statt WLAN." "Wenn das nicht funktioniert, melde dich manuell an" "Die Verbindung ist nicht sicher" - "Du wirst aufgefordert, die beiden unten abgebildeten Ziffern einzugeben." + "Sie werden aufgefordert, die beiden auf diesem Gerät angezeigten Ziffern einzugeben." "Trage die unten angezeigte Zahl auf einem anderen Device ein" "Melde dich auf deinem anderen Gerät an und versuche es dann noch einmal oder verwende ein anderes Gerät, das bereits angemeldet ist." "Anderes Gerät ist nicht angemeldet" @@ -73,7 +76,7 @@ Versuche, dich manuell anzumelden, oder scanne den QR-Code mit einem anderen Ger "Erneut versuchen" "Falscher QR-Code" "Gehe zu den Kameraeinstellungen" - "Du musst %1$s die Erlaubnis erteilen, die Kamera deines Geräts zu verwenden, um fortzufahren." + "Sie müssen %1$s die Erlaubnis erteilen, die Kamera Ihres Geräts zu verwenden um fortzufahren." "Erlaube Zugriff auf die Kamera zum Scannen des QR-Codes" "QR-Code scannen" "Neu beginnen" @@ -86,5 +89,6 @@ Versuche, dich manuell anzumelden, oder scanne den QR-Code mit einem anderen Ger "Matrix ist ein offenes Netzwerk für eine sichere, dezentrale Kommunikation." "Hier werden deine Gespräche gespeichert - so wie du deine E-Mails bei einem E-Mail-Anbieter aufbewahren würden." "Sie sind dabei, sich bei %1$s anzumelden" + "Kontoanbieter auswählen" "Sie sind dabei, ein Konto auf %1$s zu erstellen" diff --git a/features/logout/impl/src/main/res/values-de/translations.xml b/features/logout/impl/src/main/res/values-de/translations.xml index be66562c24..a9a74a965d 100644 --- a/features/logout/impl/src/main/res/values-de/translations.xml +++ b/features/logout/impl/src/main/res/values-de/translations.xml @@ -4,15 +4,15 @@ "Abmelden" "Abmelden" "Abmelden…" - "Du bist dabei, dich von deiner letzten Sitzung abzumelden. Wenn du dich jetzt abmeldest, verlierst du den Zugriff auf deine verschlüsselten Nachrichten." - "Du hast das Backup deaktiviert." - "Deine Schlüssel wurden noch gesichert, als du offline gegangen bist. Stelle die Verbindung wieder her, damit deine Schlüssel gesichert werden können, bevor du dich abmeldest." + "Sie sind dabei, sich von Ihrer letzten Sitzung abzumelden. Wenn Sie sich jetzt abmelden, verlieren Sie den Zugriff auf Ihre verschlüsselten Nachrichten." + "Sie haben das Backup deaktiviert" + "Ihre Schlüssel wurden noch gesichert, als Sie offline gingen. Stellen Sie die Verbindung wieder her, damit Ihre Schlüssel fertig gesichert werden können, bevor Sie sich abmelden." "Deine Schlüssel werden noch gesichert" - "Bitte warte, bis der Vorgang abgeschlossen ist, bevor du dich abmeldest." + "Bitte warten Sie, bis der Vorgang abgeschlossen ist, bevor Sie sich abmelden." "Deine Schlüssel werden noch gesichert" "Abmelden" - "Du bist dabei, dich von deiner letzten Sitzung abzumelden. Wenn du dich jetzt abmeldest, verlierst du den Zugriff auf deine verschlüsselten Nachrichten." + "Sie sind dabei, sich von Ihrer letzten Sitzung abzumelden. Wenn Sie sich jetzt abmelden, verlieren Sie den Zugriff auf Ihre verschlüsselten Nachrichten." "Wiederherstellung nicht eingerichtet" - "Du bist dabei, dich von deiner letzten Sitzung abzumelden. Wenn du dich jetzt abmeldest, verlierst du möglicherweise den Zugriff auf deine verschlüsselten Nachrichten." - "Hast du deinen Wiederherstellungsschlüssel gespeichert?" + "Sie sind dabei, sich von Ihrer letzten Sitzung abzumelden. Wenn Sie sich jetzt abmelden, verlieren Sie möglicherweise den Zugriff auf Ihre verschlüsselten Nachrichten." + "Haben Sie Ihren Wiederherstellungsschlüssel gespeichert?" diff --git a/features/poll/impl/src/main/res/values-de/translations.xml b/features/poll/impl/src/main/res/values-de/translations.xml index cfa9e14c5c..f525f79666 100644 --- a/features/poll/impl/src/main/res/values-de/translations.xml +++ b/features/poll/impl/src/main/res/values-de/translations.xml @@ -4,11 +4,11 @@ "Ergebnisse erst nach Ende der Umfrage anzeigen" "Anonyme Umfrage" "Option %1$d" - "Deine Änderungen wurden nicht gespeichert. Bist du sicher, dass du zurückgehen willst?" + "Ihre Änderungen wurden nicht gespeichert. Sind Sie sicher, dass Sie zurückgehen wollen?" "Frage oder Thema" "Worum geht es bei der Umfrage?" "Umfrage erstellen" - "Bist du dir sicher, dass du diese Umfrage löschen möchtest?" + "Möchten Sie diese Umfrage wirklich löschen?" "Umfrage löschen" "Umfrage bearbeiten" "Keine laufenden Umfragen vorhanden." diff --git a/features/preferences/impl/src/main/res/values-de/translations.xml b/features/preferences/impl/src/main/res/values-de/translations.xml index 5e27b10a61..e12e6cd83b 100644 --- a/features/preferences/impl/src/main/res/values-de/translations.xml +++ b/features/preferences/impl/src/main/res/values-de/translations.xml @@ -1,31 +1,31 @@ - "Damit du keinen wichtigen Anruf verpasst, ändere bitte deine Einstellungen so, dass du bei gesperrtem Telefon Benachrichtigungen im Vollbildmodus erhältst." + "Damit Sie keine wichtigen Anrufe verpassen, ändern Sie bitte Ihre Einstellungen, so dass das gesperrte Telefon auch Benachrichtigungen im Vollbildmodus erhalten darf." "Verbessere dein Anruferlebnis" "Wählen Sie, wie Sie Benachrichtigungen erhalten möchten" - "Entwickler-Modus" + "Entwicklermodus" "Aktivieren, um Zugriff auf Features und Funktionen für Entwickler zu aktivieren." "Benutzerdefinierte Element-Aufruf-Basis-URL" "Lege eine eigene Basis-URL für Element Call fest." - "Ungültige URL, bitte stelle sicher, dass du das Protokoll (http/https) und die richtige Adresse angibst." - "Avatare in Einladungsanfragen im Raum ausblenden" - "Medienvorschauen in der Zeitleiste ausblenden" - "Laden Sie Fotos und Videos schneller hoch und reduzieren Sie die Datennutzung" + "Ungültige URL, bitte geben Sie das Protokoll (http/https) und die richtige Adresse an." + "Avatare in Chateinladungen ausblenden" + "Medienvorschau im Nachrichtenverlauf ausblenden" + "Laden Sie Fotos und Videos schneller hoch und reduzieren den Datenverbrauch" "Optimieren Sie die Medienqualität" "Moderation und Sicherheit" "Anbieter für Push-Benachrichtigungen" "Deaktiviere den Rich-Text-Editor, um Markdown manuell einzugeben." "Lesebestätigungen" - "Wenn diese Option deaktiviert ist, werden Ihre Lesebestätigungen an niemanden gesendet. Du erhältst weiterhin Lesebestätigungen von anderen Benutzern." + "Wenn diese Option deaktiviert ist, werden Ihre Lesebestätigungen an niemanden gesendet. Sie erhalten weiterhin Lesebestätigungen von anderen Benutzern." "Präsenz teilen" - "Wenn diese Option deaktiviert ist, kannst du keine Lesebestätigungen oder Tipp-Benachrichtigungen senden oder empfangen." + "Wenn diese Option deaktiviert ist, können Sie keine Lesebestätigungen oder Tippbenachrichtigungen senden oder empfangen." "Immer verstecken" "Immer anzeigen" "In privaten Chatrooms" - "Ein verstecktes Medium kann jederzeit durch Antippen angezeigt werden" - "Medien in der Zeitleiste anzeigen" - "Option aktiveren, um Nachrichtenquelle in der Zeitleiste anzuzeigen." - "Du hast keine blockierten Nutzer" + "Ausgeblendete Medien können jederzeit durch Antippen angezeigt werden" + "Medien im Nachrichtenverlauf anzeigen" + "Aktivieren Sie die Option, um den Nachrichtenquellcode in der Zeitleiste anzuzeigen." + "Sie haben keine geblockten Nutzer" "Blockierung aufheben" "Der Nutzer kann dir wieder Nachrichten senden & alle Nachrichten des Nutzers werden wieder angezeigt." "Blockierung aufheben" @@ -53,7 +53,7 @@ Wenn du fortfährst, können sich einige deiner Einstellungen ändern." "Die Konfiguration wurde nicht korrigiert, bitte versuche es erneut." "Gruppenchats" "Einladungen" - "Dein Homeserver unterstützt diese Option in verschlüsselten Chat nicht. In einigen Chats wirst du möglicherweise nicht benachrichtigt." + "Ihr Homeserver unterstützt diese Option in verschlüsselten Räumen nicht. In einigen Räumen werden Sie möglicherweise nicht benachrichtigt." "Erwähnungen" "Alle" "Erwähnungen" @@ -65,5 +65,5 @@ Wenn du fortfährst, können sich einige deiner Einstellungen ändern." "Benachrichtigungen" "Verlauf pushen" "Fehlerbehebung" - "Fehlerbehebung für Benachrichtigungen" + "Beheben Sie die Fehler bei Benachrichtigungen" diff --git a/features/roomdetails/impl/src/main/res/values-de/translations.xml b/features/roomdetails/impl/src/main/res/values-de/translations.xml index 96c8b910fa..16ef6b7e05 100644 --- a/features/roomdetails/impl/src/main/res/values-de/translations.xml +++ b/features/roomdetails/impl/src/main/res/values-de/translations.xml @@ -3,7 +3,7 @@ "Sie brauchen eine Chatroomadresse, so dass sie im Verzeichnis sichtbar gemacht werden kann." "Chatroomadresse" "Beim Aktualisieren der Benachrichtigungseinstellungen ist ein Fehler aufgetreten." - "Dein Homeserver unterstützt diese Option in verschlüsselten Chat nicht. In einigen Chats wirst du möglicherweise nicht benachrichtigt." + "Ihr Homeserver unterstützt diese Option in verschlüsselten Räumen nicht. In einigen Räumen werden Sie möglicherweise nicht benachrichtigt." "Umfragen" "Nur Administratoren" "Mitglieder sperren" @@ -20,11 +20,11 @@ "Raumthema ändern" "Nachrichten senden" "Admins bearbeiten" - "Du kannst diese Aktion nicht mehr rückgängig machen. Du vergibst dieselbe Rolle, die du auch hast." + "Sie können diese Aktion nicht mehr rückgängig machen. Sie vergeben die gleiche Rolle, die Sie auch haben." "Als Administrator hinzufügen?" "Zurückstufen" - "Du stufst dich selbst herab. Diese Änderung kann nicht rückgängig gemacht werden. Wenn du der letzte Benutzer mit dieser Rolle bist, ist es nicht möglich, diese Rolle wiederzuerlangen." - "Möchtest du dich selbst herabstufen?" + "Sie stufen sich selbst herab. Diese Änderung kann nicht rückgängig gemacht werden. Wenn Sie der letzte Nutzer mit dieser Rolle sind, ist es nicht möglich, diese Rolle wiederzuerlangen." + "Möchten Sie sich selbst herabstufen?" "%1$s (Ausstehend)" "(Ausstehend)" "Administratoren haben automatisch Moderatorenrechte" @@ -32,7 +32,7 @@ "Administratoren" "Moderatoren" "Mitglieder" - "Du hast nicht gespeicherte Änderungen." + "Sie haben ungespeicherte Änderungen." "Änderungen speichern?" "Thema hinzufügen" "Bereits Mitglied" @@ -66,7 +66,7 @@ "Informationen" "Thema" "Raum wird aktualisiert…" - "In diesem Raum gibt es keine gesperrten Benutzer." + "In diesem Chatroom gibt es keine gesperrten Nutzer." "%1$d Person" "%1$d Personen" @@ -75,7 +75,7 @@ "Mitglied nur entfernen" "Sperre aufheben" "Die Nutzer können den Raum wieder beitreten, wenn sie dazu eingeladen werden." - "Benutzer entsperren" + "Nutzer entsperren" "Gesperrt" "Mitglieder" "Ausstehend" @@ -93,7 +93,7 @@ "Beim Laden der Benachrichtigungseinstellungen ist ein Fehler aufgetreten." "Fehler beim Wiederherstellen des Standardmodus. Bitte erneut versuchen." "Fehler beim Einstellen des Modus. Bitte erneut versuchen." - "Dein Homeserver unterstützt diese Option in verschlüsselten Chats nicht. Du wirst in diesem Chat nicht benachrichtigt." + "Ihr Homeserver unterstützt diese Option in verschlüsselten Chatrooms nicht. Sie erhalten in diesem Chatroom keine Benachrichtigungen." "Alle Nachrichten" "Nur Erwähnungen und Schlüsselwörter" "Benachrichtige mich bei" @@ -112,33 +112,33 @@ "Raum-Details anpassen" "Rollen und Berechtigungen" "Chatroomadresse hinzufügen" - "Jeder kann den Beitritt zum Chatroom beantragen, aber ein Administrator oder Moderator muss die Anfrage annehmen." + "Jeder kann den Zutritt zum Raum beantragen, aber ein Administrator oder ein Moderator müssen die Anfrage akzeptieren." "Beitritt beantragen" "Ja, Verschlüsselung aktivieren" - "Nach der Aktivierung kann die Verschlüsselung für einen Raum nicht mehr deaktiviert werden. Der Nachrichtenverlauf ist nur für Raummitglieder sichtbar, weil sie eingeladen wurden oder dem Chatroom beigetreten sind. -Niemand außer den Raummitgliedern kann Nachrichten lesen. Dies kann verhindern, dass Bots und Bridges richtig funktionieren. -Wir empfehlen nicht, die Verschlüsselung für Räume zu aktivieren, die jeder finden und denen jeder beitreten kann." + "Einmal angeschaltet kann die Verschlüsselung für einen Chatroom nicht mehr deaktiviert werden. Der Nachrichtenverlauf ist nur für Chatroommitglieder sichtbar, seit sie eingeladen wurden oder dem Chatroom beigetreten sind. +Niemand außer Chatroommitgliedern kann Nachrichten lesen. Dies kann verhindern, dass Bots und Bridges richtig funktionieren. +Wir empfehlen nicht, die Verschlüsselung für Chatrooms die jeder finden und betreten darf, zu aktivieren." "Verschlüsselung aktivieren?" - "Nach der Aktivierung kann die Verschlüsselung nicht deaktiviert werden." + "Einmal angeschaltet kann die Verschlüsselung nicht mehr deaktiviert werden." "Verschlüsselung" "Ende-zu-Ende-Verschlüsselung aktivieren" - "Jeder kann es finden und beitreten" - "Jemand" + "Jeder kann diesen Raum finden und betreten" + "Jeder" "Personen können nur beitreten, wenn sie eingeladen werden." "Nur auf Einladung" "Chatroomzugang" "Räume werden zur Zeit nicht unterstützt." - "Raum Mitglieder" + "Spacemitglieder" "Um den Chatroom im Chatroomverzeichnis sichtbar zu machen, benötigen Sie eine Chatroomadresse." "Chatroomadresse" - "Erlauben Sie, dass dieser Chatroom gefunden werden kann, indem Sie das %1$s öffentliche Chatroomverzeichnis durchsuchen" + "Erlauben Sie, dass dieser Chatroom im öffentlichen Chatroomverzeichnis von %1$s gefunden werden kann." "Sichtbar im öffentlichen Chatroomverzeichnis" - "Jemand" - "Wer kann die Verlaufsgeschichte lesen" - "Nur Mitglieder, da sie eingeladen wurden" - "Nur Mitglieder seit Auswahl dieser Option" - "Chatroomadressen machen es möglich, Chatrooms zu finden und auf sie zuzugreifen. Dadurch wird auch sichergestellt, dass Sie Ihren Chatroom problemlos mit anderen teilen können. -Lassen Sie die Möglichkeit zu, Ihren Chatroom in Ihrem öffentlichen Chatroomverzeichnis auf Ihrem Homeserver zu veröffentlichen." + "Jeder" + "Wer hat Zugriff auf den Nachrichtenverlauf des Chatrooms" + "Nur Mitglieder, aber erst seit ihrer Einladung" + "Nur Mitglieder seit diese Chatroomoption ausgewählt wurde." + "Chatroomadressen machen es möglich, Chatrooms zu finden und auf sie zuzugreifen. Dies erleichtert es, Chatrooms mit anderen zu teilen. +Falls erlaubt, können Sie Ihren Chatroom im öffentlichen Raumverzeichnis Ihres Homeservers aufführen." "Veröffentlichung von Räumen" "Chatroomadressen sind Möglichkeiten, Chatrooms zu finden und auf sie zuzugreifen. So können Sie Ihren Chatroom auch problemlos mit anderen teilen. Die Adresse ist auch erforderlich, um den Chatroom in einem %1$s öffentlichen Chatroomverzeichnis sichtbar zu machen." " Sichtbarkeit des Chatrooms" diff --git a/features/roomlist/impl/src/main/res/values-de/translations.xml b/features/roomlist/impl/src/main/res/values-de/translations.xml index 4e7a4ad288..59cd4dc0c6 100644 --- a/features/roomlist/impl/src/main/res/values-de/translations.xml +++ b/features/roomlist/impl/src/main/res/values-de/translations.xml @@ -1,13 +1,13 @@ - "Erstelle einen neuen Wiederherstellungsschlüssel, mit dem du deinen verschlüsselten Nachrichtenverlauf wiederherstellen kannst, wenn du dich an einem neuen Gerät anmeldest." + "Falls Sie alle vorhandenen Geräte verloren haben, stellen Sie Ihre kryptografische Identität und Ihren Nachrichtenverlauf mit einem Wiederherstellungsschlüssel wieder her." "Wiederherstellung einrichten" "Wiederherstellung einrichten" "Bestätigen Sie die Validität Ihres Wiederherstellungsschlüssels, um weiterhin auf Ihren Schlüsselspeicher und den Nachrichtenverlauf zugreifen zu können." "Geben Sie Ihren Wiederherstellungsschlüssel ein" "Haben Sie Ihren Wiederherstellungsschlüssel vergessen?" "Ihr Schlüsselspeicher ist nicht synchronisiert" - "Damit du keinen wichtigen Anruf verpasst, ändere bitte deine Einstellungen so, dass du bei gesperrtem Telefon Benachrichtigungen im Vollbildmodus erhältst." + "Damit Sie keine wichtigen Anrufe verpassen, ändern Sie bitte Ihre Einstellungen, so dass das gesperrte Telefon auch Benachrichtigungen im Vollbildmodus erhalten darf." "Verbessere dein Anruferlebnis" "Möchten Sie die Einladung zum Betreten von %1$s wirklich ablehnen?" "Einladung ablehnen" @@ -22,21 +22,21 @@ "Beginnen Sie, indem Sie jemandem eine Nachricht senden." "Noch keine Chats." "Favoriten" - "In den Chat-Einstellungen kannst du einen Chat als Favorit hinzufügen. -Um deine anderen Chats zu sehen wähle diesen Filter ab." - "Du hast noch keine Chats als Favorit markiert." + "In den Chatroomeinstellungen können Sie einen Chatroom als Favorit markieren. +Deaktivieren Sie den entsprechenden Filter, um Ihre anderen Chatrooms zu sehen" + "Sie haben noch keine Chatrooms als Favorit markiert" "Einladungen" - "Du hast keine ausstehenden Einladungen." + "Sie haben keine ausstehenden Einladungen." "Niedrige Priorität" "Wähle Filter ab, um Deine Chats zu sehen." - "Du hast keine Chats für diese Auswahl" + "Diese Chats entsprechen diesen Kriterien nicht." "Personen" - "Du hast noch keine Direktnachrichten" + "Sie haben noch keine Direktnachrichten" "Räume" - "Du hast noch keine Chats." + "Sie sind noch in keinem Raum" "Ungelesen" "Glückwunsch! -Du hast keine ungelesenen Nachrichten!" +Sie haben keine ungelesenen Nachrichten!" "Chats" "Als gelesen markieren" "Als ungelesen markieren" diff --git a/features/securebackup/impl/src/main/res/values-de/translations.xml b/features/securebackup/impl/src/main/res/values-de/translations.xml index 97422cc9cf..3c6dd95b8e 100644 --- a/features/securebackup/impl/src/main/res/values-de/translations.xml +++ b/features/securebackup/impl/src/main/res/values-de/translations.xml @@ -12,7 +12,7 @@ "Wiederherstellungsschlüssel eingeben" "Dein Schlüssel ist derzeit nicht synchronisiert." "Wiederherstellung einrichten" - "Erhalte Zugriff auf deine verschlüsselten Nachrichten, wenn du alle deine Geräte verlierst oder von %1$s überall abgemeldet bist." + "Erhalten Sie Zugriff auf Ihre verschlüsselten Nachrichten, wenn Sie all Ihre Geräte verlieren oder von %1$s überall abgemeldet sind." "Öffne " "%1$s" @@ -20,7 +20,7 @@ "Desktop-Gerät" "Melde dich erneut bei deinem Konto an" - "Wenn du aufgefordert wirst dein Gerät zu verifizieren, wähle \"%1$s\"." + "Wenn Sie aufgefordert werden, Ihr Gerät zu verifizieren, wählen Sie \"%1$s\"" "Alles zurücksetzen" "Folge den Anweisungen, um einen neuen Wiederherstellungsschlüssel zu erstellen" @@ -35,18 +35,18 @@ "Zurücksetzen fortsetzen" "Deine Kontodaten, Kontakte, Einstellungen und die Liste der Chats bleiben erhalten" - "Du verlierst alle deine bisherigen Nachrichten sofern sie nicht auf einem anderen Gerät vorliegen" - "Du musst alle deine bestehenden Geräte und Kontakte erneut verifizieren." + "Sie verlieren jeglichen Nachrichtenverlauf, der nur auf dem Server gespeichert ist" + "Sie müssen dann alle Ihre vorhandenen Geräte und Kontakte erneut verifizieren" "Setzen Sie Ihre Identität nur dann zurück, wenn Sie keinen Zugriff auf ein anderes Ihrer angemeldeten Geräte und auch Ihren Wiederherstellungsschlüssel verloren haben." - "Sie können es nicht bestätigen? Dann müssen Sie Ihre Identität zurücksetzen." + "Bestätigung unmöglich? Dann müssen Sie Ihre Identität zurücksetzen." "Ausschalten" - "Du verlierst deine verschlüsselten Nachrichten, wenn du auf allen Geräten abgemeldet bist." - "Bist du sicher, dass du das Backup deaktivieren willst?" - "Wenn du das Backup deaktivierst, wird dein aktuelles Schlüssel Backup für die Verschlüsselung entfernt und andere Sicherheitsfunktionen werden deaktiviert. Das bedeutet:" + "Sie verlieren Ihre verschlüsselten Nachrichten, wenn Sie von allen Ihren Geräten abgemeldet sind." + "Sind Sie sicher, dass Sie das Backup deaktivieren möchten?" + "Mit dem Löschen des Schlüsselspeichers werden Ihre kryptografische Identität und Ihre Nachrichtenschlüssel vom Server entfernt und die folgenden Sicherheitsfunktionen werden deaktiviert:" "Keinen Nachrichtenverlauf für verschlüsselte Nachrichten auf neuen Geräten." - "Verlust des Zugriffs auf Deine verschlüsselten Nachrichten, wenn Du Dich überall von %1$s abmeldest" - "Bist du sicher, dass du das Backup deaktivieren willst?" - "Hier kannst Du einen neuen Wiederherstellungsschlüssel erstellen. Nachdem Du einen neuen Wiederherstellungsschlüssel erstellt hast, funktioniert dein alter Schlüssel nicht mehr." + "Sie verlieren den Zugriff auf Ihre verschlüsselten Nachrichten, wenn Sie von %1$s überall abgemeldet sind" + "Möchten Sie die Schlüsselspeicherung wirklich deaktivieren und entfernen?" + "Falls Sie Ihren alten Wiederherstellungsschlüssel verloren haben, erstellen Sie einen neuen. Danach funktioniert Ihr alter Schlüssel nicht mehr." "Wiederherstellungsschlüssel erstellen" "Geben Sie dies an niemanden weiter!" "Wiederherstellungsschlüssel geändert" @@ -61,7 +61,7 @@ "Falscher Wiederherstellungsschlüssel" "Dies funktioniert auch mit einem Sicherheitsschlüssel oder Sicherheitsphrase." "Eingeben…" - "Hast du deinen Wiederherstellungschlüssel vergessen?" + "Wiederherstellungschlüssel vergessen?" "Wiederherstellungsschlüssel bestätigt" "Geben Sie Ihren Wiederherstellungsschlüssel ein" "Wiederherstellungsschlüssel kopiert" @@ -70,18 +70,18 @@ "Schreiben Sie Ihren Wiederherstellungsschlüssel in eine verschlüsselte Datei, oder in einem Passwort-Manager oder in einem Safe. " "Tippe, um den Wiederherstellungsschlüssel zu kopieren" "Speichere deinen Wiederherstellungsschlüssel" - "Nach diesem Schritt kannst du nicht mehr auf deinen neuen Wiederherstellungsschlüssel zugreifen." - "Hast du deinen Wiederherstellungsschlüssel gespeichert?" - "Dein Chat-Backup ist durch einen Wiederherstellungsschlüssel geschützt. Wenn du nach der Einrichtung einen neuen Wiederherstellungsschlüssel brauchst, kannst du ihn über die Option \"Wiederherstellungsschlüssel ändern\" neu erstellen." + "Nach diesem Schritt können Sie nicht mehr auf Ihren neuen Wiederherstellungsschlüssel zugreifen." + "Haben Sie Ihren Wiederherstellungsschlüssel gespeichert?" + "Ihr Schlüsselbackup ist durch einen Wiederherstellungsschlüssel geschützt. Wenn Sie nach der Installation einen neuen Wiederherstellungsschlüssel benötigen, können Sie einen neuen kreiern, indem Sie „Wiederherstellungsschlüssel erstellen“ auswählen." "Wiederherstellungsschlüssel erstellen" "Geben Sie dies an niemanden weiter!" "Einrichtung der Wiederherstellung erfolgreich" "Wiederherstellung einrichten" "Ja, zurücksetzen" "Das Zurücksetzen kann nicht rückgängig gemacht werden." - "Bist du sicher, dass du deine Identität zurücksetzen möchtest?" + "Möchten Sie Ihre kryptografische Identität wirklich zurücksetzen?" "Es ist ein unbekannter Fehler aufgetreten. Bitte überprüfe das Passwort deines Kontos und versuche es erneut." "Eingeben…" - "Bestätige, dass du deine Identität zurücksetzen möchtest." + "Bestätigen Sie, dass Sie Ihre Identität zurücksetzen möchten." "Gib dein Passwort ein, um fortzufahren" diff --git a/features/signedout/impl/src/main/res/values-de/translations.xml b/features/signedout/impl/src/main/res/values-de/translations.xml index 08e0305f8e..4b631a7020 100644 --- a/features/signedout/impl/src/main/res/values-de/translations.xml +++ b/features/signedout/impl/src/main/res/values-de/translations.xml @@ -1,8 +1,8 @@ - "Du hast dein Passwort in einer anderen Sitzung geändert" - "Du hast die Sitzung aus einer anderen Sitzung gelöscht" + "Sie haben Ihr Passwort in einer anderen Sitzung geändert" + "Sie haben diese Sitzung aus einer anderen Sitzung gelöscht" "Der Administrator deines Servers hat deinen Zugang ungültig gemacht" - "Möglicherweise wurdest du aus einem der unten aufgeführten Gründe abgemeldet. Bitte melde dich erneut an, um %s weiter zu nutzen." - "Du bist abgemeldet" + "Möglicherweise wurden Sie aus einem der unten aufgeführten Gründe abgemeldet. Bitte melden Sie erneut an, um %s weiter zu nutzen." + "Sie sind abgemeldet" diff --git a/features/userprofile/shared/src/main/res/values-de/translations.xml b/features/userprofile/shared/src/main/res/values-de/translations.xml index 00b3070480..b1c791af37 100644 --- a/features/userprofile/shared/src/main/res/values-de/translations.xml +++ b/features/userprofile/shared/src/main/res/values-de/translations.xml @@ -13,7 +13,7 @@ "Blockierung aufheben" "Der Nutzer kann dir wieder Nachrichten senden & alle Nachrichten des Nutzers werden wieder angezeigt." "Blockierung aufheben" - "Verwenden Sie die Web-App, um diesen Benutzer zu verifizieren." + "Verwenden Sie die Web-App, um diesen Nutzer zu verifizieren." "Überprüfen Sie %1$s" "Beim Versuch, einen Chat zu starten, ist ein Fehler aufgetreten" diff --git a/features/verifysession/impl/src/main/res/values-de/translations.xml b/features/verifysession/impl/src/main/res/values-de/translations.xml index 30979188e7..5f47ad673e 100644 --- a/features/verifysession/impl/src/main/res/values-de/translations.xml +++ b/features/verifysession/impl/src/main/res/values-de/translations.xml @@ -1,12 +1,12 @@ - "Sie können es nicht bestätigen?" + "Bestätigung unmöglich?" "Erstelle einen neuen Wiederherstellungsschlüssel" "Verifiziere dieses Gerät, um sicheres Messaging einzurichten." - "Bestätige, dass du es bist" + "Bestätigen Sie Ihre Identität" "Ein anderes Gerät verwenden" "Wiederherstellungsschlüssel verwenden" - "Du kannst nun verschlüsselte Nachrichten lesen oder versenden." + "Sie können jetzt verschlüsselte Nachrichten lesen und versenden. Ihre Chatpartner vertrauen nun diesem Gerät auch." "Gerät verifiziert" "Ein anderes Gerät verwenden" "Bitte warten bis das andere Gerät bereit ist." diff --git a/libraries/eventformatter/impl/src/main/res/values-de/translations.xml b/libraries/eventformatter/impl/src/main/res/values-de/translations.xml index be08a872ab..7069bf6b3f 100644 --- a/libraries/eventformatter/impl/src/main/res/values-de/translations.xml +++ b/libraries/eventformatter/impl/src/main/res/values-de/translations.xml @@ -19,8 +19,8 @@ "Sie haben den Raum-Avatar entfernt" "%1$s hat %2$s gesperrt" "Sie haben %1$s gesperrt" - "Sie haben gesperrt %1$s: %2$s" - "%1$s verboten %2$s: %3$s" + "Sie haben %1$s gesperrt: %2$s" + "%1$s sperrte %2$s: %3$s" "%1$s hat den Raum erstellt" "Sie erstellten den Chatroom" "%1$s hat %2$s eingeladen" @@ -46,13 +46,13 @@ "%1$s hat den Raum-Namen entfernt" "Sie haben den Raumnamen entfernt" "%1$s hat keine Änderungen vorgenommen" - "Du hast keine Änderungen vorgenommen" + "Sie haben keine Änderungen vorgenommen" "%1$s hat die fixierten Nachrichten geändert" - "Du hast die fixierten Nachrichten geändert" + "Sie haben die angehefteten Nachrichten geändert." "%1$s fixierte eine Nachricht" - "Du hast eine Nachricht fixiert" + "Sie haben eine Nachricht angeheftet." "%1$s löste eine Nachricht" - "Du hast eine Nachricht gelöst" + "Sie haben eine angeheftete Nachricht entfernt." "%1$s lehnte die Einladung ab" "Sie lehnten die Einladung ab" "%1$s hat %2$s entfernt" diff --git a/libraries/permissions/api/src/main/res/values-de/translations.xml b/libraries/permissions/api/src/main/res/values-de/translations.xml index 32fc69fff9..09c149ddb5 100644 --- a/libraries/permissions/api/src/main/res/values-de/translations.xml +++ b/libraries/permissions/api/src/main/res/values-de/translations.xml @@ -1,7 +1,7 @@ - "Damit die Anwendung die Kamera verwenden kann, erteile bitte die Erlaubnis in den Systemeinstellungen." + "Damit die Anwendung die Kamera verwenden kann, erteilen Sie bitte die Erlaubnis in den Systemeinstellungen." "Bitte erteile die Erlaubnis in den Systemeinstellungen." - "Damit die Anwendung das Mikrofon verwenden kann, erteile bitte die Erlaubnis in den Systemeinstellungen." + "Damit die Anwendung das Mikrofon verwenden kann, erteilen Sie bitte die Erlaubnis in den Systemeinstellungen." "Damit Benachrichtigungen angezeigt werden können, gewähren Sie der App bitte die Erlaubnis in den Systemeinstellungen." diff --git a/libraries/permissions/impl/src/main/res/values-de/translations.xml b/libraries/permissions/impl/src/main/res/values-de/translations.xml index a0ff0ff417..180a05f740 100644 --- a/libraries/permissions/impl/src/main/res/values-de/translations.xml +++ b/libraries/permissions/impl/src/main/res/values-de/translations.xml @@ -1,5 +1,5 @@ - "Stelle sicher, dass die Anwendung Benachrichtigungen anzeigen kann." + "Prüfe, dass die Anwendung Benachrichtigungen anzeigen kann." "Berechtigungen überprüfen" diff --git a/libraries/push/impl/src/main/res/values-de/translations.xml b/libraries/push/impl/src/main/res/values-de/translations.xml index 5cdd04cd3e..9e344fb62d 100644 --- a/libraries/push/impl/src/main/res/values-de/translations.xml +++ b/libraries/push/impl/src/main/res/values-de/translations.xml @@ -55,17 +55,17 @@ "Google-Dienste" "Keine gültigen Google Play-Dienste gefunden. Benachrichtigungen funktionieren möglicherweise nicht richtig." "Ermittele den Namen des aktuellen Anbieters." - "Kein Push-Anbieter ausgewählt." - "Aktueller Push-Anbieter:%1$s." - "Aktueller Push-Anbieter" - "Stelle sicher, dass die Anwendung mindestens einen Push-Anbieter hat." - "Keine Push-Anbieter gefunden." + "Kein Pushanbieter ausgewählt." + "Aktueller Pushanbieter: %1$s." + "Aktueller Pushanbieter" + "Stellen Sie sicher, dass die Anwendung mindestens einen Pushanbieter unterstützt." + "Keine Unterstützung für Pushanbieter gefunden." "%1$d Push-Anbieter gefunden: %2$s" "%1$d Push-Anbieter gefunden: %2$s" - "Die Anwendung wurde mit Unterstützung für Folgendes erstellt: %1$s" - "Push-Anbieter erkennen" + "Die Anwendung bietet Unterstützung für: %1$s" + "Unterstützung für Pushanbieter" "Prüfe, ob die Anwendung Benachrichtigungen anzeigen kann." "Die Benachrichtigung wurde nicht angeklickt." "Die Benachrichtigung kann nicht angezeigt werden." diff --git a/libraries/textcomposer/impl/src/main/res/values-de/translations.xml b/libraries/textcomposer/impl/src/main/res/values-de/translations.xml index 3aaf904065..e33c36e38e 100644 --- a/libraries/textcomposer/impl/src/main/res/values-de/translations.xml +++ b/libraries/textcomposer/impl/src/main/res/values-de/translations.xml @@ -4,7 +4,7 @@ "Aufzählungsliste umschalten" "Formatierungsoptionen schließen" "Codeblock umschalten" - "Optionale Bildunterschrift…" + "Bildunterschrift hinzufügen" "Verschlüsselte Nachricht…" "Nachricht…" "Unverschlüsselte Nachricht" diff --git a/libraries/troubleshoot/impl/src/main/res/values-de/translations.xml b/libraries/troubleshoot/impl/src/main/res/values-de/translations.xml index 15707886d2..88a99f0f66 100644 --- a/libraries/troubleshoot/impl/src/main/res/values-de/translations.xml +++ b/libraries/troubleshoot/impl/src/main/res/values-de/translations.xml @@ -4,9 +4,9 @@ "Tests durchführen" "Tests erneut durchführen" "Einige Tests sind fehlgeschlagen. Bitte überprüfe die Details." - "Führe die Tests durch, um Probleme zu erkennen, die dazu führen können, dass sich die Benachrichtigungen nicht wie erwartet verhalten." - "Versuche das Problem zu beheben" + "Führen Sie Tests durch, um Probleme in Ihren Einstellungen zu erkennen, die zu fehlerhaften Benachrichtigungen führen könnten." + "Problem beheben" "Alle Tests wurden erfolgreich bestanden." - "Fehlerbehebung für Benachrichtigungen" - "Einige Tests erfordern deine Aufmerksamkeit. Bitte überprüfe die Details." + "Beheben Sie die Fehler bei Benachrichtigungen" + "Einige Tests erfordern Ihre Aufmerksamkeit. Bitte überprüfen Sie die Angaben." diff --git a/libraries/ui-strings/src/main/res/values-cy/translations.xml b/libraries/ui-strings/src/main/res/values-cy/translations.xml index 865c51f741..691ad643f4 100644 --- a/libraries/ui-strings/src/main/res/values-cy/translations.xml +++ b/libraries/ui-strings/src/main/res/values-cy/translations.xml @@ -5,9 +5,9 @@ "%1$d nodau wedi eu cynnig" "%1$d nod wedi ei gynnig" - "%1$d nod wedi ei gynnig" - "%1$d nod wedi ei gynnig" - "%1$d nod wedi ei gynnig" + "%1$d nod wedi eu cynnig" + "%1$d nod wedi eu cynnig" + "%1$d nod wedi eu cynnig" "%1$d nod wedi eu cynnig" "Cuddio cyfrinair" @@ -428,7 +428,7 @@ Ydych chi\'n siŵr eich bod am barhau?" "cy" "cy" "Nid yw negeseuon hanesyddol ar gael ar y ddyfais hon" - "Mae angen i chi wirio\'r ddyfais hon ar gyfer mynediad i negeseuon hanesyddol" + "Mae angen i chi wirio\'r ddyfais hon i gael mynediad at negeseuon hanesyddol" "Does gennych chi ddim mynediad i\'r neges hon" "Methu dadgryptio\'r neges" "Cafodd y neges hon ei rhwystro naill ai oherwydd nad ydych wedi ddilysu\'ch dyfais neu oherwydd bod angen i\'r anfonwr ddilysu\'ch hunaniaeth chi." diff --git a/libraries/ui-strings/src/main/res/values-de/translations.xml b/libraries/ui-strings/src/main/res/values-de/translations.xml index 0e483c85e4..05084459a9 100644 --- a/libraries/ui-strings/src/main/res/values-de/translations.xml +++ b/libraries/ui-strings/src/main/res/values-de/translations.xml @@ -42,7 +42,7 @@ "Zurück" "Anruf" "Abbrechen" - "Jetzt abbrechen" + "Vorerst abbrechen" "Foto auswählen" "Löschen" "Schließen" @@ -58,7 +58,7 @@ "Erstellen" "Raum erstellen" "Deaktivieren" - "Benutzerkonto deaktivieren" + "Nutzerkonto deaktivieren" "Ablehnen" "Ablehnen und blockieren" "Umfrage löschen" @@ -134,11 +134,11 @@ "Für Optionen tippen" "Erneut versuchen" "Lösen" - "Im Chatverlauf anzeigen" + "Im Nachrichtenverlauf anzeigen" "Quellcode anzeigen" "Ja" "Ja, versuchen Sie es noch einmal" - "Dein Server unterstützt jetzt ein neues, schnelleres Protokoll. Melde dich ab und melde dich wieder an, um zu aktualisieren. Wenn du das jetzt tust, vermeidest du eine erzwungene Abmeldung, wenn das alte Protokoll später entfernt wird." + "Ihr Server unterstützt jetzt ein neues, schnelleres Protokoll. Melden Sie sich ab und wieder an, um die Verbindung zu aktualisieren. Wenn Sie das jetzt tun, vermeiden Sie eine erzwungene Abmeldung, wenn das alte Protokoll später entfernt wird." "Aktualisierung verfügbar" "Über" "Nutzungsrichtlinie" @@ -167,14 +167,14 @@ "Herunterladen" "(bearbeitet)" "Bearbeitung" - "Bearbeitung der Bildunterschrift" + "Bildunterschrift bearbeiten" "* %1$s %2$s" "Leere Datei" "Verschlüsselung" "Verschlüsselung aktiviert" "PIN eingeben" "Fehler" - "Es ist ein Fehler aufgetreten, du erhältst möglicherweise keine Benachrichtigungen für neue Nachrichten. Bitte behebe das Problem mit den Benachrichtigungen in den Einstellungen. + "Es ist ein Fehler aufgetreten. Sie erhalten eventuell keine Benachrichtigungen für neue Nachrichten. Bitte diagnostizieren Sie das Benachrichtigungsproblem in den Einstellungen. Grund: %1$s." "Alle" @@ -226,7 +226,7 @@ Grund: %1$s." "Fixiert" "Bitte überprüfen Sie Ihre Internetverbindung" "Bitte warten…" - "Bist du sicher, dass du diese Umfrage beenden möchtest?" + "Sind Sie sicher, dass Sie diese Umfrage beenden möchten?" "Umfrage: %1$s" "Stimmen insgesamt: %1$s" "Ergebnisse werden nach Ende der Umfrage angezeigt" @@ -279,7 +279,7 @@ Grund: %1$s." "Worum geht es in diesem Raum?" "Entschlüsselung nicht möglich" "Von einem ungesicherten Gerät gesendet" - "Du hast kein Recht diese Nachricht zu lesen." + "Sie haben keinen Zugriff auf diese Nachricht" "Die verifizierte Identität des Senders hat sich geändert" "Einladungen konnten nicht an einen oder mehrere Benutzer gesendet werden." "Einladung(en) konnte(n) nicht gesendet werden" @@ -316,7 +316,7 @@ Möchten Sie wirklich fortfahren?" "Fehler" "Erfolg" "Warnung" - "Deine Änderungen wurden nicht gespeichert. Bist du sicher, dass du zurückgehen willst?" + "Ihre Änderungen wurden nicht gespeichert. Sind Sie sicher, dass Sie zurückgehen wollen?" "Änderungen speichern?" "Dein Homeserver muss aktualisiert werden, um den Matrix Authentication Services und die Erstellung von Konten zu unterstützen." "Fehler beim Erstellen des Permalinks" @@ -346,15 +346,20 @@ Möchten Sie wirklich fortfahren?" "Mitglied entfernen und sperren" "Sperren" "Sie können dem Raum nicht mehr beitreten, selbst wenn sie eingeladen werden." - "Bist du sicher, dass du dieses Mitglied sperren möchtest?" + "Möchten Sie diesen Nutzer wirklich sperren?" "%1$s wird gesperrt." "Entfernen" "Sie können diesen Raum wieder betreten, wenn sie eingeladen werden." "Möchten Sie dieses Mitglied wirklich entfernen?" - "Benutzerinformationen anzeigen" + "Nutzerprofil anzeigen" "Mitglied entfernen" - "Mitglied entfernen und den erneuten Beitritt sperren?" + "Mitglied entfernen und für die Zukunft sperren?" "%1$s wird entfernt." + "Sperre für diesen Chatroom aufheben" + "Sperre aufheben" + "Sie könnten den Chatroom wieder betreten, wenn sie wieder eingeladen würden." + "Möchten Sie die Sperre dieses Mitglieds wirklich aufheben?" + "Sperre für %1$s aufheben" "Medienauswahl fehlgeschlagen, bitte versuche es erneut." "Bildunterschriften sind für Nutzer älterer Apps möglicherweise nicht sichtbar." "Fehler beim Verarbeiten des hochgeladenen Mediums. Bitte versuche es erneut." @@ -366,13 +371,13 @@ Möchten Sie wirklich fortfahren?" "%1$d fixierte Nachrichten" "Fixierte Nachrichten" - "Du wirst jetzt zu deinem %1$s Konto geleitet, um deine Identität zurückzusetzen. Danach wirst du zur App zurückgebracht." - "Kannst du das nicht bestätigen? Gehe zu deinem Konto, um deine Identität zurückzusetzen." + "Sie werden jetzt zu Ihrem %1$s Konto geleitet, um Ihre Identität zurückzusetzen. Danach werden Sie zur App zurückgebracht." + "Bestätigung unmöglich? Gehen Sie zu Ihrem Konto, um Ihre Identität zurückzusetzen." "Verifizierung zurückziehen und senden" - "Du kannst deine Verifizierung zurückziehen und diese Nachricht trotzdem senden, oder du kannst sie vorerst abbrechen und es später noch einmal versuchen, nachdem du %1$s erneut verifiziert hast." + "Sie können Ihre Verifizierung widerrufen und diese Nachricht trotzdem senden. Oder Sie brechen vorerst ab und versuchen es noch einmal, nachdem Sie %1$s erneut verifiziert haben." "Ihre Nachricht wurde nicht gesendet, da die verifizierte Identität von %1$s zurückgesetzt wurde" "Nachricht trotzdem senden" - "%1$s verwendet wenigstens ein nicht verifiziertes Gerät. Du kannst die Nachricht trotzdem verschicken, oder vorerst abbrechen und später erneut versuchen, nachdem %2$s alle Geräte verifiziert hat." + "%1$s verwendet mindestens ein nicht verifiziertes Gerät. Sie können die Nachricht trotzdem verschicken, oder Sie können vorerst abbrechen und es später erneut versuchen, nachdem %2$s alle Geräte verifiziert hat." "Deine Nachricht wurde nicht gesendet, weil %1$s nicht alle Geräte verifiziert hat" "Mindestens eines Ihrer Geräte ist nicht verifiziert worden. Sie können die Nachricht trotzdem senden, oder den Vorgang zunächst abbrechen und es später erneut versuchen, nachdem Sie alle Ihrer Geräte verifiziert haben." "Ihre Nachricht wurde nicht geschickt, da Sie eines oder mehrere Ihrer Geräte nicht verifiziert haben." @@ -392,13 +397,13 @@ Möchten Sie wirklich fortfahren?" "In OpenStreetMap öffnen" "Diesen Standort teilen" "Nachricht nicht gesendet, weil sich die verifizierte Identität von %1$s geändert hat." - "Nachricht wurde nicht gesendet, weil %1$s nicht alle Geräte verifiziert hat" + "Die Nachricht wurde nicht gesendet, weil %1$s nicht alle Geräte verifiziert hat." "Die Nachricht wurde nicht gesendet, weil Sie eines oder mehrere Ihrer Geräte nicht verifiziert haben." "Standort" "Version: %1$s (%2$s)" "en" "Der Nachrichtenverlauf ist auf diesem Gerät nicht verfügbar" - "Sie müssen dieses Gerät verifizieren, um auf den Nachrichtenverlauf zugreifen zu können" + "Für den Zugriff auf den kompletten Nachrichtenverlauf müssen Sie dieses Gerät verifizieren" "Sie haben keinen Zugriff auf diese Nachricht" "Nachricht kann nicht entschlüsselt werden" "Diese Nachricht wurde entweder blockiert, weil Ihr Gerät nicht verifiziert ist oder weil der Absender Ihre Identität überprüfen muss." diff --git a/screenshots/de/appnav.loggedin_LoggedInView_Day_2_de.png b/screenshots/de/appnav.loggedin_LoggedInView_Day_2_de.png index 0feeb9dc02..ce6fe49129 100644 --- a/screenshots/de/appnav.loggedin_LoggedInView_Day_2_de.png +++ b/screenshots/de/appnav.loggedin_LoggedInView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:87420abab71cb7bc0bdd018e18425e9c3d1813059563023af0bf49648258bc7c -size 43627 +oid sha256:99724a37f99aa3a1e89a4ece346c4f9dd6851535315de913ff7cb2d19e382444 +size 43216 diff --git a/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewDark_2_de.png b/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewDark_2_de.png index 45cb018e70..ce4ace450f 100644 --- a/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewDark_2_de.png +++ b/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewDark_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:255f5f7b25c8bd2460eca7d9acb46d5636e7d6b984d7fcd3d8e1321909682786 -size 63191 +oid sha256:95b4f1c1931cda1075740a4d85ec65144494195e866dd9f6731180e7901313ce +size 63156 diff --git a/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewDark_3_de.png b/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewDark_3_de.png index 7e692237e9..3d9d868013 100644 --- a/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewDark_3_de.png +++ b/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewDark_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3aadf29a54c5bed1d98f310b4a0bbcd231fe02f4d93bd1a21834bf564c181c69 -size 63301 +oid sha256:1ea98f6f83764fba04aeb2027da015c18c3a9a3061ddba81d0851960ce2c35de +size 63713 diff --git a/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewDark_4_de.png b/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewDark_4_de.png index 953f2be73a..090247cb6c 100644 --- a/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewDark_4_de.png +++ b/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewDark_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:64cc8989b37f610daaf2cbf08e1f964e0a0f151c049f84a288c931e187a36149 -size 63202 +oid sha256:57df40244063bf4e0f7055a32ffcedc1dded8501f35da9fd22f531a475c32c4c +size 63897 diff --git a/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewDark_5_de.png b/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewDark_5_de.png index aabb153b2f..ffd478c101 100644 --- a/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewDark_5_de.png +++ b/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewDark_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a737fb343eba8c22c5686406a7d89dc47907895edff06a5912f87cf03b6fe102 -size 62680 +oid sha256:6cae2c64edc738f54d41c96131a7c2a64f7c53f1bad4ed73672b921ce9eddfbb +size 63128 diff --git a/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewLight_2_de.png b/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewLight_2_de.png index 8abaa95e65..bbb18fc8fb 100644 --- a/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewLight_2_de.png +++ b/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewLight_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4d651f1ce452283c09d2b3b2e7f075e96e35ef878eef641072636b2f453f6850 -size 64694 +oid sha256:57ddf4a6fcb6586e9d7e43574f7b832542bf43e7337355d1a1653f05b98fe130 +size 64657 diff --git a/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewLight_3_de.png b/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewLight_3_de.png index 3dd7c1f334..3b9d09cd88 100644 --- a/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewLight_3_de.png +++ b/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewLight_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:45606e3d5806dc6fcd86df1406a955a0778c4f7629fcba8dfdf878c539f509d9 -size 65488 +oid sha256:dff63fd5eeda1bcc89432edecaf0c0b446a88b0acae7851a079c44d4f1f8d340 +size 66009 diff --git a/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewLight_4_de.png b/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewLight_4_de.png index 2e67fcfdf9..80d285c5eb 100644 --- a/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewLight_4_de.png +++ b/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewLight_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8185ffe05f8f720191e31ab768a40f305ed1713006a13ce695b4c090d4bdbc5c -size 65402 +oid sha256:4dca087949a1b4374be7464b97f200addee8633d4aaa769a523a193aa5536932 +size 66176 diff --git a/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewLight_5_de.png b/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewLight_5_de.png index 7701b3a6c9..0c6ee311c5 100644 --- a/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewLight_5_de.png +++ b/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewLight_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ffd5e28b08d7526d31bc8214cc250ea3f5cc8af699886f128b83e858dc425e81 -size 64827 +oid sha256:453f0f19a42aaf92e11f9f0a3fe18a8f63371d3c4f816c6a7c81af094523fd7e +size 65264 diff --git a/screenshots/de/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_0_de.png b/screenshots/de/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_0_de.png index 1e4fe2bd31..0eaaf469bb 100644 --- a/screenshots/de/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_0_de.png +++ b/screenshots/de/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:508b822db1bd460155aa83aa7b728b6be52f741204436e8424c4c188eba43976 -size 39027 +oid sha256:7f504c27591945241b3ed522cdb73701ee06d1f270e20812fe0c1cc7ca34befa +size 38341 diff --git a/screenshots/de/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_1_de.png b/screenshots/de/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_1_de.png index 86f1d0a570..1e5e3b3760 100644 --- a/screenshots/de/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_1_de.png +++ b/screenshots/de/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7d309986d3f518bbcb80c2361261a32d81249f392750955bcd3baeb98a50bef8 -size 32335 +oid sha256:e1383b923b65dbf64e06b2ba8b4f6b342cc955000813b2131e8d0afedde891c1 +size 31598 diff --git a/screenshots/de/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_2_de.png b/screenshots/de/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_2_de.png index 5855954f9c..4d97b8f26f 100644 --- a/screenshots/de/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_2_de.png +++ b/screenshots/de/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:239b9d664c83e01bb630322c6ec1b8403412160234659f1af7e32fc2d5d21223 -size 45093 +oid sha256:2f90840c466e9fab81a98b03fe603ce3c660bdf8321f5cb7df358035ba9fce79 +size 44419 diff --git a/screenshots/de/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_3_de.png b/screenshots/de/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_3_de.png index 98b4077074..350221a32f 100644 --- a/screenshots/de/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_3_de.png +++ b/screenshots/de/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e42efc9372642593772918785b6f0ca7bf6877ecfe9987eef15f8727c958df17 -size 38732 +oid sha256:7496ae74e51150486e96a50c30cb143af89d2944f6ef86aa95193703a4889e9d +size 38034 diff --git a/screenshots/de/features.invite.impl.acceptdecline_AcceptDeclineInviteView_Day_2_de.png b/screenshots/de/features.invite.impl.acceptdecline_AcceptDeclineInviteView_Day_2_de.png index 3887eb7e48..397d0bbf4e 100644 --- a/screenshots/de/features.invite.impl.acceptdecline_AcceptDeclineInviteView_Day_2_de.png +++ b/screenshots/de/features.invite.impl.acceptdecline_AcceptDeclineInviteView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d1f88209962378739a4896764dda23426510c5909400007f929c2f80cc084d83 -size 30994 +oid sha256:71125b91c537735f22e804c152024adf23cb5b662ac9a7bd39f8ab609df0cf8c +size 32102 diff --git a/screenshots/de/features.invite.impl.declineandblock_DeclineAndBlockView_Day_0_de.png b/screenshots/de/features.invite.impl.declineandblock_DeclineAndBlockView_Day_0_de.png index 0739a9a88d..faaf39b56b 100644 --- a/screenshots/de/features.invite.impl.declineandblock_DeclineAndBlockView_Day_0_de.png +++ b/screenshots/de/features.invite.impl.declineandblock_DeclineAndBlockView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7700f928691ef54e11aa3252969bff5eb591ef25893474214d870d328b2bb412 -size 41238 +oid sha256:1b23a9bdf58c4de0fff1e1bcca7639bfdd923672840e690799bb2cb234d400cc +size 40149 diff --git a/screenshots/de/features.invite.impl.declineandblock_DeclineAndBlockView_Day_1_de.png b/screenshots/de/features.invite.impl.declineandblock_DeclineAndBlockView_Day_1_de.png index 94b9c3691d..3fdf7c1e23 100644 --- a/screenshots/de/features.invite.impl.declineandblock_DeclineAndBlockView_Day_1_de.png +++ b/screenshots/de/features.invite.impl.declineandblock_DeclineAndBlockView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:389db826df03f939845e83d0561ff0fb0ea35322862c27d23cc01b0bdd9a20c7 -size 46006 +oid sha256:872b1e7f7cd959aea66e6cdbe22619f612f0459b4f2b5e5aa7c396fbd640aa45 +size 44987 diff --git a/screenshots/de/features.invite.impl.declineandblock_DeclineAndBlockView_Day_2_de.png b/screenshots/de/features.invite.impl.declineandblock_DeclineAndBlockView_Day_2_de.png index 559833f3c0..27e4e2dfb9 100644 --- a/screenshots/de/features.invite.impl.declineandblock_DeclineAndBlockView_Day_2_de.png +++ b/screenshots/de/features.invite.impl.declineandblock_DeclineAndBlockView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d3d8e53c056aae2f406fe15e01a56a5e3cbdf1bc12628035eaf6e065aee89795 -size 41413 +oid sha256:a377a17d91956a645b96e426f0c5220ea39c28b1e62bb45a32451e6bdedbd343 +size 40344 diff --git a/screenshots/de/features.invite.impl.declineandblock_DeclineAndBlockView_Day_3_de.png b/screenshots/de/features.invite.impl.declineandblock_DeclineAndBlockView_Day_3_de.png index 35c0ac9f4d..dff5220be7 100644 --- a/screenshots/de/features.invite.impl.declineandblock_DeclineAndBlockView_Day_3_de.png +++ b/screenshots/de/features.invite.impl.declineandblock_DeclineAndBlockView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:59c1d1bc54a5acaa043edb8a5318e0413acd2d985435e2aa70a2cb99c36044e7 -size 36146 +oid sha256:96f8d48a72eda29ac87b3aabdb92fa6d620520ce2e1df42b428aed9984df33c7 +size 35141 diff --git a/screenshots/de/features.invite.impl.declineandblock_DeclineAndBlockView_Day_4_de.png b/screenshots/de/features.invite.impl.declineandblock_DeclineAndBlockView_Day_4_de.png index f4a131071c..f1ad659d15 100644 --- a/screenshots/de/features.invite.impl.declineandblock_DeclineAndBlockView_Day_4_de.png +++ b/screenshots/de/features.invite.impl.declineandblock_DeclineAndBlockView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6926d3a40d8aa88617557d608a2d0c619c177fc11f601a54f810ecf4634b59b8 -size 40211 +oid sha256:9662120fe0a7596d0804df8d585311c55ba13eb2be0e37baecbe872c20274039 +size 39273 diff --git a/screenshots/de/features.joinroom.impl_JoinRoomView_Day_13_de.png b/screenshots/de/features.joinroom.impl_JoinRoomView_Day_13_de.png index ea116aefe9..c77391fe87 100644 --- a/screenshots/de/features.joinroom.impl_JoinRoomView_Day_13_de.png +++ b/screenshots/de/features.joinroom.impl_JoinRoomView_Day_13_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:838d35f2f0f066a3f9d7fab0f0dcf206c061b3b181c1ef5168a13ae8a61add3d -size 34827 +oid sha256:e2f99bc7839aae2d19d389cc642405e4bc8475b2ccb771540e7182576d986160 +size 33413 diff --git a/screenshots/de/features.joinroom.impl_JoinRoomView_Day_14_de.png b/screenshots/de/features.joinroom.impl_JoinRoomView_Day_14_de.png index 64c6fecfcb..b9f0cf17e6 100644 --- a/screenshots/de/features.joinroom.impl_JoinRoomView_Day_14_de.png +++ b/screenshots/de/features.joinroom.impl_JoinRoomView_Day_14_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9f91934bed9fcd2fbee19ad1905ae4e6ebd4d54fb6228f19635ff9d0272f6c93 -size 31595 +oid sha256:ee45f1cac90a7f5004cbe5763cef5c6760c4a2f95524ed4a0b2b925369dbe40e +size 33050 diff --git a/screenshots/de/features.joinroom.impl_JoinRoomView_Day_15_de.png b/screenshots/de/features.joinroom.impl_JoinRoomView_Day_15_de.png index 6cab840095..de0a6b5b2f 100644 --- a/screenshots/de/features.joinroom.impl_JoinRoomView_Day_15_de.png +++ b/screenshots/de/features.joinroom.impl_JoinRoomView_Day_15_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2a2fb97a52537c3a56319adaea18697195750d2af162c3c9e3e935cb50d36f80 -size 41302 +oid sha256:0789f3a8606aaac930c111f060bf55d1e1fbe96831013e4e57614d41a07f8f17 +size 39940 diff --git a/screenshots/de/features.joinroom.impl_JoinRoomView_Day_4_de.png b/screenshots/de/features.joinroom.impl_JoinRoomView_Day_4_de.png index efdb2157d5..bbcd6ae81a 100644 --- a/screenshots/de/features.joinroom.impl_JoinRoomView_Day_4_de.png +++ b/screenshots/de/features.joinroom.impl_JoinRoomView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0d45debb93be80232691547aa1cd3fd8cd4f60ce56864325ccefa7a7e28f75f5 -size 47878 +oid sha256:bf9f8daa72408ea1a859c3baf4a1c83c765822f24d5527c390c186c9f5465613 +size 47625 diff --git a/screenshots/de/features.joinroom.impl_JoinRoomView_Day_9_de.png b/screenshots/de/features.joinroom.impl_JoinRoomView_Day_9_de.png index 5c8f515821..13c700e638 100644 --- a/screenshots/de/features.joinroom.impl_JoinRoomView_Day_9_de.png +++ b/screenshots/de/features.joinroom.impl_JoinRoomView_Day_9_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:16f7dbc7fba02c10ae6479078eaf4cbe6fc4cde5fbb6b5da1e0343e0dde29774 -size 35629 +oid sha256:ff7b93b639ed41344553337bdae929c7d60e6150a899e62ec9b0c2eff5ddbc1a +size 35962 diff --git a/screenshots/de/features.lockscreen.impl.settings_LockScreenSettingsView_Day_2_de.png b/screenshots/de/features.lockscreen.impl.settings_LockScreenSettingsView_Day_2_de.png index f5840db3aa..86013cc1b1 100644 --- a/screenshots/de/features.lockscreen.impl.settings_LockScreenSettingsView_Day_2_de.png +++ b/screenshots/de/features.lockscreen.impl.settings_LockScreenSettingsView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6f648b1f60734adf407091fcad439b65fe683c556e06c78c5fd191e5a2e3456a -size 32825 +oid sha256:21cb68b954f19d773ce54e6be85b4edb7dc286dfb058b202affcb0b501d12a2b +size 33398 diff --git a/screenshots/de/features.lockscreen.impl.setup.pin_SetupPinView_Day_0_de.png b/screenshots/de/features.lockscreen.impl.setup.pin_SetupPinView_Day_0_de.png index 8c1bd562d7..88b37ebb3c 100644 --- a/screenshots/de/features.lockscreen.impl.setup.pin_SetupPinView_Day_0_de.png +++ b/screenshots/de/features.lockscreen.impl.setup.pin_SetupPinView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:076fe2d88c7afe7c1ac91788364ded08127273e5331f3cb2d2ba37a24e7b5918 -size 34091 +oid sha256:ef1ac61e5c921218a27ef5811c926de59fecda7c8db4be1dca9aee7bf73c6f44 +size 33754 diff --git a/screenshots/de/features.lockscreen.impl.setup.pin_SetupPinView_Day_1_de.png b/screenshots/de/features.lockscreen.impl.setup.pin_SetupPinView_Day_1_de.png index 6db7860e49..8a261e3320 100644 --- a/screenshots/de/features.lockscreen.impl.setup.pin_SetupPinView_Day_1_de.png +++ b/screenshots/de/features.lockscreen.impl.setup.pin_SetupPinView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b1d586b1cd87cc5865771977a08f21b6106da7135e9a82b4c301792be6daeccb -size 33687 +oid sha256:99905c6fdf1d85d5af348176c85bf143f226e3d61f09f96d0a199679d338dbc7 +size 33352 diff --git a/screenshots/de/features.lockscreen.impl.setup.pin_SetupPinView_Day_2_de.png b/screenshots/de/features.lockscreen.impl.setup.pin_SetupPinView_Day_2_de.png index 28bd9d2b60..533bb69adc 100644 --- a/screenshots/de/features.lockscreen.impl.setup.pin_SetupPinView_Day_2_de.png +++ b/screenshots/de/features.lockscreen.impl.setup.pin_SetupPinView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c9d917131c2f9ad42a96b7569c87a6c14d2cdc12284d04653187141ad3513b37 -size 35366 +oid sha256:fdcacf07d6d8b6c89739354bd1f7b231dae39ce238a6099833dc08b4780e2ee2 +size 35018 diff --git a/screenshots/de/features.lockscreen.impl.setup.pin_SetupPinView_Day_3_de.png b/screenshots/de/features.lockscreen.impl.setup.pin_SetupPinView_Day_3_de.png index 52870d9994..24f6c63bf7 100644 --- a/screenshots/de/features.lockscreen.impl.setup.pin_SetupPinView_Day_3_de.png +++ b/screenshots/de/features.lockscreen.impl.setup.pin_SetupPinView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:21b1d43a5460043e4a86921c2c9a66ddf45bf5cf585e5de8d5ecaebeb13ca532 -size 28011 +oid sha256:ace58903f69fef8c157d0ea8f864bbec297ea14aaaa090be1e75e1bf4aa58ea0 +size 28125 diff --git a/screenshots/de/features.lockscreen.impl.setup.pin_SetupPinView_Day_4_de.png b/screenshots/de/features.lockscreen.impl.setup.pin_SetupPinView_Day_4_de.png index 10197875c9..df1d692960 100644 --- a/screenshots/de/features.lockscreen.impl.setup.pin_SetupPinView_Day_4_de.png +++ b/screenshots/de/features.lockscreen.impl.setup.pin_SetupPinView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6997445fbfd440adc8cc29f8ef1248c96b02fd41795937017f34178e37ec9350 -size 32669 +oid sha256:ae21ad8437c46eef19986104ccc950bb04dad44b6f22b95739932ea7c03a8772 +size 33104 diff --git a/screenshots/de/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_0_de.png b/screenshots/de/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_0_de.png index 643246b571..56aefe6c4e 100644 --- a/screenshots/de/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_0_de.png +++ b/screenshots/de/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:46fb6d2489f700cf9b9f5cac84a1c9458db61a0b42a16f95cd06742fc3c8c8bd -size 22367 +oid sha256:638a472779c1c5db8cd668c8a7b73374d5c2b182f6396bb0287b0c72ecfa86df +size 21995 diff --git a/screenshots/de/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_1_de.png b/screenshots/de/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_1_de.png index e04a544867..c11765e301 100644 --- a/screenshots/de/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_1_de.png +++ b/screenshots/de/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:aa361ff8a25d99e59403ae6851378be7b518eee418b291d2ff13822bf5cfe256 -size 21988 +oid sha256:aadb48568349f7b4d500fc47ca5ab3cac0e1742c9a2c1b43b51f77a2750b77c6 +size 21616 diff --git a/screenshots/de/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_2_de.png b/screenshots/de/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_2_de.png index 4dca8d9422..666330431d 100644 --- a/screenshots/de/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_2_de.png +++ b/screenshots/de/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:57d0f1dfad2ccc12cc0dd91bd3b071daa59920678a02bc0df68aac31c889bbd9 -size 23338 +oid sha256:152deb117714059b4d7140f0e9b2b07bf1b632f5bcae34b25ec3dda8d82dfc9a +size 23604 diff --git a/screenshots/de/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_3_de.png b/screenshots/de/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_3_de.png index 45b8c36229..017224d6fc 100644 --- a/screenshots/de/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_3_de.png +++ b/screenshots/de/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d5fbb53f0bc8eb1173dd189829a8ae0f72b0a95dfeff9b3a095c15d1a4f87d67 -size 37212 +oid sha256:86f1e725b3142ba5ad5fdbe7bb136b4ec34cf9d1c3ce8f6dac92c9590b521f6b +size 38246 diff --git a/screenshots/de/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_4_de.png b/screenshots/de/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_4_de.png index ae360c7fa9..2c19d79818 100644 --- a/screenshots/de/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_4_de.png +++ b/screenshots/de/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:055fe972d560a5d02c35d1287db3b563f285e62d5430d1297c7349fd01a771a1 -size 19740 +oid sha256:3e5740e9892cbf9bf28fa49d75825c7559dcfca7bceda7766242cbc37afc8a0d +size 19334 diff --git a/screenshots/de/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_5_de.png b/screenshots/de/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_5_de.png index 2deebcdf9f..52cd0908cb 100644 --- a/screenshots/de/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_5_de.png +++ b/screenshots/de/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5a07f64c8968617e689d9b51e19d2794e38a4bde5dac431f7b4e0b03d366b46e -size 33939 +oid sha256:126a58f5b49fd171b25d0f734183a3fb11767e63156d9de91b31d49a69f3d7c8 +size 35055 diff --git a/screenshots/de/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_6_de.png b/screenshots/de/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_6_de.png index 42c11ab4f3..e5f57d529e 100644 --- a/screenshots/de/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_6_de.png +++ b/screenshots/de/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_6_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:de8eacd46b2ad632d5606b2290de3e42f193a22af982b2c8ce8d50089920886a -size 23294 +oid sha256:e1ad29d369b685fca84f7f3ab30cee1dfbb45c90112eaaaa3be71cdd98d13f74 +size 23073 diff --git a/screenshots/de/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_7_de.png b/screenshots/de/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_7_de.png index 47df8c3d7c..4dd8a7ccec 100644 --- a/screenshots/de/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_7_de.png +++ b/screenshots/de/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_7_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5a117d86c2d1d58dfa45603bb68350026ba68aecfb67e0e367c1d2778c7cbd91 -size 24910 +oid sha256:582e7c3c8832c71c035680d6e1e8b7a4491e752af572a9b5b5f83f03a894016c +size 24694 diff --git a/screenshots/de/features.lockscreen.impl.unlock_PinUnlockView_Day_0_de.png b/screenshots/de/features.lockscreen.impl.unlock_PinUnlockView_Day_0_de.png index fdf3dcd335..239643f929 100644 --- a/screenshots/de/features.lockscreen.impl.unlock_PinUnlockView_Day_0_de.png +++ b/screenshots/de/features.lockscreen.impl.unlock_PinUnlockView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a50b0e898207cb10ebc3a9af07bbc9930ba331852ad80f83301b284ef7cbd6b1 -size 38075 +oid sha256:17429dd340f2acc19b924fa4637de7ba5ff7e02b19a37227f9b9dedf90a156d7 +size 37703 diff --git a/screenshots/de/features.lockscreen.impl.unlock_PinUnlockView_Day_1_de.png b/screenshots/de/features.lockscreen.impl.unlock_PinUnlockView_Day_1_de.png index e082164d55..3eaf876542 100644 --- a/screenshots/de/features.lockscreen.impl.unlock_PinUnlockView_Day_1_de.png +++ b/screenshots/de/features.lockscreen.impl.unlock_PinUnlockView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b145de12e3bcfcfd26ded7b417ede28b1649f9db2371aefd300f0f54c7970756 -size 38466 +oid sha256:8533efa18842ebaa91dbbc17b1f5f7d3abc30348c851104ad7ee26ee34a88685 +size 38091 diff --git a/screenshots/de/features.lockscreen.impl.unlock_PinUnlockView_Day_2_de.png b/screenshots/de/features.lockscreen.impl.unlock_PinUnlockView_Day_2_de.png index b54327fc03..7537132f40 100644 --- a/screenshots/de/features.lockscreen.impl.unlock_PinUnlockView_Day_2_de.png +++ b/screenshots/de/features.lockscreen.impl.unlock_PinUnlockView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:15a0fdeaf44d44ab33bd38e2d489ea38c627b611fc8a424f77e73f9d7469f75d -size 39052 +oid sha256:fdd6f6a7f9b880efaf632f8f2e96e94d7e35568059645f0e2cdb0fb4a8f0894f +size 39320 diff --git a/screenshots/de/features.lockscreen.impl.unlock_PinUnlockView_Day_3_de.png b/screenshots/de/features.lockscreen.impl.unlock_PinUnlockView_Day_3_de.png index e798d561c9..03b949a7ab 100644 --- a/screenshots/de/features.lockscreen.impl.unlock_PinUnlockView_Day_3_de.png +++ b/screenshots/de/features.lockscreen.impl.unlock_PinUnlockView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:722db4de79c96a370a656dfebe7360e513e00c9803ea4918be8792dbb6adbf3d -size 44021 +oid sha256:5cf69aa0aa4f04cd19454f100f09387977d5704aff611f5efad171f43df35514 +size 45047 diff --git a/screenshots/de/features.lockscreen.impl.unlock_PinUnlockView_Day_4_de.png b/screenshots/de/features.lockscreen.impl.unlock_PinUnlockView_Day_4_de.png index 9f9138e361..0c068f8b39 100644 --- a/screenshots/de/features.lockscreen.impl.unlock_PinUnlockView_Day_4_de.png +++ b/screenshots/de/features.lockscreen.impl.unlock_PinUnlockView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d8ab1982b4103c7a1857de0dfe69fa287959fabc601d8e560d7fbfe9036e1a07 -size 35459 +oid sha256:0b7006d31bd4e7bcf2341d6f75588bcc67cd71066805e1cd438d0438ffbdedf8 +size 35084 diff --git a/screenshots/de/features.lockscreen.impl.unlock_PinUnlockView_Day_5_de.png b/screenshots/de/features.lockscreen.impl.unlock_PinUnlockView_Day_5_de.png index 2eba0ee5a3..595d513201 100644 --- a/screenshots/de/features.lockscreen.impl.unlock_PinUnlockView_Day_5_de.png +++ b/screenshots/de/features.lockscreen.impl.unlock_PinUnlockView_Day_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ea821f4c401f32394e187408743e7ccdee6f2f7652655b512e286924461170f5 -size 40896 +oid sha256:2780f174c627ba4db56116de788f7ddcfcd4d54032eb64a480813b593ee53499 +size 42000 diff --git a/screenshots/de/features.lockscreen.impl.unlock_PinUnlockView_Day_6_de.png b/screenshots/de/features.lockscreen.impl.unlock_PinUnlockView_Day_6_de.png index c155c0b070..47e6cef2dd 100644 --- a/screenshots/de/features.lockscreen.impl.unlock_PinUnlockView_Day_6_de.png +++ b/screenshots/de/features.lockscreen.impl.unlock_PinUnlockView_Day_6_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dfea84a3b32a0a53ba9b1c8867feee64143a6a50faedb5993c9a3c595da69bfa -size 31684 +oid sha256:1fcc0eef9284384f7cf5308d8dc029951e1b5b76e036cb1606cb8e77918e7c7a +size 31448 diff --git a/screenshots/de/features.lockscreen.impl.unlock_PinUnlockView_Day_7_de.png b/screenshots/de/features.lockscreen.impl.unlock_PinUnlockView_Day_7_de.png index 9f8ea5e78d..cdd24d6dc0 100644 --- a/screenshots/de/features.lockscreen.impl.unlock_PinUnlockView_Day_7_de.png +++ b/screenshots/de/features.lockscreen.impl.unlock_PinUnlockView_Day_7_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b9866fe8d24f434ae93b86303999ebdfcfec6ddd7a5f3025794324d69ddd6d1e -size 32073 +oid sha256:8820f3eb78e9a96ca92dc2628645ac1eb3608323fdf09eaf21eeb13a4b08afc1 +size 31841 diff --git a/screenshots/de/features.login.impl.changeserver_ChangeServerView_Day_3_de.png b/screenshots/de/features.login.impl.changeserver_ChangeServerView_Day_3_de.png index c32c889c0e..bfdff4d875 100644 --- a/screenshots/de/features.login.impl.changeserver_ChangeServerView_Day_3_de.png +++ b/screenshots/de/features.login.impl.changeserver_ChangeServerView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fa0dacbff9fa4f066c429840bd3752228fc4ee2de2c34c3b2048b1822390a534 -size 16908 +oid sha256:b8111853ec8798d779d367564b87b8002939d592d8b91e7c49acb33411e0079e +size 16935 diff --git a/screenshots/de/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_0_de.png b/screenshots/de/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_0_de.png index 9383553294..9f8da6438e 100644 --- a/screenshots/de/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_0_de.png +++ b/screenshots/de/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e6265e682e30da31b8e73687990a05e5aa1bf7b124cee017cad7ea4126270a9b -size 22494 +oid sha256:b09b12dfa2cfbd159197cabd487c85cd7c3cf6905323f4b12b741181a69485a3 +size 22359 diff --git a/screenshots/de/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_1_de.png b/screenshots/de/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_1_de.png index 6a7aab5469..78fef3d846 100644 --- a/screenshots/de/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_1_de.png +++ b/screenshots/de/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7129c322a45517e31359e322d2e7efe9d3fb37ddf2f855d00b68fb75dee181f4 -size 23419 +oid sha256:38679151a42d89b6b414be876a9801ac3ad024dde1f8c0a5b7d8dfb158c609f6 +size 23275 diff --git a/screenshots/de/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_2_de.png b/screenshots/de/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_2_de.png index 9c199a1755..b04bbdedba 100644 --- a/screenshots/de/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_2_de.png +++ b/screenshots/de/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7e1343dce4e1741ca47eae2946f5e45725a46786a2e4a0c89422513667991d35 -size 24020 +oid sha256:165fdefa29f1cc198be80d2badf174b4d355a3e10260440409052e06c74a4733 +size 23878 diff --git a/screenshots/de/features.login.impl.screens.onboarding_OnBoardingView_Day_5_de.png b/screenshots/de/features.login.impl.screens.onboarding_OnBoardingView_Day_5_de.png index ed53bf331c..2a81bcf949 100644 --- a/screenshots/de/features.login.impl.screens.onboarding_OnBoardingView_Day_5_de.png +++ b/screenshots/de/features.login.impl.screens.onboarding_OnBoardingView_Day_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:de633e14295a7e2946c6e130a511d6497514c5f1eb17fa344fe8ac7382e37492 -size 316881 +oid sha256:b48da126979d45bb8ee9cf1dfba84e6db4069ff81f1a8f60a8cda76a4669a8ad +size 317509 diff --git a/screenshots/de/features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_0_de.png b/screenshots/de/features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_0_de.png index e245c43366..0f192907ae 100644 --- a/screenshots/de/features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_0_de.png +++ b/screenshots/de/features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0b119bfab0ff5f15ed4ab0e94a455f2e0ff5f23e023bb5f7ecfec5f4b3c6e872 -size 38315 +oid sha256:9e14cd38e873e0dc15fcd63d27a6a5616b784ad66ac19586ccb18dfe5e090689 +size 40013 diff --git a/screenshots/de/features.login.impl.screens.qrcode.intro_QrCodeIntroView_Day_1_de.png b/screenshots/de/features.login.impl.screens.qrcode.intro_QrCodeIntroView_Day_1_de.png index 5843417ba8..09e8c7b0e4 100644 --- a/screenshots/de/features.login.impl.screens.qrcode.intro_QrCodeIntroView_Day_1_de.png +++ b/screenshots/de/features.login.impl.screens.qrcode.intro_QrCodeIntroView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d160b78841fef72ed9e4f787f87f59f4c1cd67eab50758f0492a4a14ff033445 -size 50444 +oid sha256:94c7b1e0a1b12767c51845ac3173b9b15b07e5cdc81921bd85f2588a7c48f372 +size 50420 diff --git a/screenshots/de/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_4_de.png b/screenshots/de/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_4_de.png index b7e7c46205..59b4cf56ff 100644 --- a/screenshots/de/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_4_de.png +++ b/screenshots/de/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:04613db591c22de64d6b1078f5a7df7dcb8758bc212272b4f886e1f345eda0ed -size 32416 +oid sha256:5a9fca64040da057e303f4c9da0c19c52a0cb9ffc4bf1e29d2b0e8f151322e96 +size 34494 diff --git a/screenshots/de/features.logout.impl_AccountDeactivationView_Day_0_de.png b/screenshots/de/features.logout.impl_AccountDeactivationView_Day_0_de.png index 76611a016b..90b11b4f58 100644 --- a/screenshots/de/features.logout.impl_AccountDeactivationView_Day_0_de.png +++ b/screenshots/de/features.logout.impl_AccountDeactivationView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:09f8aca63c3570d6d3f6f50ee1fd53beaee6e07e793a93b8a79e20bcc0600712 -size 89301 +oid sha256:4bc16e4e009ae97d00af6f4be052d8cdfe8386ba4ab4a21514f678790efacb54 +size 88891 diff --git a/screenshots/de/features.logout.impl_AccountDeactivationView_Day_1_de.png b/screenshots/de/features.logout.impl_AccountDeactivationView_Day_1_de.png index 1b7e785ea0..77419df88f 100644 --- a/screenshots/de/features.logout.impl_AccountDeactivationView_Day_1_de.png +++ b/screenshots/de/features.logout.impl_AccountDeactivationView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5ebd42fd6a5b803f79586ee59adbc2200a0edeb6c08ae7634491f536131feeae -size 88982 +oid sha256:64acf68b27f73fd5e1cf6e597d45e01a3dec2310b2fcd95763e3cfecd95a8a9c +size 88583 diff --git a/screenshots/de/features.logout.impl_AccountDeactivationView_Day_2_de.png b/screenshots/de/features.logout.impl_AccountDeactivationView_Day_2_de.png index 1c2e80220e..aca5c3130d 100644 --- a/screenshots/de/features.logout.impl_AccountDeactivationView_Day_2_de.png +++ b/screenshots/de/features.logout.impl_AccountDeactivationView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c5c2c6aedd65bad1d80e33a6a2bc426860dc1eb29d52672412845dc8a8beb5e7 -size 82042 +oid sha256:bcbc25ce921a6af6472554a224ba954b362aa44ff90bbdaf8d63abef9ea6b97a +size 81406 diff --git a/screenshots/de/features.logout.impl_AccountDeactivationView_Day_3_de.png b/screenshots/de/features.logout.impl_AccountDeactivationView_Day_3_de.png index eb1cf522d8..2f573dc6c5 100644 --- a/screenshots/de/features.logout.impl_AccountDeactivationView_Day_3_de.png +++ b/screenshots/de/features.logout.impl_AccountDeactivationView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7b6875d4657e7b3fdb5a45b7e89075e328aed5c28536f0507d04d993dfa93888 -size 69852 +oid sha256:44a343cd67650e5ae933e61585d72ac0ce9ce31c9e6e7e8e2928ed4971f978fe +size 69612 diff --git a/screenshots/de/features.logout.impl_AccountDeactivationView_Day_4_de.png b/screenshots/de/features.logout.impl_AccountDeactivationView_Day_4_de.png index 33216b46a7..f5fe67ab9e 100644 --- a/screenshots/de/features.logout.impl_AccountDeactivationView_Day_4_de.png +++ b/screenshots/de/features.logout.impl_AccountDeactivationView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5b5704a90cf715b612f1e2e99a415e2e9c486bf70de8b8d66e7dc22625fdc82c -size 62038 +oid sha256:3077ab213a99896eae4d603cb794d67af213d8020def029beed780d5a3cb9e3c +size 61811 diff --git a/screenshots/de/features.logout.impl_LogoutView_Day_10_de.png b/screenshots/de/features.logout.impl_LogoutView_Day_10_de.png index cbcb036ca2..ec0dc76659 100644 --- a/screenshots/de/features.logout.impl_LogoutView_Day_10_de.png +++ b/screenshots/de/features.logout.impl_LogoutView_Day_10_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b983aa110832fa68fb926691ea5c93ba24f2b61172512fd57cef025f114dc62b -size 30890 +oid sha256:26a9e3186147de9067b74b6bce4381a5ac5104e96176a7ba8aaa532811b0d9e2 +size 31565 diff --git a/screenshots/de/features.logout.impl_LogoutView_Day_11_de.png b/screenshots/de/features.logout.impl_LogoutView_Day_11_de.png index 80f47848ad..be526c4fa7 100644 --- a/screenshots/de/features.logout.impl_LogoutView_Day_11_de.png +++ b/screenshots/de/features.logout.impl_LogoutView_Day_11_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:88aecea55e528ba3ce0caea86aa76aec136391498c81d4628a335f543cb47d74 -size 36489 +oid sha256:bc234d4ad6e3bc60da2716334e00045be60e277e3cef077b4cdc70ef1b193f0f +size 37188 diff --git a/screenshots/de/features.logout.impl_LogoutView_Day_1_de.png b/screenshots/de/features.logout.impl_LogoutView_Day_1_de.png index dc11c2ebcc..0e27dd3f68 100644 --- a/screenshots/de/features.logout.impl_LogoutView_Day_1_de.png +++ b/screenshots/de/features.logout.impl_LogoutView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:05aecda8908e191cb0a1abb805831ca4825791ef7740379a2e93562aea376208 -size 47875 +oid sha256:260f4c11c53e15524747a40df3d828ba92c6273758da13e6f4d6f63ce000ea5d +size 47947 diff --git a/screenshots/de/features.logout.impl_LogoutView_Day_2_de.png b/screenshots/de/features.logout.impl_LogoutView_Day_2_de.png index b7de16d5ab..2b1bcf46fa 100644 --- a/screenshots/de/features.logout.impl_LogoutView_Day_2_de.png +++ b/screenshots/de/features.logout.impl_LogoutView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:66d722eb1d47a8732f2dd29b327857712a03378ac0384d6a1622524b6b351fe1 -size 32484 +oid sha256:4d4a3c53907ff8e38894c173db674369b5f3910431a48e65e5ed94f271feced9 +size 33181 diff --git a/screenshots/de/features.logout.impl_LogoutView_Day_3_de.png b/screenshots/de/features.logout.impl_LogoutView_Day_3_de.png index dc11c2ebcc..0e27dd3f68 100644 --- a/screenshots/de/features.logout.impl_LogoutView_Day_3_de.png +++ b/screenshots/de/features.logout.impl_LogoutView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:05aecda8908e191cb0a1abb805831ca4825791ef7740379a2e93562aea376208 -size 47875 +oid sha256:260f4c11c53e15524747a40df3d828ba92c6273758da13e6f4d6f63ce000ea5d +size 47947 diff --git a/screenshots/de/features.logout.impl_LogoutView_Day_7_de.png b/screenshots/de/features.logout.impl_LogoutView_Day_7_de.png index eaf0469a48..18fa34fee6 100644 --- a/screenshots/de/features.logout.impl_LogoutView_Day_7_de.png +++ b/screenshots/de/features.logout.impl_LogoutView_Day_7_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5a35e436223144a198176422ecd158cafdc7bdc8ea00b60cef6a1792fb9b2b61 -size 43987 +oid sha256:647c94e0029ec0a98b9daae7a890281561a401bf66c9ead776afe852fe731b07 +size 44024 diff --git a/screenshots/de/features.logout.impl_LogoutView_Day_8_de.png b/screenshots/de/features.logout.impl_LogoutView_Day_8_de.png index cabe2bfae4..611026e8c6 100644 --- a/screenshots/de/features.logout.impl_LogoutView_Day_8_de.png +++ b/screenshots/de/features.logout.impl_LogoutView_Day_8_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0f861977f578d3fcc32f9c52b96d337ec7e35565948dd6eac7f5d2d79224ef99 -size 42448 +oid sha256:84721d8b72792d917253a09d94e704268c9f83f4a2d538d282f109227e72c5af +size 42250 diff --git a/screenshots/de/features.logout.impl_LogoutView_Day_9_de.png b/screenshots/de/features.logout.impl_LogoutView_Day_9_de.png index a9e401199d..2c482f08e5 100644 --- a/screenshots/de/features.logout.impl_LogoutView_Day_9_de.png +++ b/screenshots/de/features.logout.impl_LogoutView_Day_9_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b0867d18812cc203ab5fe5fb7d862dcd3a21327d2fa6b6bbff923c42850c7c2c -size 40268 +oid sha256:c0eea7215dddad22a8f1244ccef589625e26df3f97f9f68c00c3d8823b084913 +size 42019 diff --git a/screenshots/de/features.messages.impl.actionlist_ActionListViewContent_Day_12_de.png b/screenshots/de/features.messages.impl.actionlist_ActionListViewContent_Day_12_de.png index ecaa06d86d..627e53bdbc 100644 --- a/screenshots/de/features.messages.impl.actionlist_ActionListViewContent_Day_12_de.png +++ b/screenshots/de/features.messages.impl.actionlist_ActionListViewContent_Day_12_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c7d2a84cb6f07080a5d2ca4f44cb77648ddbf3e40e09dcbfaa70cdeee44e0320 -size 54334 +oid sha256:5b2dd0277d3168107fbc66f13a83b8b1775e949916f995eab620982fdbc28f8d +size 54850 diff --git a/screenshots/de/features.messages.impl.attachments.preview_AttachmentsView_0_de.png b/screenshots/de/features.messages.impl.attachments.preview_AttachmentsView_0_de.png index fcea0c555a..dc0fa99f96 100644 --- a/screenshots/de/features.messages.impl.attachments.preview_AttachmentsView_0_de.png +++ b/screenshots/de/features.messages.impl.attachments.preview_AttachmentsView_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:70824a0f5380aa482fcf737f67f0f46d613021f125038f39487f3f663318fd7f -size 396658 +oid sha256:d6feb59d0f97d679a0d5e0ecd9e5c6939b487b829b7a82671db1a6d8403574bb +size 396515 diff --git a/screenshots/de/features.messages.impl.attachments.preview_AttachmentsView_1_de.png b/screenshots/de/features.messages.impl.attachments.preview_AttachmentsView_1_de.png index fcea0c555a..dc0fa99f96 100644 --- a/screenshots/de/features.messages.impl.attachments.preview_AttachmentsView_1_de.png +++ b/screenshots/de/features.messages.impl.attachments.preview_AttachmentsView_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:70824a0f5380aa482fcf737f67f0f46d613021f125038f39487f3f663318fd7f -size 396658 +oid sha256:d6feb59d0f97d679a0d5e0ecd9e5c6939b487b829b7a82671db1a6d8403574bb +size 396515 diff --git a/screenshots/de/features.messages.impl.attachments.preview_AttachmentsView_2_de.png b/screenshots/de/features.messages.impl.attachments.preview_AttachmentsView_2_de.png index 3060ed0d6f..716168a6c3 100644 --- a/screenshots/de/features.messages.impl.attachments.preview_AttachmentsView_2_de.png +++ b/screenshots/de/features.messages.impl.attachments.preview_AttachmentsView_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2b4a1f3ee74f937ec80815b63f75c7eb8c62bcd0d6068bed28a33d695e3ec477 -size 54689 +oid sha256:a6db0a9f5bdb467c1ce39fc8e552753475f8f8b2e77da3bb9ca39f8a1b1a4681 +size 54574 diff --git a/screenshots/de/features.messages.impl.attachments.preview_AttachmentsView_3_de.png b/screenshots/de/features.messages.impl.attachments.preview_AttachmentsView_3_de.png index fcea0c555a..dc0fa99f96 100644 --- a/screenshots/de/features.messages.impl.attachments.preview_AttachmentsView_3_de.png +++ b/screenshots/de/features.messages.impl.attachments.preview_AttachmentsView_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:70824a0f5380aa482fcf737f67f0f46d613021f125038f39487f3f663318fd7f -size 396658 +oid sha256:d6feb59d0f97d679a0d5e0ecd9e5c6939b487b829b7a82671db1a6d8403574bb +size 396515 diff --git a/screenshots/de/features.messages.impl.attachments.preview_AttachmentsView_4_de.png b/screenshots/de/features.messages.impl.attachments.preview_AttachmentsView_4_de.png index 29f76d02be..8eb515be35 100644 --- a/screenshots/de/features.messages.impl.attachments.preview_AttachmentsView_4_de.png +++ b/screenshots/de/features.messages.impl.attachments.preview_AttachmentsView_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a5c9f63405b5454e4140ebf02b4f406bf58120ccdcfde88304c1821775595df7 -size 54658 +oid sha256:9fa4bf73b0d3e48d0e06d939c0b2d9bc824126c116881176d088312b4891d81f +size 54543 diff --git a/screenshots/de/features.messages.impl.attachments.preview_AttachmentsView_5_de.png b/screenshots/de/features.messages.impl.attachments.preview_AttachmentsView_5_de.png index 854d62baf3..689fa4539c 100644 --- a/screenshots/de/features.messages.impl.attachments.preview_AttachmentsView_5_de.png +++ b/screenshots/de/features.messages.impl.attachments.preview_AttachmentsView_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b588163b19a33ed5fa8d44f072ff66385c0b47629dda0b2f27aa188e2ebc94cc -size 55846 +oid sha256:e5e034198ebca17c608365103c0d9b76180d3fd745912b559a0bf210c25ad91c +size 55724 diff --git a/screenshots/de/features.messages.impl.attachments.preview_AttachmentsView_7_de.png b/screenshots/de/features.messages.impl.attachments.preview_AttachmentsView_7_de.png index fcea0c555a..dc0fa99f96 100644 --- a/screenshots/de/features.messages.impl.attachments.preview_AttachmentsView_7_de.png +++ b/screenshots/de/features.messages.impl.attachments.preview_AttachmentsView_7_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:70824a0f5380aa482fcf737f67f0f46d613021f125038f39487f3f663318fd7f -size 396658 +oid sha256:d6feb59d0f97d679a0d5e0ecd9e5c6939b487b829b7a82671db1a6d8403574bb +size 396515 diff --git a/screenshots/de/features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Day_1_de.png b/screenshots/de/features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Day_1_de.png index 08240313b7..eb9c71a724 100644 --- a/screenshots/de/features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Day_1_de.png +++ b/screenshots/de/features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ab884fecce8dbff5b406d47e87ed5ae06430b1acd631d49ac0cc388eefaa4506 -size 63436 +oid sha256:439fcd91d80e7621cb4ab67596d37349f8de9ef40f2362933eaeb4de8e50d473 +size 65849 diff --git a/screenshots/de/features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Day_2_de.png b/screenshots/de/features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Day_2_de.png index 97457f6c23..4fd955ab0e 100644 --- a/screenshots/de/features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Day_2_de.png +++ b/screenshots/de/features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0cefe61188c6cad40a9f9ae28c28e5f7f82cbf40467d8f84fa03e8c96df3a02a -size 67095 +oid sha256:52a994b5aebddd00efeeca7d0add567445cbf881cd19d13f7c608645fe0d4b86 +size 65834 diff --git a/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_1_de.png b/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_1_de.png index bcad14e5e8..3210c0c98f 100644 --- a/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_1_de.png +++ b/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dada966cb08788d2a1394322ab854d3bc6bfe38a190277f59660ccca72bed5f0 -size 11372 +oid sha256:089c2cc89b7606a71c178d330294603b98c754ae95c5c0e1a167ef1450e353ce +size 11620 diff --git a/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_5_de.png b/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_5_de.png index e3ca3e4147..89843596f7 100644 --- a/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_5_de.png +++ b/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:df7ab7936dfe15fc12e74ef06fd1bde9735da7a493ec90e3ea0b310411a30f71 -size 18231 +oid sha256:6ccd7ec64520729366305c2daf46056027757bdf9b581873fd6e1c765d27c721 +size 19784 diff --git a/screenshots/de/features.messages.impl.timeline.components_TimelineItemEventRowUtd_Day_0_de.png b/screenshots/de/features.messages.impl.timeline.components_TimelineItemEventRowUtd_Day_0_de.png index c1f2f42f5f..0653c9bc74 100644 --- a/screenshots/de/features.messages.impl.timeline.components_TimelineItemEventRowUtd_Day_0_de.png +++ b/screenshots/de/features.messages.impl.timeline.components_TimelineItemEventRowUtd_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a45e8eb20c82ba49ff1c0a1343cc62f03e9b3185a9a9fa9baf01e42b20b729bf -size 37991 +oid sha256:842994dcbfe82a3bf6874e2167d717c2a0bbe75c37a3499b82c7856fb4432372 +size 38520 diff --git a/screenshots/de/features.poll.impl.create_CreatePollView_Day_2_de.png b/screenshots/de/features.poll.impl.create_CreatePollView_Day_2_de.png index 84ac297689..c065190f2c 100644 --- a/screenshots/de/features.poll.impl.create_CreatePollView_Day_2_de.png +++ b/screenshots/de/features.poll.impl.create_CreatePollView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ef2cc7834057ec4d90c040b124acfedbc4c874f30a7784f055d2d675ac63b299 -size 42318 +oid sha256:6661c38abe342c607c2d848185a9e005420f91b55b8f0276c99d787a348d2444 +size 42622 diff --git a/screenshots/de/features.poll.impl.create_CreatePollView_Day_7_de.png b/screenshots/de/features.poll.impl.create_CreatePollView_Day_7_de.png index 846e2c168b..f0da4ef493 100644 --- a/screenshots/de/features.poll.impl.create_CreatePollView_Day_7_de.png +++ b/screenshots/de/features.poll.impl.create_CreatePollView_Day_7_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9721889f9690a7567e4e7839935472092c1540cbc860a7629717bfaf9000d922 -size 42565 +oid sha256:fe62e13e9f9ebd24d2f930158fa0985e11f4ebaf974a96d334e26f89afda8e5f +size 40791 diff --git a/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewDark_0_de.png b/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewDark_0_de.png index 7bf5f75cff..62c9543ea0 100644 --- a/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewDark_0_de.png +++ b/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewDark_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7d8aad6c742cb38662158e5ab60e8d1a504145f6220e98930b0ea91c00e99f16 -size 52644 +oid sha256:13606b63d8495af917a26c321ed76d71abdde374b6805d425b87b7d1ec6fca09 +size 53413 diff --git a/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewDark_1_de.png b/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewDark_1_de.png index 4e1be17b0d..1439a1b05a 100644 --- a/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewDark_1_de.png +++ b/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewDark_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f0060d5e8d4474b3e9ce035d443770a71af89d0d007c49de11f45d6d4d74e4fa -size 52505 +oid sha256:31dd452f0fdeeca9c967233c311e89a2f1f9ad971f4491627bfb2dc71cf6e50b +size 53280 diff --git a/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewDark_2_de.png b/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewDark_2_de.png index 8660414f93..45bd10225b 100644 --- a/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewDark_2_de.png +++ b/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewDark_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8a15bb87cf2eda3aa505795bf78cbec46e1851f932cedbda1e2092f8f692a24b -size 52492 +oid sha256:c49e44437d70878a7a556d5c9ffa97d3f05e8087c06adbfb67b5cbd8daa16b0b +size 53260 diff --git a/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewDark_3_de.png b/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewDark_3_de.png index 7a687666e7..ca9163797f 100644 --- a/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewDark_3_de.png +++ b/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewDark_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:558cd55d15952c0d0e095d80b61b95a08efc76f43ffa8adf69a9d668f3cb780b -size 52505 +oid sha256:6ceef44f0b46b4421da80a40af5d2143fe28c886ceb10561f6b5788d93e8d56c +size 53271 diff --git a/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewDark_4_de.png b/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewDark_4_de.png index f6de14342f..c8efa957f1 100644 --- a/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewDark_4_de.png +++ b/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewDark_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cfe40649010c60eb3f3fb04bbd2bae72152b8f70bde259f692e61801ebdd35c9 -size 52416 +oid sha256:d015747828affb18a881a5aa5e386ae6093f1dd1412abec72a3d3f8559b75213 +size 53219 diff --git a/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewDark_5_de.png b/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewDark_5_de.png index 24974923f4..a8934515c7 100644 --- a/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewDark_5_de.png +++ b/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewDark_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b0b1f94666a230180fe79687c760a7328a344a4f0213d171d0caf1b57e121399 -size 52622 +oid sha256:d0342fc12f6b773a74bc3cb7ba0cb1315b855f4c8a8cb7a6173030f3cc82c1d7 +size 53401 diff --git a/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewLight_0_de.png b/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewLight_0_de.png index cbef37ef3a..f8b4c8797c 100644 --- a/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewLight_0_de.png +++ b/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewLight_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6ae0b1eb33269dc606dfe33eb9d216b70f84e96d2b3563e4dd7f189821b11541 -size 54605 +oid sha256:66202c3504557cb9849aa3a9e766d4ed7a040191b99db0aec25f198384b9e64b +size 55597 diff --git a/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewLight_1_de.png b/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewLight_1_de.png index 2702603405..518024d78d 100644 --- a/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewLight_1_de.png +++ b/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewLight_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1245b196a5c10b1344188f879b06cd571772b7e828df6de970ad2d44d22f6cf7 -size 54476 +oid sha256:43b0d62d8560186efae35ebf5231a7b874c229cac972153fd207037e623a32e3 +size 55477 diff --git a/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewLight_2_de.png b/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewLight_2_de.png index cbc6d6655a..1d1ace7a39 100644 --- a/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewLight_2_de.png +++ b/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewLight_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:79ba700bff2b2a33fd667a02b4dabd58096bbc372723134a8dbc3c56c1c13595 -size 54488 +oid sha256:39d8b2935db860e023fa26883ff792de65497852ca7cadc8375548be5822cde3 +size 55486 diff --git a/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewLight_3_de.png b/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewLight_3_de.png index 5c174a44ee..6b882d18b2 100644 --- a/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewLight_3_de.png +++ b/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewLight_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3f9812db8105a346e9142d7a9f1d9b74b5bc16e955c56cb70681519a12bda8f9 -size 54493 +oid sha256:b5bb3c9f74ec80f53921d7212d7835cd8707b9563be76aa35a56f52d5c0a503d +size 55489 diff --git a/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewLight_4_de.png b/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewLight_4_de.png index c8d6ae4c32..d04ce0e88c 100644 --- a/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewLight_4_de.png +++ b/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewLight_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:efe1db98c1538fbe97e9b1a0884383bcc20a47f74e68194af1f90de0dc1fffb2 -size 54356 +oid sha256:dfb18049747451794530cb1a85a3a374ccd034ffdd44ffb3ac063049106eabc6 +size 55372 diff --git a/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewLight_5_de.png b/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewLight_5_de.png index a85328e632..04f2c24088 100644 --- a/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewLight_5_de.png +++ b/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewLight_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a63356d9110c7c61ae2125a830711f22c4e3f2b346e085d16fb60222aaf83c8a -size 54621 +oid sha256:857cb3fbadd27fe715a3e430d273565a6e36504fd3fbef077b896e880b0f21ca +size 55604 diff --git a/screenshots/de/features.preferences.impl.notifications.edit_DefaultNotificationSettingOption_Day_0_de.png b/screenshots/de/features.preferences.impl.notifications.edit_DefaultNotificationSettingOption_Day_0_de.png index fbbf551a92..645d300be8 100644 --- a/screenshots/de/features.preferences.impl.notifications.edit_DefaultNotificationSettingOption_Day_0_de.png +++ b/screenshots/de/features.preferences.impl.notifications.edit_DefaultNotificationSettingOption_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:65229995bf44ef326fdad042a368d79a402b085ab3c8134e9a4a3626c54ed854 -size 41451 +oid sha256:7954629e2be92fb6cb230a772c4e8043566ef2e172038e6df6e1df2aed843717 +size 42099 diff --git a/screenshots/de/features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_4_de.png b/screenshots/de/features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_4_de.png index 0d90d8d958..e5de53bbc4 100644 --- a/screenshots/de/features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_4_de.png +++ b/screenshots/de/features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fc06581eca561009514bba2c947c5d759af9b8cecf4c50cc9224f543e295c47e -size 67919 +oid sha256:3cb10e8db83dfa6a36b3f5e23efe98904135f1b1d043f1244749214a548c4806 +size 68493 diff --git a/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_12_de.png b/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_12_de.png index 615723076f..829ef3f49f 100644 --- a/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_12_de.png +++ b/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_12_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:32819857df03d44296a50c28d19fb60e846165311db6c94e588d1d2700f7bb45 -size 72401 +oid sha256:69b9f48d4a7eeea156f23172be4796c2e695cf237b09351b68574d537c1981f8 +size 74321 diff --git a/screenshots/de/features.preferences.impl.root_PreferencesRootViewDark_0_de.png b/screenshots/de/features.preferences.impl.root_PreferencesRootViewDark_0_de.png index 992975c4f9..56ab3254da 100644 --- a/screenshots/de/features.preferences.impl.root_PreferencesRootViewDark_0_de.png +++ b/screenshots/de/features.preferences.impl.root_PreferencesRootViewDark_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fa46c4f1c496e42527aaf3b14a0d5f93a90ba6e73b7c4404f094794052afc199 -size 39336 +oid sha256:fa9a8c5b045119e98440ab781caad2112298d3c9f415a812da02e6da5e4d7a79 +size 39042 diff --git a/screenshots/de/features.preferences.impl.root_PreferencesRootViewDark_1_de.png b/screenshots/de/features.preferences.impl.root_PreferencesRootViewDark_1_de.png index c4656ef49b..0a0e1fa6e3 100644 --- a/screenshots/de/features.preferences.impl.root_PreferencesRootViewDark_1_de.png +++ b/screenshots/de/features.preferences.impl.root_PreferencesRootViewDark_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fc2be4299847fc6c662e831dd3f4c2c5825e99019167e603d7099c8d12019b63 -size 39074 +oid sha256:6ac064c6ad092caad1035b4d028cdca8f9d74cabe523a46a58746f135fb56cc8 +size 38779 diff --git a/screenshots/de/features.preferences.impl.root_PreferencesRootViewLight_0_de.png b/screenshots/de/features.preferences.impl.root_PreferencesRootViewLight_0_de.png index ae2e0111fc..3170d71794 100644 --- a/screenshots/de/features.preferences.impl.root_PreferencesRootViewLight_0_de.png +++ b/screenshots/de/features.preferences.impl.root_PreferencesRootViewLight_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1f6887d5b72856bce56e4cd098470c7eee7752c77b4fe172d5d85ebfb610acea -size 40393 +oid sha256:ef2e214a067224f7a7d5381f264e8bdf4fda921add8aa9f2871e773728b19c5c +size 40096 diff --git a/screenshots/de/features.preferences.impl.root_PreferencesRootViewLight_1_de.png b/screenshots/de/features.preferences.impl.root_PreferencesRootViewLight_1_de.png index 2ef5848dd0..80dee42a6d 100644 --- a/screenshots/de/features.preferences.impl.root_PreferencesRootViewLight_1_de.png +++ b/screenshots/de/features.preferences.impl.root_PreferencesRootViewLight_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:05e62913e000682d099040a024d12e66e25d477c88cfbbbf31c7da9d2536b1ef -size 40400 +oid sha256:ca1dfbd176b0d820d5b43d3b3af662ffd2c87985a4b018815c7c76baf43c5021 +size 40099 diff --git a/screenshots/de/features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_0_de.png b/screenshots/de/features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_0_de.png index e258401726..6f4be1aa17 100644 --- a/screenshots/de/features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_0_de.png +++ b/screenshots/de/features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6e62fb12ad96d7aacea7c8287e8b1a4efa4fd51130402fad1d59e5b398697e66 -size 19945 +oid sha256:efb039797d56b8a0caba770235a618793ec505702981a1c608237fd7bf582f49 +size 18155 diff --git a/screenshots/de/features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_1_de.png b/screenshots/de/features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_1_de.png index 9161c1ca4b..cc9557a270 100644 --- a/screenshots/de/features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_1_de.png +++ b/screenshots/de/features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d28efe175226cafd37373a41f67480f6f9504d96f06ab71e5a49657a173f684b -size 24395 +oid sha256:00c631e0245b249bef9533f3904441acd1279ee23f5ae0d930283d22035f8f53 +size 22738 diff --git a/screenshots/de/features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_2_de.png b/screenshots/de/features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_2_de.png index dba76e365b..cd7a349d51 100644 --- a/screenshots/de/features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_2_de.png +++ b/screenshots/de/features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0ab3a46a935725d83202a1d1210fbfce8c14d967acc42cf43c91e74a48d93493 -size 30143 +oid sha256:ea5a3696b6d8eaa5674b417944d9110cc85a0e37dd223d0495b259caf414ffec +size 28416 diff --git a/screenshots/de/features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_5_de.png b/screenshots/de/features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_5_de.png index 176b428e12..58218ad823 100644 --- a/screenshots/de/features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_5_de.png +++ b/screenshots/de/features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5eb29f54495febfa05efb8f4e398386ccf0875fcb99270fa9a51ab026a324f7a -size 37099 +oid sha256:3fd3f5cc0b71a34bd10bd9ceffe1f6cfe7f266b0b82fefd93c18df78135ab213 +size 34551 diff --git a/screenshots/de/features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_9_de.png b/screenshots/de/features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_9_de.png index f01a1fe8f3..9fc16502c1 100644 --- a/screenshots/de/features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_9_de.png +++ b/screenshots/de/features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_9_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:244eb76ef937bac78604faa38d8fbbbd1ce9ed7d51cf979f7533f7e23ef95471 -size 28531 +oid sha256:909d70e02e2d76ff69bdbea2f98d891e0bd0257e883aaa7df5a45c2ddde4707b +size 28074 diff --git a/screenshots/de/features.roomdetails.impl.members_RoomMemberListViewBanned_Day_2_de.png b/screenshots/de/features.roomdetails.impl.members_RoomMemberListViewBanned_Day_2_de.png index e50613340c..7ac6f8ca09 100644 --- a/screenshots/de/features.roomdetails.impl.members_RoomMemberListViewBanned_Day_2_de.png +++ b/screenshots/de/features.roomdetails.impl.members_RoomMemberListViewBanned_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bea5fe491eef49d520d53021f3ac2a4184b4b50422be6439f3822200643034ca -size 25558 +oid sha256:7a2963041eda1c927be2d82c11ac738b3f44bf0687f8dbd504bdbda6069ec8cb +size 26246 diff --git a/screenshots/de/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsOption_Day_0_de.png b/screenshots/de/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsOption_Day_0_de.png index 3266b61cca..f7863fc9cb 100644 --- a/screenshots/de/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsOption_Day_0_de.png +++ b/screenshots/de/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsOption_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0ebacb8a43186ce6c49c3a2207dc706d66eab8f0f01a62e585073cff00383b58 -size 35415 +oid sha256:bff8a7beb2b60b0cd089a84c514757d99bdc3eabd672d02fa47aabcb9260a4d6 +size 36108 diff --git a/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_6_de.png b/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_6_de.png index ad6ccc4c98..1f1e640898 100644 --- a/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_6_de.png +++ b/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_6_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:02d1579b6994061a9e397049cd7b446a98c9505dd13d72e159e91902928ea889 -size 64377 +oid sha256:988a20be1ec38f4c4b6360508f6f7d5155fe71adc9f0e7137b297e22cedb2455 +size 64545 diff --git a/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_7_de.png b/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_7_de.png index 859c7c4641..600947a5a3 100644 --- a/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_7_de.png +++ b/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_7_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2c482326554e6872e8aef8cafb0fb5c568ce04749894856bae671b218066555f -size 65834 +oid sha256:9012d60a71a6058057c7877ebf596a85ecabe49601832f80ac9f5a89bd3eee12 +size 67048 diff --git a/screenshots/de/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_6_de.png b/screenshots/de/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_6_de.png index cd9b9606ae..2815f86a89 100644 --- a/screenshots/de/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_6_de.png +++ b/screenshots/de/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_6_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:97969c886d2c25d736b4816bd6c2dde3d95d5372c398a4742f1e32501829641a -size 52348 +oid sha256:4330932d8f3fdf2f5a7d078b3c64c496305fb7e64448b987fb7a6d5330ee6ec8 +size 52487 diff --git a/screenshots/de/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_2_de.png b/screenshots/de/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_2_de.png index 45a4139b58..597368e467 100644 --- a/screenshots/de/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_2_de.png +++ b/screenshots/de/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2813315c750506129d4b266eaf8d21744f67ae2e2abbf288a80744d0b054ff82 -size 63386 +oid sha256:f45396e7dae438b4a1b7cc4884bf2d1bcfe6e43d9ec1593a060bfec074b0cbcf +size 63438 diff --git a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_0_de.png b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_0_de.png index 8633ecc2d8..bff2553eb9 100644 --- a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_0_de.png +++ b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f383344042f1bb7d43d0e3a833a752037027fb0001ebd6cc40ff021d3ba6e46c -size 48565 +oid sha256:4a28c191aabe13caaa2e86577c97f87280b31e9b94d1887308d5e72880235464 +size 51431 diff --git a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_1_de.png b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_1_de.png index 5055643be0..cac4a440b5 100644 --- a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_1_de.png +++ b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7cc757a69788e3eb07e4c87bc2dc1aaf71b5ceac308abf5241b3c96855293d37 -size 71472 +oid sha256:727ba0ef7abe78aae4f299ebbc9a706c8a0a153ef21d2c15b76a7b434353176b +size 68510 diff --git a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_2_de.png b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_2_de.png index fc337bf454..ca7b50f258 100644 --- a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_2_de.png +++ b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:784fac4a85c0d55c442662a7fdc98d98c9f7c1169bbbcab6f7bb89aea1b1209c -size 71604 +oid sha256:3b257faefa1abd9dd521bc70d7539cd9d0837a317e3eb06f6f6a85147b12abf9 +size 68643 diff --git a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_3_de.png b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_3_de.png index aa7bdb9646..af3f1b35de 100644 --- a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_3_de.png +++ b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f75d12955843c54ac735cb0b331f99b759355f40e590eccb3cdc773aed70a81f -size 69637 +oid sha256:825f00224a82b62796968c103be33b3daded002d5bd5367ee95a0535650ec32c +size 67971 diff --git a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_4_de.png b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_4_de.png index 1420e7677f..22aaa59401 100644 --- a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_4_de.png +++ b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:312e50890a21e2a79d39fb768800cccf674628b5b3b66ca05e470063c394a735 -size 71119 +oid sha256:a9acb42aab5048e790bcb2041e0f2cdb18a721b706282b090b5432f7f32e4c51 +size 68168 diff --git a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_5_de.png b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_5_de.png index 7ee9e9d9e4..1597d94b3f 100644 --- a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_5_de.png +++ b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2c00b5f7bce75d364cb46d4cfe1f63bd6a9d003fb3f68e32486bd6f60520ae4f -size 48341 +oid sha256:5e3c39fd5676d85079371ecdf28f8f2351e6a998e7ea0658b5bc20f84c81b313 +size 51192 diff --git a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_6_de.png b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_6_de.png index 7ee9e9d9e4..1597d94b3f 100644 --- a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_6_de.png +++ b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_6_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2c00b5f7bce75d364cb46d4cfe1f63bd6a9d003fb3f68e32486bd6f60520ae4f -size 48341 +oid sha256:5e3c39fd5676d85079371ecdf28f8f2351e6a998e7ea0658b5bc20f84c81b313 +size 51192 diff --git a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_7_de.png b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_7_de.png index 613aff3c94..16f51ec236 100644 --- a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_7_de.png +++ b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_7_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:536fb85bdbc3e2660db78007728f0fc2f7830a0def406cc7214d484285c19fe2 -size 50439 +oid sha256:897a788e5ef08a0b2a52b3e8066022635e297048d3f23e5aaeb38bd3c366a628 +size 54065 diff --git a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_8_de.png b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_8_de.png index 084e63091e..fa8822689f 100644 --- a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_8_de.png +++ b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_8_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a260d5bda02a37ed6b69370d12b4520c6031bb8934f09e46443b062abd71ffbd -size 42447 +oid sha256:a20e2f48614f64654b0dfdf4fb9183afcf8bd901375f209b688655b760408ae0 +size 45243 diff --git a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_0_de.png b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_0_de.png index 68c28f0a01..8d7e6b9c73 100644 --- a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_0_de.png +++ b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bbeda1904ab02151d6a80c32f0e9402327a06dfc4611d1d7d83bb44b52aed864 -size 50596 +oid sha256:14768120dc544c2edd64d17fe169e5f9e361c007b61417f30be7a639c06f2a4f +size 53552 diff --git a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_1_de.png b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_1_de.png index 626117ba58..0f2dcbf0ef 100644 --- a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_1_de.png +++ b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:12c6583a8adcbbe73757d872e29c39c5baab4361424e87a79fff34a9f3dee050 -size 74113 +oid sha256:e25521eed0cdfbe79f59aae942e73527fe7795eee2fa9744422932e87fb63d79 +size 71175 diff --git a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_2_de.png b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_2_de.png index 67a0be42e5..5e95307336 100644 --- a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_2_de.png +++ b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5e1ee6be576030ab071bfbee60b0b6d6f1e81e525e4ba04c84ef7768621be61b -size 74344 +oid sha256:dc7e4d24dace1b44700c07178fb048fe033f4ad0c10de06cea19ffdbe8d0092a +size 71400 diff --git a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_3_de.png b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_3_de.png index 0bec6dfb4a..55073ed0ad 100644 --- a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_3_de.png +++ b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:81949b7dc7f89b0a3941a853a1ce19e1d184a21d4d1c449b7f052277afed2c16 -size 72031 +oid sha256:31dd38ef2609fce774cbbc606ce91c10c735bde3ded73b9bb1643db08ea558cb +size 70349 diff --git a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_4_de.png b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_4_de.png index 39f27fa76b..1706bc1cce 100644 --- a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_4_de.png +++ b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6118f7f47e086bfe78ef529f0f5ed3ca71172c4b43787b04046b6afa1f4e54fa -size 73692 +oid sha256:276f6a59cc9a99bc123b7363e1acd1c88b6998697180ff9a68644f4c0b824516 +size 70759 diff --git a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_5_de.png b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_5_de.png index 2a51f8cb63..bededdd992 100644 --- a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_5_de.png +++ b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b76f848c6cd6cd9a5b06a32c56d36d5c988ee26b75540c5794172bac8bc1a3fd -size 50568 +oid sha256:5830dbf1d4aed28c4614473026820f6803c5b1a9f7a53398fac78dbafa7f4342 +size 53386 diff --git a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_6_de.png b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_6_de.png index 2a51f8cb63..bededdd992 100644 --- a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_6_de.png +++ b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_6_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b76f848c6cd6cd9a5b06a32c56d36d5c988ee26b75540c5794172bac8bc1a3fd -size 50568 +oid sha256:5830dbf1d4aed28c4614473026820f6803c5b1a9f7a53398fac78dbafa7f4342 +size 53386 diff --git a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_7_de.png b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_7_de.png index 45780e9eb1..c8c0723e74 100644 --- a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_7_de.png +++ b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_7_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:025c1831c0817136766324c982006a8a8c075845fdf27557155d06edb24f9bf0 -size 52759 +oid sha256:c8194be0e2575a8a0851c9661aef416bf9020feaf9e6fb1218ecee6597cb6db7 +size 56628 diff --git a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_8_de.png b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_8_de.png index a0b9e5d656..3d21fdc805 100644 --- a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_8_de.png +++ b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_8_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:db1a8f64d38169318cc4cfeaa743693d4aa5749275fbde0e531ba5ddc2752521 -size 43844 +oid sha256:80c3256f801119397d9665c584234d48bf8ef6b20f13967f90f8d031a2c363b4 +size 46742 diff --git a/screenshots/de/features.roomlist.impl.components_FullScreenIntentPermissionBanner_Day_0_de.png b/screenshots/de/features.roomlist.impl.components_FullScreenIntentPermissionBanner_Day_0_de.png index a8dac1b680..73694f2f01 100644 --- a/screenshots/de/features.roomlist.impl.components_FullScreenIntentPermissionBanner_Day_0_de.png +++ b/screenshots/de/features.roomlist.impl.components_FullScreenIntentPermissionBanner_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2b8fc03bb03b0296d2bfde1316c65d7ba1e7c22ffe537fe0f875a18df4222e0f -size 33216 +oid sha256:49d968d7cc5c20e3db5e8917d8ce6322278ed7c2cf71bf27067d51a1ab0f6e78 +size 35146 diff --git a/screenshots/de/features.roomlist.impl.components_RoomListContentView_Day_1_de.png b/screenshots/de/features.roomlist.impl.components_RoomListContentView_Day_1_de.png index f6b9c4fb31..30415e01e0 100644 --- a/screenshots/de/features.roomlist.impl.components_RoomListContentView_Day_1_de.png +++ b/screenshots/de/features.roomlist.impl.components_RoomListContentView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f0a1b94bca7c1f2ed158fc7faef8f7cf4cd8d1b380af1a7a604a47e40dc06ce5 -size 19860 +oid sha256:2edd2e77def7a88f30e1e835e5a3700f80cb6a91c0b854a83b61c67a20c6d29c +size 22234 diff --git a/screenshots/de/features.roomlist.impl.components_RoomListContentView_Day_4_de.png b/screenshots/de/features.roomlist.impl.components_RoomListContentView_Day_4_de.png index a2fb2f9928..c482ab3628 100644 --- a/screenshots/de/features.roomlist.impl.components_RoomListContentView_Day_4_de.png +++ b/screenshots/de/features.roomlist.impl.components_RoomListContentView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:63a544533408997cd21e53f4303b062b2bfc5fc6833210e9e813e54a2b9f6f8a -size 56945 +oid sha256:67e5572f219d8b84c6c652aefc6a07fa056a66c688610939cdeb601974ae04aa +size 55975 diff --git a/screenshots/de/features.roomlist.impl.components_SetUpRecoveryKeyBanner_Day_0_de.png b/screenshots/de/features.roomlist.impl.components_SetUpRecoveryKeyBanner_Day_0_de.png index d4ce6f782d..944e83e717 100644 --- a/screenshots/de/features.roomlist.impl.components_SetUpRecoveryKeyBanner_Day_0_de.png +++ b/screenshots/de/features.roomlist.impl.components_SetUpRecoveryKeyBanner_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6e1d5c3d46e4ec85f10a7c5b9ab5554d7b55f6736e770b95fa69e41b6e5e76d0 -size 39043 +oid sha256:a6a67cf2cff22301277baa89c2d03e23668aa085768c062219db5bfca5f93f6c +size 38111 diff --git a/screenshots/de/features.roomlist.impl_RoomListView_Day_10_de.png b/screenshots/de/features.roomlist.impl_RoomListView_Day_10_de.png index 087f896cf9..7054f6ad42 100644 --- a/screenshots/de/features.roomlist.impl_RoomListView_Day_10_de.png +++ b/screenshots/de/features.roomlist.impl_RoomListView_Day_10_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4a843f0c01ae7da5808d18db90becdb8010eabc96c83504b2b2f2b2471b75756 -size 108806 +oid sha256:f028b80eb5328c941dc919d78776b63460385004f4c9040672f1c2c887f1d4fd +size 107800 diff --git a/screenshots/de/features.securebackup.impl.disable_SecureBackupDisableView_Day_0_de.png b/screenshots/de/features.securebackup.impl.disable_SecureBackupDisableView_Day_0_de.png index 716dd56ae6..fb3d275ea7 100644 --- a/screenshots/de/features.securebackup.impl.disable_SecureBackupDisableView_Day_0_de.png +++ b/screenshots/de/features.securebackup.impl.disable_SecureBackupDisableView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fcb2a88faceb56481b2dd741d55d1986e2de2bcd7c08310e9eb027b3f243c6e6 -size 72980 +oid sha256:e8bc4d690dd194e80f222aa0f80072c8d15fbe0bf74fc70fb8dc0d90a27d18b9 +size 75795 diff --git a/screenshots/de/features.securebackup.impl.disable_SecureBackupDisableView_Day_1_de.png b/screenshots/de/features.securebackup.impl.disable_SecureBackupDisableView_Day_1_de.png index 716dd56ae6..fb3d275ea7 100644 --- a/screenshots/de/features.securebackup.impl.disable_SecureBackupDisableView_Day_1_de.png +++ b/screenshots/de/features.securebackup.impl.disable_SecureBackupDisableView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fcb2a88faceb56481b2dd741d55d1986e2de2bcd7c08310e9eb027b3f243c6e6 -size 72980 +oid sha256:e8bc4d690dd194e80f222aa0f80072c8d15fbe0bf74fc70fb8dc0d90a27d18b9 +size 75795 diff --git a/screenshots/de/features.securebackup.impl.disable_SecureBackupDisableView_Day_2_de.png b/screenshots/de/features.securebackup.impl.disable_SecureBackupDisableView_Day_2_de.png index 7d403ff54a..45efba4987 100644 --- a/screenshots/de/features.securebackup.impl.disable_SecureBackupDisableView_Day_2_de.png +++ b/screenshots/de/features.securebackup.impl.disable_SecureBackupDisableView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f4fe16ac893be2b5fb850bd4aa9f5fae75981af5e3c1197b7f2da60be802e250 -size 73501 +oid sha256:c31627e40bf94976fb4cdcd2fe3809c73b6e922ebba3cda9e2bf03d3ba2bb939 +size 76317 diff --git a/screenshots/de/features.securebackup.impl.disable_SecureBackupDisableView_Day_3_de.png b/screenshots/de/features.securebackup.impl.disable_SecureBackupDisableView_Day_3_de.png index 795146532e..fd97700af2 100644 --- a/screenshots/de/features.securebackup.impl.disable_SecureBackupDisableView_Day_3_de.png +++ b/screenshots/de/features.securebackup.impl.disable_SecureBackupDisableView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1da2069254acdee7b84fc2638e19d10016d6212ee64841b46ec9fa98bd0e2285 -size 43097 +oid sha256:56b13e7d7fb1e8890e97750568e78d4c67d947a3a54d87e5ff5d254394072b2c +size 48664 diff --git a/screenshots/de/features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_0_de.png b/screenshots/de/features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_0_de.png index 0f3a02aa4c..1eebe02c06 100644 --- a/screenshots/de/features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_0_de.png +++ b/screenshots/de/features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4cb93d951059fe8475fad7de479404f294b96ce00d69f1eb12a9dab95ec97e99 -size 30675 +oid sha256:04f58df72ebdcb770b9b9fe6dd003c0e63d49b2b8db532312ffa5b2a1701b3f2 +size 31116 diff --git a/screenshots/de/features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_1_de.png b/screenshots/de/features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_1_de.png index 3920d70522..26afe9811a 100644 --- a/screenshots/de/features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_1_de.png +++ b/screenshots/de/features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cfa5cc8148faf58b95e07fcc04e2de9a30f22422089531f998be235e8a2f435f -size 29688 +oid sha256:31428c1b7058a831ac4ccfdd30425bb459f7d09eca08107656ed18fe1496f1c7 +size 29965 diff --git a/screenshots/de/features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_2_de.png b/screenshots/de/features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_2_de.png index 3920d70522..26afe9811a 100644 --- a/screenshots/de/features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_2_de.png +++ b/screenshots/de/features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cfa5cc8148faf58b95e07fcc04e2de9a30f22422089531f998be235e8a2f435f -size 29688 +oid sha256:31428c1b7058a831ac4ccfdd30425bb459f7d09eca08107656ed18fe1496f1c7 +size 29965 diff --git a/screenshots/de/features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_3_de.png b/screenshots/de/features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_3_de.png index 669df05f8b..0540d995d8 100644 --- a/screenshots/de/features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_3_de.png +++ b/screenshots/de/features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7542fae287f15c804a4132aeed33479e60f31a7589423e937f3f2799a16825ad -size 44610 +oid sha256:ebab59af812c6a4cea61ecf7c73b835c9f47837c84b4e702db5aa6887e5980e3 +size 45092 diff --git a/screenshots/de/features.securebackup.impl.reset.root_ResetIdentityRootView_Day_0_de.png b/screenshots/de/features.securebackup.impl.reset.root_ResetIdentityRootView_Day_0_de.png index a004c751c7..4daeb50e88 100644 --- a/screenshots/de/features.securebackup.impl.reset.root_ResetIdentityRootView_Day_0_de.png +++ b/screenshots/de/features.securebackup.impl.reset.root_ResetIdentityRootView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:59efac70a8c67f1a6fdb867c082f02cca6afa8a68d2bf4af9d814b44ff61d2cb -size 67492 +oid sha256:a94bbe83945a488ce4bf4b753d9b06825bd4e7f18943f8e642562273bdc0a5e9 +size 62927 diff --git a/screenshots/de/features.securebackup.impl.reset.root_ResetIdentityRootView_Day_1_de.png b/screenshots/de/features.securebackup.impl.reset.root_ResetIdentityRootView_Day_1_de.png index e8d61a1688..43aac0230d 100644 --- a/screenshots/de/features.securebackup.impl.reset.root_ResetIdentityRootView_Day_1_de.png +++ b/screenshots/de/features.securebackup.impl.reset.root_ResetIdentityRootView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:29238d2ab9fd0a7c4f6093ad4affa512f6323fabed9d30b85aab035a136cb609 -size 47849 +oid sha256:5d097c185b721aecced3cf9d6d49a70f8b3cd09130fef0061059034ce149cc26 +size 47988 diff --git a/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_14_de.png b/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_14_de.png index 8670a3339f..e21a6c0b86 100644 --- a/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_14_de.png +++ b/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_14_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:953284ce01229f35b10299ed63200cbb3f43d85cc9a44508651f79696feb3883 -size 68248 +oid sha256:07bbdf3556e48016e4dc011b603ee9361f9488f375b76c9e3fc58d9cbcaaf8d9 +size 68285 diff --git a/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_0_de.png b/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_0_de.png index d43b4e134d..7862c07b34 100644 --- a/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_0_de.png +++ b/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:81ff6d4972dc606df2f61e147d002ce83213eac2591ea79450e81199e857a396 -size 57444 +oid sha256:c41db568ef86660c72181c40c9394031d5d12f5e794ebc513869991b37a7d957 +size 51836 diff --git a/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_1_de.png b/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_1_de.png index a8ae50642e..9c83d065f0 100644 --- a/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_1_de.png +++ b/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1e2e72577c480c24b4859b810860b29d7aa3eea39788446466bf8ad4f3a031be -size 53852 +oid sha256:a06c9f9245cf3b02229fcb838976a4d2272d44e40338e36e026dea7677e70ac9 +size 48416 diff --git a/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_4_de.png b/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_4_de.png index b3e848d834..e7072458cc 100644 --- a/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_4_de.png +++ b/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6df2bdbc777a2242661b6e7d8fd11a8e570545c6a8bbe8a0d3e2dc95368d82fd -size 55042 +oid sha256:c78753ad8b299377a12eb844182bb9e86346f66d89eca03dcbc5cda10ef6ff44 +size 55083 diff --git a/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupView_Day_0_de.png b/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupView_Day_0_de.png index 068aac9af7..623f2b9bb3 100644 --- a/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupView_Day_0_de.png +++ b/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f8c09371a5161bdb9048662f88ddf9b63580de0cb2f2c2aa88a5e0259e52f8d0 -size 62511 +oid sha256:e439033d1bd70cfa0d9574cd4388d6387ffb5181d3b8e4a55a37c224b380e91d +size 65262 diff --git a/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupView_Day_1_de.png b/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupView_Day_1_de.png index d85eebaebd..a0542ada23 100644 --- a/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupView_Day_1_de.png +++ b/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dafc18fa5657ef6394e0e147cd1542a1dc05ca639057894c930135f63a616340 -size 59179 +oid sha256:bd9c3d54b3c95358bc988ffbaed518d6e79ea61aeba475d63d76a623e931b70d +size 61756 diff --git a/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupView_Day_4_de.png b/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupView_Day_4_de.png index b3e848d834..e7072458cc 100644 --- a/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupView_Day_4_de.png +++ b/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6df2bdbc777a2242661b6e7d8fd11a8e570545c6a8bbe8a0d3e2dc95368d82fd -size 55042 +oid sha256:c78753ad8b299377a12eb844182bb9e86346f66d89eca03dcbc5cda10ef6ff44 +size 55083 diff --git a/screenshots/de/features.signedout.impl_SignedOutView_Day_0_de.png b/screenshots/de/features.signedout.impl_SignedOutView_Day_0_de.png index bfbddceed8..723a6c8bc5 100644 --- a/screenshots/de/features.signedout.impl_SignedOutView_Day_0_de.png +++ b/screenshots/de/features.signedout.impl_SignedOutView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a88dd3376c68810d3a31cfc8cc55256fc75a2a0ebe5cf12bfc5db0e5c0783a3a -size 61848 +oid sha256:4c89ba76087d550a18167f2358ccdd6bd3366c67f6d6d3b01c991b52f35e36b8 +size 63564 diff --git a/screenshots/de/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_10_de.png b/screenshots/de/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_10_de.png index 1c98ae42b3..b0948aceee 100644 --- a/screenshots/de/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_10_de.png +++ b/screenshots/de/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_10_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fa8f20efab9e48ccd07435d5408b34edfc6c2fca6882279c3121d92edb5bddc3 -size 24678 +oid sha256:ef5540e690a92a418c6bc78375b341ddb7acf65fd336d0ed710fae66c85721f5 +size 30741 diff --git a/screenshots/de/libraries.mediaviewer.impl.details_MediaDetailsBottomSheet_Day_0_de.png b/screenshots/de/libraries.mediaviewer.impl.details_MediaDetailsBottomSheet_Day_0_de.png index efaac88721..ac4e761484 100644 --- a/screenshots/de/libraries.mediaviewer.impl.details_MediaDetailsBottomSheet_Day_0_de.png +++ b/screenshots/de/libraries.mediaviewer.impl.details_MediaDetailsBottomSheet_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:da69bb6dbc471ac4710b08a60ac59fc34df72d12eef5d0702624200f265d9df9 -size 42023 +oid sha256:daa565bfe2140f1048ee5d49fa24b296919de197f89b4a251344d43c76dc6365 +size 42994 diff --git a/screenshots/de/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_8_de.png b/screenshots/de/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_8_de.png index 10f735c9c4..573176271f 100644 --- a/screenshots/de/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_8_de.png +++ b/screenshots/de/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_8_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:879965b84c851d5911f325d37eb6805583cdc7ba2c5d5baf2a75c8fef04fb77d -size 44815 +oid sha256:f856e324b80969e52dc04eb775047756901d913f6bc9293d33607b82c2efabd3 +size 45789 diff --git a/screenshots/de/libraries.mediaviewer.impl.viewer_MediaViewerView_11_de.png b/screenshots/de/libraries.mediaviewer.impl.viewer_MediaViewerView_11_de.png index c7abf559dd..dc8b7b0be0 100644 --- a/screenshots/de/libraries.mediaviewer.impl.viewer_MediaViewerView_11_de.png +++ b/screenshots/de/libraries.mediaviewer.impl.viewer_MediaViewerView_11_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ad5fa9927dcf2f8f0b31648e669d8a9875f60624805f999c0724c93b9e400e97 -size 41580 +oid sha256:80e41f7bd9db1206cfaf9ed19f141988e9415ad4f4198f859e8203455145cdf4 +size 42530 diff --git a/screenshots/de/libraries.permissions.api_PermissionsView_Day_1_de.png b/screenshots/de/libraries.permissions.api_PermissionsView_Day_1_de.png index 78242a8f8b..b3ffaebba1 100644 --- a/screenshots/de/libraries.permissions.api_PermissionsView_Day_1_de.png +++ b/screenshots/de/libraries.permissions.api_PermissionsView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e5524f7e67bbdd4c79bda393f727ab0e06892bfce4b1097252a5555e445dd1fc -size 29434 +oid sha256:81e091e214ac8e9ddc8b5980396b9c12433ef62a1a41f35dd48b96116b6974da +size 29998 diff --git a/screenshots/de/libraries.permissions.api_PermissionsView_Day_2_de.png b/screenshots/de/libraries.permissions.api_PermissionsView_Day_2_de.png index 8e2ba40822..8e0666e26a 100644 --- a/screenshots/de/libraries.permissions.api_PermissionsView_Day_2_de.png +++ b/screenshots/de/libraries.permissions.api_PermissionsView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0d526e93686e98471a0d245a75bf3f2afd7533863ba32cf64731f27c7ecf6ece -size 29778 +oid sha256:b4553f6ebb23dad5fda6ca56340c47771b42a8d214c47a627a223d33a96d6d59 +size 30362 diff --git a/screenshots/de/libraries.textcomposer_TextComposerAddCaption_Day_0_de.png b/screenshots/de/libraries.textcomposer_TextComposerAddCaption_Day_0_de.png index b45b6697ba..4b8cd97ecc 100644 --- a/screenshots/de/libraries.textcomposer_TextComposerAddCaption_Day_0_de.png +++ b/screenshots/de/libraries.textcomposer_TextComposerAddCaption_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9a1864554b9626633423c4e201973a1ec0a18c916d6e3ea898889cc7cfa2a25d -size 61478 +oid sha256:73deeb55c3f7c1734c78fc85ae6892eacc12d3ff507d0b94479f59080af1c505 +size 61242 diff --git a/screenshots/de/libraries.textcomposer_TextComposerCaption_Day_0_de.png b/screenshots/de/libraries.textcomposer_TextComposerCaption_Day_0_de.png index 6634b3c317..c11afad1a6 100644 --- a/screenshots/de/libraries.textcomposer_TextComposerCaption_Day_0_de.png +++ b/screenshots/de/libraries.textcomposer_TextComposerCaption_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d76a6371efb5eb1aebf305b3ee85067f63707e0b16066acc10c2d0f750952f48 -size 48921 +oid sha256:413062f9f92a3c0f376c12a30dac541da083c4030069834d83f01143d31949c8 +size 48834 diff --git a/screenshots/de/libraries.textcomposer_TextComposerEditCaption_Day_0_de.png b/screenshots/de/libraries.textcomposer_TextComposerEditCaption_Day_0_de.png index 1f38c4d566..2b6a9b823c 100644 --- a/screenshots/de/libraries.textcomposer_TextComposerEditCaption_Day_0_de.png +++ b/screenshots/de/libraries.textcomposer_TextComposerEditCaption_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:75c1832be486d6dfba30f7bf115be324caef1242c0796651f655e2e14318b2ad -size 61656 +oid sha256:a19b9df6856f277082a8cec51d2f278b4ec9d8bbc4623c9026fd8f9246e1ed13 +size 59129 diff --git a/screenshots/de/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_0_de.png b/screenshots/de/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_0_de.png index 237b140a6e..7a6150671c 100644 --- a/screenshots/de/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_0_de.png +++ b/screenshots/de/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:166a2c3756c1c71250704d488804399e44437f6b4dab00623e3cc1a0c0d1a171 -size 35565 +oid sha256:ca2ff10f7858de609d123f10d8e3b41da6c321c58159c6c20712fc5c27bf1c3b +size 33679 diff --git a/screenshots/de/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_1_de.png b/screenshots/de/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_1_de.png index 2d0e6fc008..85376abe25 100644 --- a/screenshots/de/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_1_de.png +++ b/screenshots/de/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2d025ba2a655c388f908453584015f28b21224e28c2fad3c7779c04308df0846 -size 20398 +oid sha256:fe33cd547b9b3029f850985edf71a76fb93fb3a47f36778fcfb2948f2c09b6c9 +size 20391 diff --git a/screenshots/de/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_2_de.png b/screenshots/de/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_2_de.png index d24d094943..6fc011f7fd 100644 --- a/screenshots/de/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_2_de.png +++ b/screenshots/de/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a7a779ce1c3c58a670301b31bfdc75fdf6a782a63bc9ffd0bd1eefb1af46e980 -size 20810 +oid sha256:793dbbba2e946f34facc717cf42564efb6115f73b69c18b749e94769beac30dc +size 20805 diff --git a/screenshots/de/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_3_de.png b/screenshots/de/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_3_de.png index 70d90bece5..5aaef3937f 100644 --- a/screenshots/de/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_3_de.png +++ b/screenshots/de/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:211c984ebf56278b26d7bf98cb5eba9fb6e66a2b3c7937d6e9bb65170eb78b0a -size 33037 +oid sha256:df0f6ea6c28da2bea1f1f0bf480e58f42c02e2b991c98a4343978417f3f70173 +size 33704 diff --git a/screenshots/de/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_4_de.png b/screenshots/de/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_4_de.png index 85b397fd09..2f4733470f 100644 --- a/screenshots/de/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_4_de.png +++ b/screenshots/de/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2b38aa883606727a0287920bf380dd991093d8030f9968a8a6c6f0ab49662677 -size 27910 +oid sha256:f55a2d44c18f67b1330a18c7ec8e6049d2be810a2a5d2840137555455fcb02ee +size 25554 diff --git a/screenshots/de/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_5_de.png b/screenshots/de/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_5_de.png index 061c0ab339..d88792d37c 100644 --- a/screenshots/de/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_5_de.png +++ b/screenshots/de/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5d9e137fa5ddf46196b2d859ce161a434aa173e703b23bcb4777577412af4b1a -size 43950 +oid sha256:3107a37af464ba5cda1c622a456365b199a33edaad1abd83a199d44aa4b34b0e +size 41654 diff --git a/screenshots/de/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_6_de.png b/screenshots/de/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_6_de.png index e895601705..806fa70467 100644 --- a/screenshots/de/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_6_de.png +++ b/screenshots/de/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_6_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:274a5a392c1f0fccd7eb47235deed62f3bd5a23c243af307d837091d5956d710 -size 27458 +oid sha256:565ecdd6b591e0112e0141f737908398f155ba3a4831c9ccdb5a2d4e58bbdb26 +size 27448 diff --git a/screenshots/de/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_7_de.png b/screenshots/de/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_7_de.png index e8fc9966ff..5eac10d4ba 100644 --- a/screenshots/de/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_7_de.png +++ b/screenshots/de/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_7_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:248daef14353381e3c39926ae5041d31c5a3b94fc4beefead85a07f279ab4900 -size 26600 +oid sha256:e9f4eb92ea02e5f3f14c1b7f7ddaaea46f4b739735a290ff7ef812590d20f52b +size 27191 diff --git a/screenshots/html/data.js b/screenshots/html/data.js index 1f3ed04ce5..17e97c6284 100644 --- a/screenshots/html/data.js +++ b/screenshots/html/data.js @@ -1,70 +1,70 @@ // Generated file, do not edit export const screenshots = [ ["en","en-dark","de",], -["features.preferences.impl.about_AboutView_Day_0_en","features.preferences.impl.about_AboutView_Night_0_en",20236,], +["features.preferences.impl.about_AboutView_Day_0_en","features.preferences.impl.about_AboutView_Night_0_en",20238,], ["features.invite.impl.acceptdecline_AcceptDeclineInviteView_Day_0_en","features.invite.impl.acceptdecline_AcceptDeclineInviteView_Night_0_en",0,], -["features.invite.impl.acceptdecline_AcceptDeclineInviteView_Day_1_en","features.invite.impl.acceptdecline_AcceptDeclineInviteView_Night_1_en",20236,], -["features.invite.impl.acceptdecline_AcceptDeclineInviteView_Day_2_en","features.invite.impl.acceptdecline_AcceptDeclineInviteView_Night_2_en",20236,], -["features.invite.impl.acceptdecline_AcceptDeclineInviteView_Day_3_en","features.invite.impl.acceptdecline_AcceptDeclineInviteView_Night_3_en",20236,], -["features.invite.impl.acceptdecline_AcceptDeclineInviteView_Day_4_en","features.invite.impl.acceptdecline_AcceptDeclineInviteView_Night_4_en",20236,], -["features.logout.impl_AccountDeactivationView_Day_0_en","features.logout.impl_AccountDeactivationView_Night_0_en",20236,], -["features.logout.impl_AccountDeactivationView_Day_1_en","features.logout.impl_AccountDeactivationView_Night_1_en",20236,], -["features.logout.impl_AccountDeactivationView_Day_2_en","features.logout.impl_AccountDeactivationView_Night_2_en",20236,], -["features.logout.impl_AccountDeactivationView_Day_3_en","features.logout.impl_AccountDeactivationView_Night_3_en",20236,], -["features.logout.impl_AccountDeactivationView_Day_4_en","features.logout.impl_AccountDeactivationView_Night_4_en",20236,], +["features.invite.impl.acceptdecline_AcceptDeclineInviteView_Day_1_en","features.invite.impl.acceptdecline_AcceptDeclineInviteView_Night_1_en",20238,], +["features.invite.impl.acceptdecline_AcceptDeclineInviteView_Day_2_en","features.invite.impl.acceptdecline_AcceptDeclineInviteView_Night_2_en",20238,], +["features.invite.impl.acceptdecline_AcceptDeclineInviteView_Day_3_en","features.invite.impl.acceptdecline_AcceptDeclineInviteView_Night_3_en",20238,], +["features.invite.impl.acceptdecline_AcceptDeclineInviteView_Day_4_en","features.invite.impl.acceptdecline_AcceptDeclineInviteView_Night_4_en",20238,], +["features.logout.impl_AccountDeactivationView_Day_0_en","features.logout.impl_AccountDeactivationView_Night_0_en",20238,], +["features.logout.impl_AccountDeactivationView_Day_1_en","features.logout.impl_AccountDeactivationView_Night_1_en",20238,], +["features.logout.impl_AccountDeactivationView_Day_2_en","features.logout.impl_AccountDeactivationView_Night_2_en",20238,], +["features.logout.impl_AccountDeactivationView_Day_3_en","features.logout.impl_AccountDeactivationView_Night_3_en",20238,], +["features.logout.impl_AccountDeactivationView_Day_4_en","features.logout.impl_AccountDeactivationView_Night_4_en",20238,], ["features.login.impl.accountprovider_AccountProviderOtherView_Day_0_en","features.login.impl.accountprovider_AccountProviderOtherView_Night_0_en",20238,], ["features.login.impl.accountprovider_AccountProviderView_Day_0_en","features.login.impl.accountprovider_AccountProviderView_Night_0_en",0,], ["features.login.impl.accountprovider_AccountProviderView_Day_1_en","features.login.impl.accountprovider_AccountProviderView_Night_1_en",0,], ["features.login.impl.accountprovider_AccountProviderView_Day_2_en","features.login.impl.accountprovider_AccountProviderView_Night_2_en",0,], ["features.login.impl.accountprovider_AccountProviderView_Day_3_en","features.login.impl.accountprovider_AccountProviderView_Night_3_en",0,], ["features.messages.impl.actionlist_ActionListViewContent_Day_0_en","features.messages.impl.actionlist_ActionListViewContent_Night_0_en",0,], -["features.messages.impl.actionlist_ActionListViewContent_Day_10_en","features.messages.impl.actionlist_ActionListViewContent_Night_10_en",20236,], -["features.messages.impl.actionlist_ActionListViewContent_Day_11_en","features.messages.impl.actionlist_ActionListViewContent_Night_11_en",20236,], -["features.messages.impl.actionlist_ActionListViewContent_Day_12_en","features.messages.impl.actionlist_ActionListViewContent_Night_12_en",20236,], +["features.messages.impl.actionlist_ActionListViewContent_Day_10_en","features.messages.impl.actionlist_ActionListViewContent_Night_10_en",20238,], +["features.messages.impl.actionlist_ActionListViewContent_Day_11_en","features.messages.impl.actionlist_ActionListViewContent_Night_11_en",20238,], +["features.messages.impl.actionlist_ActionListViewContent_Day_12_en","features.messages.impl.actionlist_ActionListViewContent_Night_12_en",20238,], ["features.messages.impl.actionlist_ActionListViewContent_Day_1_en","features.messages.impl.actionlist_ActionListViewContent_Night_1_en",0,], -["features.messages.impl.actionlist_ActionListViewContent_Day_2_en","features.messages.impl.actionlist_ActionListViewContent_Night_2_en",20236,], -["features.messages.impl.actionlist_ActionListViewContent_Day_3_en","features.messages.impl.actionlist_ActionListViewContent_Night_3_en",20236,], -["features.messages.impl.actionlist_ActionListViewContent_Day_4_en","features.messages.impl.actionlist_ActionListViewContent_Night_4_en",20236,], -["features.messages.impl.actionlist_ActionListViewContent_Day_5_en","features.messages.impl.actionlist_ActionListViewContent_Night_5_en",20236,], -["features.messages.impl.actionlist_ActionListViewContent_Day_6_en","features.messages.impl.actionlist_ActionListViewContent_Night_6_en",20236,], -["features.messages.impl.actionlist_ActionListViewContent_Day_7_en","features.messages.impl.actionlist_ActionListViewContent_Night_7_en",20236,], -["features.messages.impl.actionlist_ActionListViewContent_Day_8_en","features.messages.impl.actionlist_ActionListViewContent_Night_8_en",20236,], -["features.messages.impl.actionlist_ActionListViewContent_Day_9_en","features.messages.impl.actionlist_ActionListViewContent_Night_9_en",20236,], -["features.createroom.impl.addpeople_AddPeopleView_Day_0_en","features.createroom.impl.addpeople_AddPeopleView_Night_0_en",20236,], -["features.createroom.impl.addpeople_AddPeopleView_Day_1_en","features.createroom.impl.addpeople_AddPeopleView_Night_1_en",20236,], -["features.createroom.impl.addpeople_AddPeopleView_Day_2_en","features.createroom.impl.addpeople_AddPeopleView_Night_2_en",20236,], -["features.createroom.impl.addpeople_AddPeopleView_Day_3_en","features.createroom.impl.addpeople_AddPeopleView_Night_3_en",20236,], -["features.preferences.impl.advanced_AdvancedSettingsViewDark_0_en","",20236,], -["features.preferences.impl.advanced_AdvancedSettingsViewDark_1_en","",20236,], -["features.preferences.impl.advanced_AdvancedSettingsViewDark_2_en","",20236,], -["features.preferences.impl.advanced_AdvancedSettingsViewDark_3_en","",20236,], -["features.preferences.impl.advanced_AdvancedSettingsViewDark_4_en","",20236,], -["features.preferences.impl.advanced_AdvancedSettingsViewDark_5_en","",20236,], -["features.preferences.impl.advanced_AdvancedSettingsViewLight_0_en","",20236,], -["features.preferences.impl.advanced_AdvancedSettingsViewLight_1_en","",20236,], -["features.preferences.impl.advanced_AdvancedSettingsViewLight_2_en","",20236,], -["features.preferences.impl.advanced_AdvancedSettingsViewLight_3_en","",20236,], -["features.preferences.impl.advanced_AdvancedSettingsViewLight_4_en","",20236,], -["features.preferences.impl.advanced_AdvancedSettingsViewLight_5_en","",20236,], -["libraries.designsystem.components.dialogs_AlertDialogContent_Dialogs_en","",20236,], -["libraries.designsystem.components.dialogs_AlertDialog_Day_0_en","libraries.designsystem.components.dialogs_AlertDialog_Night_0_en",20236,], -["features.analytics.impl_AnalyticsOptInView_Day_0_en","features.analytics.impl_AnalyticsOptInView_Night_0_en",20236,], -["features.analytics.impl_AnalyticsOptInView_Day_1_en","features.analytics.impl_AnalyticsOptInView_Night_1_en",20236,], -["features.analytics.api.preferences_AnalyticsPreferencesView_Day_0_en","features.analytics.api.preferences_AnalyticsPreferencesView_Night_0_en",20236,], -["features.analytics.api.preferences_AnalyticsPreferencesView_Day_1_en","features.analytics.api.preferences_AnalyticsPreferencesView_Night_1_en",20236,], -["features.preferences.impl.analytics_AnalyticsSettingsView_Day_0_en","features.preferences.impl.analytics_AnalyticsSettingsView_Night_0_en",20236,], +["features.messages.impl.actionlist_ActionListViewContent_Day_2_en","features.messages.impl.actionlist_ActionListViewContent_Night_2_en",20238,], +["features.messages.impl.actionlist_ActionListViewContent_Day_3_en","features.messages.impl.actionlist_ActionListViewContent_Night_3_en",20238,], +["features.messages.impl.actionlist_ActionListViewContent_Day_4_en","features.messages.impl.actionlist_ActionListViewContent_Night_4_en",20238,], +["features.messages.impl.actionlist_ActionListViewContent_Day_5_en","features.messages.impl.actionlist_ActionListViewContent_Night_5_en",20238,], +["features.messages.impl.actionlist_ActionListViewContent_Day_6_en","features.messages.impl.actionlist_ActionListViewContent_Night_6_en",20238,], +["features.messages.impl.actionlist_ActionListViewContent_Day_7_en","features.messages.impl.actionlist_ActionListViewContent_Night_7_en",20238,], +["features.messages.impl.actionlist_ActionListViewContent_Day_8_en","features.messages.impl.actionlist_ActionListViewContent_Night_8_en",20238,], +["features.messages.impl.actionlist_ActionListViewContent_Day_9_en","features.messages.impl.actionlist_ActionListViewContent_Night_9_en",20238,], +["features.createroom.impl.addpeople_AddPeopleView_Day_0_en","features.createroom.impl.addpeople_AddPeopleView_Night_0_en",20238,], +["features.createroom.impl.addpeople_AddPeopleView_Day_1_en","features.createroom.impl.addpeople_AddPeopleView_Night_1_en",20238,], +["features.createroom.impl.addpeople_AddPeopleView_Day_2_en","features.createroom.impl.addpeople_AddPeopleView_Night_2_en",20238,], +["features.createroom.impl.addpeople_AddPeopleView_Day_3_en","features.createroom.impl.addpeople_AddPeopleView_Night_3_en",20238,], +["features.preferences.impl.advanced_AdvancedSettingsViewDark_0_en","",20238,], +["features.preferences.impl.advanced_AdvancedSettingsViewDark_1_en","",20238,], +["features.preferences.impl.advanced_AdvancedSettingsViewDark_2_en","",20238,], +["features.preferences.impl.advanced_AdvancedSettingsViewDark_3_en","",20238,], +["features.preferences.impl.advanced_AdvancedSettingsViewDark_4_en","",20238,], +["features.preferences.impl.advanced_AdvancedSettingsViewDark_5_en","",20238,], +["features.preferences.impl.advanced_AdvancedSettingsViewLight_0_en","",20238,], +["features.preferences.impl.advanced_AdvancedSettingsViewLight_1_en","",20238,], +["features.preferences.impl.advanced_AdvancedSettingsViewLight_2_en","",20238,], +["features.preferences.impl.advanced_AdvancedSettingsViewLight_3_en","",20238,], +["features.preferences.impl.advanced_AdvancedSettingsViewLight_4_en","",20238,], +["features.preferences.impl.advanced_AdvancedSettingsViewLight_5_en","",20238,], +["libraries.designsystem.components.dialogs_AlertDialogContent_Dialogs_en","",20238,], +["libraries.designsystem.components.dialogs_AlertDialog_Day_0_en","libraries.designsystem.components.dialogs_AlertDialog_Night_0_en",20238,], +["features.analytics.impl_AnalyticsOptInView_Day_0_en","features.analytics.impl_AnalyticsOptInView_Night_0_en",20238,], +["features.analytics.impl_AnalyticsOptInView_Day_1_en","features.analytics.impl_AnalyticsOptInView_Night_1_en",20238,], +["features.analytics.api.preferences_AnalyticsPreferencesView_Day_0_en","features.analytics.api.preferences_AnalyticsPreferencesView_Night_0_en",20238,], +["features.analytics.api.preferences_AnalyticsPreferencesView_Day_1_en","features.analytics.api.preferences_AnalyticsPreferencesView_Night_1_en",20238,], +["features.preferences.impl.analytics_AnalyticsSettingsView_Day_0_en","features.preferences.impl.analytics_AnalyticsSettingsView_Night_0_en",20238,], ["libraries.designsystem.components_Announcement_Day_0_en","libraries.designsystem.components_Announcement_Night_0_en",0,], -["services.apperror.impl_AppErrorView_Day_0_en","services.apperror.impl_AppErrorView_Night_0_en",20236,], +["services.apperror.impl_AppErrorView_Day_0_en","services.apperror.impl_AppErrorView_Night_0_en",20238,], ["libraries.designsystem.components.async_AsyncActionView_Day_0_en","libraries.designsystem.components.async_AsyncActionView_Night_0_en",0,], -["libraries.designsystem.components.async_AsyncActionView_Day_1_en","libraries.designsystem.components.async_AsyncActionView_Night_1_en",20236,], +["libraries.designsystem.components.async_AsyncActionView_Day_1_en","libraries.designsystem.components.async_AsyncActionView_Night_1_en",20238,], ["libraries.designsystem.components.async_AsyncActionView_Day_2_en","libraries.designsystem.components.async_AsyncActionView_Night_2_en",0,], -["libraries.designsystem.components.async_AsyncActionView_Day_3_en","libraries.designsystem.components.async_AsyncActionView_Night_3_en",20236,], +["libraries.designsystem.components.async_AsyncActionView_Day_3_en","libraries.designsystem.components.async_AsyncActionView_Night_3_en",20238,], ["libraries.designsystem.components.async_AsyncActionView_Day_4_en","libraries.designsystem.components.async_AsyncActionView_Night_4_en",0,], -["libraries.designsystem.components.async_AsyncFailure_Day_0_en","libraries.designsystem.components.async_AsyncFailure_Night_0_en",20236,], +["libraries.designsystem.components.async_AsyncFailure_Day_0_en","libraries.designsystem.components.async_AsyncFailure_Night_0_en",20238,], ["libraries.designsystem.components.async_AsyncIndicatorFailure_Day_0_en","libraries.designsystem.components.async_AsyncIndicatorFailure_Night_0_en",0,], ["libraries.designsystem.components.async_AsyncIndicatorLoading_Day_0_en","libraries.designsystem.components.async_AsyncIndicatorLoading_Night_0_en",0,], ["libraries.designsystem.components.async_AsyncLoading_Day_0_en","libraries.designsystem.components.async_AsyncLoading_Night_0_en",0,], -["features.messages.impl.messagecomposer_AttachmentSourcePickerMenu_Day_0_en","features.messages.impl.messagecomposer_AttachmentSourcePickerMenu_Night_0_en",20236,], +["features.messages.impl.messagecomposer_AttachmentSourcePickerMenu_Day_0_en","features.messages.impl.messagecomposer_AttachmentSourcePickerMenu_Night_0_en",20238,], ["libraries.matrix.ui.components_AttachmentThumbnail_Day_0_en","libraries.matrix.ui.components_AttachmentThumbnail_Night_0_en",0,], ["libraries.matrix.ui.components_AttachmentThumbnail_Day_1_en","libraries.matrix.ui.components_AttachmentThumbnail_Night_1_en",0,], ["libraries.matrix.ui.components_AttachmentThumbnail_Day_2_en","libraries.matrix.ui.components_AttachmentThumbnail_Night_2_en",0,], @@ -74,18 +74,18 @@ export const screenshots = [ ["libraries.matrix.ui.components_AttachmentThumbnail_Day_6_en","libraries.matrix.ui.components_AttachmentThumbnail_Night_6_en",0,], ["libraries.matrix.ui.components_AttachmentThumbnail_Day_7_en","libraries.matrix.ui.components_AttachmentThumbnail_Night_7_en",0,], ["libraries.matrix.ui.components_AttachmentThumbnail_Day_8_en","libraries.matrix.ui.components_AttachmentThumbnail_Night_8_en",0,], -["features.messages.impl.attachments.preview_AttachmentsView_0_en","",20236,], -["features.messages.impl.attachments.preview_AttachmentsView_1_en","",20236,], -["features.messages.impl.attachments.preview_AttachmentsView_2_en","",20236,], -["features.messages.impl.attachments.preview_AttachmentsView_3_en","",20236,], -["features.messages.impl.attachments.preview_AttachmentsView_4_en","",20236,], -["features.messages.impl.attachments.preview_AttachmentsView_5_en","",20236,], +["features.messages.impl.attachments.preview_AttachmentsView_0_en","",20238,], +["features.messages.impl.attachments.preview_AttachmentsView_1_en","",20238,], +["features.messages.impl.attachments.preview_AttachmentsView_2_en","",20238,], +["features.messages.impl.attachments.preview_AttachmentsView_3_en","",20238,], +["features.messages.impl.attachments.preview_AttachmentsView_4_en","",20238,], +["features.messages.impl.attachments.preview_AttachmentsView_5_en","",20238,], ["features.messages.impl.attachments.preview_AttachmentsView_6_en","",0,], -["features.messages.impl.attachments.preview_AttachmentsView_7_en","",20236,], +["features.messages.impl.attachments.preview_AttachmentsView_7_en","",20238,], ["libraries.mediaviewer.impl.gallery.ui_AudioItemView_Day_0_en","libraries.mediaviewer.impl.gallery.ui_AudioItemView_Night_0_en",0,], ["libraries.mediaviewer.impl.gallery.ui_AudioItemView_Day_1_en","libraries.mediaviewer.impl.gallery.ui_AudioItemView_Night_1_en",0,], ["libraries.mediaviewer.impl.gallery.ui_AudioItemView_Day_2_en","libraries.mediaviewer.impl.gallery.ui_AudioItemView_Night_2_en",0,], -["libraries.matrix.ui.components_AvatarActionBottomSheet_Day_0_en","libraries.matrix.ui.components_AvatarActionBottomSheet_Night_0_en",20236,], +["libraries.matrix.ui.components_AvatarActionBottomSheet_Day_0_en","libraries.matrix.ui.components_AvatarActionBottomSheet_Night_0_en",20238,], ["features.knockrequests.impl.banner_AvatarRowRtl_Day_0_en","features.knockrequests.impl.banner_AvatarRowRtl_Night_0_en",0,], ["features.knockrequests.impl.banner_AvatarRowRtl_Day_1_en","features.knockrequests.impl.banner_AvatarRowRtl_Night_1_en",0,], ["features.knockrequests.impl.banner_AvatarRowRtl_Day_2_en","features.knockrequests.impl.banner_AvatarRowRtl_Night_2_en",0,], @@ -193,13 +193,13 @@ export const screenshots = [ ["libraries.designsystem.components_Badge_Day_0_en","libraries.designsystem.components_Badge_Night_0_en",0,], ["libraries.designsystem.components_BigCheckmark_Day_0_en","libraries.designsystem.components_BigCheckmark_Night_0_en",0,], ["libraries.designsystem.components_BigIcon_Day_0_en","libraries.designsystem.components_BigIcon_Night_0_en",0,], -["features.preferences.impl.blockedusers_BlockedUsersView_Day_0_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_0_en",20236,], -["features.preferences.impl.blockedusers_BlockedUsersView_Day_1_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_1_en",20236,], -["features.preferences.impl.blockedusers_BlockedUsersView_Day_2_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_2_en",20236,], -["features.preferences.impl.blockedusers_BlockedUsersView_Day_3_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_3_en",20236,], -["features.preferences.impl.blockedusers_BlockedUsersView_Day_4_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_4_en",20236,], -["features.preferences.impl.blockedusers_BlockedUsersView_Day_5_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_5_en",20236,], -["features.preferences.impl.blockedusers_BlockedUsersView_Day_6_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_6_en",20236,], +["features.preferences.impl.blockedusers_BlockedUsersView_Day_0_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_0_en",20238,], +["features.preferences.impl.blockedusers_BlockedUsersView_Day_1_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_1_en",20238,], +["features.preferences.impl.blockedusers_BlockedUsersView_Day_2_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_2_en",20238,], +["features.preferences.impl.blockedusers_BlockedUsersView_Day_3_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_3_en",20238,], +["features.preferences.impl.blockedusers_BlockedUsersView_Day_4_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_4_en",20238,], +["features.preferences.impl.blockedusers_BlockedUsersView_Day_5_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_5_en",20238,], +["features.preferences.impl.blockedusers_BlockedUsersView_Day_6_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_6_en",20238,], ["libraries.designsystem.components_BloomInitials_Day_0_en","libraries.designsystem.components_BloomInitials_Night_0_en",0,], ["libraries.designsystem.components_BloomInitials_Day_1_en","libraries.designsystem.components_BloomInitials_Night_1_en",0,], ["libraries.designsystem.components_BloomInitials_Day_2_en","libraries.designsystem.components_BloomInitials_Night_2_en",0,], @@ -210,141 +210,141 @@ export const screenshots = [ ["libraries.designsystem.components_BloomInitials_Day_7_en","libraries.designsystem.components_BloomInitials_Night_7_en",0,], ["libraries.designsystem.components_Bloom_Day_0_en","libraries.designsystem.components_Bloom_Night_0_en",0,], ["libraries.designsystem.theme.components_BottomSheetDragHandle_Day_0_en","libraries.designsystem.theme.components_BottomSheetDragHandle_Night_0_en",0,], -["features.rageshake.impl.bugreport_BugReportView_Day_0_en","features.rageshake.impl.bugreport_BugReportView_Night_0_en",20236,], -["features.rageshake.impl.bugreport_BugReportView_Day_1_en","features.rageshake.impl.bugreport_BugReportView_Night_1_en",20236,], -["features.rageshake.impl.bugreport_BugReportView_Day_2_en","features.rageshake.impl.bugreport_BugReportView_Night_2_en",20236,], -["features.rageshake.impl.bugreport_BugReportView_Day_3_en","features.rageshake.impl.bugreport_BugReportView_Night_3_en",20236,], -["features.rageshake.impl.bugreport_BugReportView_Day_4_en","features.rageshake.impl.bugreport_BugReportView_Night_4_en",20236,], +["features.rageshake.impl.bugreport_BugReportView_Day_0_en","features.rageshake.impl.bugreport_BugReportView_Night_0_en",20238,], +["features.rageshake.impl.bugreport_BugReportView_Day_1_en","features.rageshake.impl.bugreport_BugReportView_Night_1_en",20238,], +["features.rageshake.impl.bugreport_BugReportView_Day_2_en","features.rageshake.impl.bugreport_BugReportView_Night_2_en",20238,], +["features.rageshake.impl.bugreport_BugReportView_Day_3_en","features.rageshake.impl.bugreport_BugReportView_Night_3_en",20238,], +["features.rageshake.impl.bugreport_BugReportView_Day_4_en","features.rageshake.impl.bugreport_BugReportView_Night_4_en",20238,], ["libraries.designsystem.atomic.molecules_ButtonColumnMolecule_Day_0_en","libraries.designsystem.atomic.molecules_ButtonColumnMolecule_Night_0_en",0,], ["libraries.designsystem.atomic.molecules_ButtonRowMolecule_Day_0_en","libraries.designsystem.atomic.molecules_ButtonRowMolecule_Night_0_en",0,], ["features.messages.impl.timeline.components_CallMenuItem_Day_0_en","features.messages.impl.timeline.components_CallMenuItem_Night_0_en",0,], ["features.messages.impl.timeline.components_CallMenuItem_Day_1_en","features.messages.impl.timeline.components_CallMenuItem_Night_1_en",0,], -["features.messages.impl.timeline.components_CallMenuItem_Day_2_en","features.messages.impl.timeline.components_CallMenuItem_Night_2_en",20236,], -["features.messages.impl.timeline.components_CallMenuItem_Day_3_en","features.messages.impl.timeline.components_CallMenuItem_Night_3_en",20236,], +["features.messages.impl.timeline.components_CallMenuItem_Day_2_en","features.messages.impl.timeline.components_CallMenuItem_Night_2_en",20238,], +["features.messages.impl.timeline.components_CallMenuItem_Day_3_en","features.messages.impl.timeline.components_CallMenuItem_Night_3_en",20238,], ["features.messages.impl.timeline.components_CallMenuItem_Day_4_en","features.messages.impl.timeline.components_CallMenuItem_Night_4_en",0,], ["features.messages.impl.timeline.components_CallMenuItem_Day_5_en","features.messages.impl.timeline.components_CallMenuItem_Night_5_en",0,], ["features.call.impl.ui_CallScreenPipView_Day_0_en","features.call.impl.ui_CallScreenPipView_Night_0_en",0,], ["features.call.impl.ui_CallScreenPipView_Day_1_en","features.call.impl.ui_CallScreenPipView_Night_1_en",0,], ["features.call.impl.ui_CallScreenView_Day_0_en","features.call.impl.ui_CallScreenView_Night_0_en",0,], -["features.call.impl.ui_CallScreenView_Day_1_en","features.call.impl.ui_CallScreenView_Night_1_en",20236,], -["features.call.impl.ui_CallScreenView_Day_2_en","features.call.impl.ui_CallScreenView_Night_2_en",20236,], -["features.call.impl.ui_CallScreenView_Day_3_en","features.call.impl.ui_CallScreenView_Night_3_en",20236,], -["libraries.textcomposer_CaptionWarningBottomSheet_Day_0_en","libraries.textcomposer_CaptionWarningBottomSheet_Night_0_en",20236,], -["features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Day_0_en","features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Night_0_en",20236,], +["features.call.impl.ui_CallScreenView_Day_1_en","features.call.impl.ui_CallScreenView_Night_1_en",20238,], +["features.call.impl.ui_CallScreenView_Day_2_en","features.call.impl.ui_CallScreenView_Night_2_en",20238,], +["features.call.impl.ui_CallScreenView_Day_3_en","features.call.impl.ui_CallScreenView_Night_3_en",20238,], +["libraries.textcomposer_CaptionWarningBottomSheet_Day_0_en","libraries.textcomposer_CaptionWarningBottomSheet_Night_0_en",20238,], +["features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Day_0_en","features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Night_0_en",20238,], ["features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Day_1_en","features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Night_1_en",20238,], -["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_0_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_0_en",20236,], -["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_10_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_10_en",20236,], -["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_1_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_1_en",20236,], -["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_2_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_2_en",20236,], -["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_3_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_3_en",20236,], -["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_4_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_4_en",20236,], -["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_5_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_5_en",20236,], -["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_6_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_6_en",20236,], -["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_7_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_7_en",20236,], -["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_8_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_8_en",20236,], -["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_9_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_9_en",20236,], -["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_0_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_0_en",20236,], -["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_1_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_1_en",20236,], -["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_2_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_2_en",20236,], -["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_3_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_3_en",20236,], -["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_4_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_4_en",20236,], -["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_5_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_5_en",20236,], -["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_6_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_6_en",20236,], +["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_0_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_0_en",20238,], +["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_10_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_10_en",20238,], +["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_1_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_1_en",20238,], +["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_2_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_2_en",20238,], +["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_3_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_3_en",20238,], +["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_4_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_4_en",20238,], +["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_5_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_5_en",20238,], +["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_6_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_6_en",20238,], +["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_7_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_7_en",20238,], +["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_8_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_8_en",20238,], +["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_9_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_9_en",20238,], +["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_0_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_0_en",20238,], +["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_1_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_1_en",20238,], +["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_2_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_2_en",20238,], +["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_3_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_3_en",20238,], +["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_4_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_4_en",20238,], +["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_5_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_5_en",20238,], +["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_6_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_6_en",20238,], ["features.login.impl.changeserver_ChangeServerView_Day_0_en","features.login.impl.changeserver_ChangeServerView_Night_0_en",0,], -["features.login.impl.changeserver_ChangeServerView_Day_1_en","features.login.impl.changeserver_ChangeServerView_Night_1_en",20236,], -["features.login.impl.changeserver_ChangeServerView_Day_2_en","features.login.impl.changeserver_ChangeServerView_Night_2_en",20236,], -["features.login.impl.changeserver_ChangeServerView_Day_3_en","features.login.impl.changeserver_ChangeServerView_Night_3_en",20236,], +["features.login.impl.changeserver_ChangeServerView_Day_1_en","features.login.impl.changeserver_ChangeServerView_Night_1_en",20238,], +["features.login.impl.changeserver_ChangeServerView_Day_2_en","features.login.impl.changeserver_ChangeServerView_Night_2_en",20238,], +["features.login.impl.changeserver_ChangeServerView_Day_3_en","features.login.impl.changeserver_ChangeServerView_Night_3_en",20238,], ["libraries.matrix.ui.components_CheckableResolvedUserRow_en","",0,], -["libraries.matrix.ui.components_CheckableUnresolvedUserRow_en","",20236,], +["libraries.matrix.ui.components_CheckableUnresolvedUserRow_en","",20238,], ["libraries.designsystem.theme.components_Checkboxes_Toggles_en","",0,], ["features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_0_en","features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Night_0_en",20238,], ["features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_1_en","features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Night_1_en",20238,], ["features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_2_en","features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Night_2_en",20238,], -["features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_0_en","features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_0_en",20236,], -["features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_1_en","features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_1_en",20236,], -["features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_2_en","features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_2_en",20236,], -["features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_3_en","features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_3_en",20236,], +["features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_0_en","features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_0_en",20238,], +["features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_1_en","features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_1_en",20238,], +["features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_2_en","features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_2_en",20238,], +["features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_3_en","features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_3_en",20238,], ["libraries.designsystem.theme.components_CircularProgressIndicator_Progress_Indicators_en","",0,], ["libraries.designsystem.components_ClickableLinkText_Text_en","",0,], ["libraries.designsystem.theme_ColorAliases_Day_0_en","libraries.designsystem.theme_ColorAliases_Night_0_en",0,], -["libraries.designsystem.atomic.molecules_ComposerAlertMolecule_Day_0_en","libraries.designsystem.atomic.molecules_ComposerAlertMolecule_Night_0_en",20236,], -["libraries.designsystem.atomic.molecules_ComposerAlertMolecule_Day_1_en","libraries.designsystem.atomic.molecules_ComposerAlertMolecule_Night_1_en",20236,], -["libraries.textcomposer_ComposerModeView_Day_0_en","libraries.textcomposer_ComposerModeView_Night_0_en",20236,], +["libraries.designsystem.atomic.molecules_ComposerAlertMolecule_Day_0_en","libraries.designsystem.atomic.molecules_ComposerAlertMolecule_Night_0_en",20238,], +["libraries.designsystem.atomic.molecules_ComposerAlertMolecule_Day_1_en","libraries.designsystem.atomic.molecules_ComposerAlertMolecule_Night_1_en",20238,], +["libraries.textcomposer_ComposerModeView_Day_0_en","libraries.textcomposer_ComposerModeView_Night_0_en",20238,], ["libraries.textcomposer_ComposerModeView_Day_1_en","libraries.textcomposer_ComposerModeView_Night_1_en",0,], ["libraries.textcomposer_ComposerModeView_Day_2_en","libraries.textcomposer_ComposerModeView_Night_2_en",0,], ["libraries.textcomposer_ComposerModeView_Day_3_en","libraries.textcomposer_ComposerModeView_Night_3_en",0,], ["libraries.designsystem.components.avatar_CompositeAvatar_Avatars_en","",0,], -["features.createroom.impl.configureroom_ConfigureRoomViewDark_0_en","",20236,], -["features.createroom.impl.configureroom_ConfigureRoomViewDark_1_en","",20236,], -["features.createroom.impl.configureroom_ConfigureRoomViewDark_2_en","",20236,], -["features.createroom.impl.configureroom_ConfigureRoomViewDark_3_en","",20236,], -["features.createroom.impl.configureroom_ConfigureRoomViewDark_4_en","",20236,], -["features.createroom.impl.configureroom_ConfigureRoomViewDark_5_en","",20236,], -["features.createroom.impl.configureroom_ConfigureRoomViewLight_0_en","",20236,], -["features.createroom.impl.configureroom_ConfigureRoomViewLight_1_en","",20236,], -["features.createroom.impl.configureroom_ConfigureRoomViewLight_2_en","",20236,], -["features.createroom.impl.configureroom_ConfigureRoomViewLight_3_en","",20236,], -["features.createroom.impl.configureroom_ConfigureRoomViewLight_4_en","",20236,], -["features.createroom.impl.configureroom_ConfigureRoomViewLight_5_en","",20236,], -["features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_0_en","features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Night_0_en",20236,], -["features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_1_en","features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Night_1_en",20236,], -["features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_2_en","features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Night_2_en",20236,], -["features.roomlist.impl.components_ConfirmRecoveryKeyBanner_Day_0_en","features.roomlist.impl.components_ConfirmRecoveryKeyBanner_Night_0_en",20236,], +["features.createroom.impl.configureroom_ConfigureRoomViewDark_0_en","",20238,], +["features.createroom.impl.configureroom_ConfigureRoomViewDark_1_en","",20238,], +["features.createroom.impl.configureroom_ConfigureRoomViewDark_2_en","",20238,], +["features.createroom.impl.configureroom_ConfigureRoomViewDark_3_en","",20238,], +["features.createroom.impl.configureroom_ConfigureRoomViewDark_4_en","",20238,], +["features.createroom.impl.configureroom_ConfigureRoomViewDark_5_en","",20238,], +["features.createroom.impl.configureroom_ConfigureRoomViewLight_0_en","",20238,], +["features.createroom.impl.configureroom_ConfigureRoomViewLight_1_en","",20238,], +["features.createroom.impl.configureroom_ConfigureRoomViewLight_2_en","",20238,], +["features.createroom.impl.configureroom_ConfigureRoomViewLight_3_en","",20238,], +["features.createroom.impl.configureroom_ConfigureRoomViewLight_4_en","",20238,], +["features.createroom.impl.configureroom_ConfigureRoomViewLight_5_en","",20238,], +["features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_0_en","features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Night_0_en",20238,], +["features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_1_en","features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Night_1_en",20238,], +["features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_2_en","features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Night_2_en",20238,], +["features.roomlist.impl.components_ConfirmRecoveryKeyBanner_Day_0_en","features.roomlist.impl.components_ConfirmRecoveryKeyBanner_Night_0_en",20238,], ["libraries.designsystem.components.dialogs_ConfirmationDialogContent_Dialogs_en","",0,], ["libraries.designsystem.components.dialogs_ConfirmationDialog_Day_0_en","libraries.designsystem.components.dialogs_ConfirmationDialog_Night_0_en",0,], ["features.networkmonitor.api.ui_ConnectivityIndicatorView_Day_0_en","features.networkmonitor.api.ui_ConnectivityIndicatorView_Night_0_en",0,], ["libraries.designsystem.atomic.atoms_CounterAtom_Day_0_en","libraries.designsystem.atomic.atoms_CounterAtom_Night_0_en",0,], -["features.rageshake.api.crash_CrashDetectionView_Day_0_en","features.rageshake.api.crash_CrashDetectionView_Night_0_en",20236,], -["features.login.impl.screens.createaccount_CreateAccountView_Day_0_en","features.login.impl.screens.createaccount_CreateAccountView_Night_0_en",20236,], -["features.login.impl.screens.createaccount_CreateAccountView_Day_1_en","features.login.impl.screens.createaccount_CreateAccountView_Night_1_en",20236,], -["features.login.impl.screens.createaccount_CreateAccountView_Day_2_en","features.login.impl.screens.createaccount_CreateAccountView_Night_2_en",20236,], -["features.login.impl.screens.createaccount_CreateAccountView_Day_3_en","features.login.impl.screens.createaccount_CreateAccountView_Night_3_en",20236,], -["libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Day_0_en","libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Night_0_en",20236,], -["libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Day_1_en","libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Night_1_en",20236,], -["features.poll.impl.create_CreatePollView_Day_0_en","features.poll.impl.create_CreatePollView_Night_0_en",20236,], -["features.poll.impl.create_CreatePollView_Day_1_en","features.poll.impl.create_CreatePollView_Night_1_en",20236,], -["features.poll.impl.create_CreatePollView_Day_2_en","features.poll.impl.create_CreatePollView_Night_2_en",20236,], -["features.poll.impl.create_CreatePollView_Day_3_en","features.poll.impl.create_CreatePollView_Night_3_en",20236,], -["features.poll.impl.create_CreatePollView_Day_4_en","features.poll.impl.create_CreatePollView_Night_4_en",20236,], -["features.poll.impl.create_CreatePollView_Day_5_en","features.poll.impl.create_CreatePollView_Night_5_en",20236,], -["features.poll.impl.create_CreatePollView_Day_6_en","features.poll.impl.create_CreatePollView_Night_6_en",20236,], -["features.poll.impl.create_CreatePollView_Day_7_en","features.poll.impl.create_CreatePollView_Night_7_en",20236,], -["features.createroom.impl.root_CreateRoomRootView_Day_0_en","features.createroom.impl.root_CreateRoomRootView_Night_0_en",20236,], -["features.createroom.impl.root_CreateRoomRootView_Day_1_en","features.createroom.impl.root_CreateRoomRootView_Night_1_en",20236,], -["features.createroom.impl.root_CreateRoomRootView_Day_2_en","features.createroom.impl.root_CreateRoomRootView_Night_2_en",20236,], -["features.createroom.impl.root_CreateRoomRootView_Day_3_en","features.createroom.impl.root_CreateRoomRootView_Night_3_en",20236,], -["features.createroom.impl.root_CreateRoomRootView_Day_4_en","features.createroom.impl.root_CreateRoomRootView_Night_4_en",20236,], -["features.createroom.impl.root_CreateRoomRootView_Day_5_en","features.createroom.impl.root_CreateRoomRootView_Night_5_en",20236,], -["libraries.dateformatter.impl.previews_DateFormatterModeView_0_en","",20236,], -["libraries.dateformatter.impl.previews_DateFormatterModeView_1_en","",20236,], -["libraries.dateformatter.impl.previews_DateFormatterModeView_2_en","",20236,], -["libraries.dateformatter.impl.previews_DateFormatterModeView_3_en","",20236,], -["libraries.dateformatter.impl.previews_DateFormatterModeView_4_en","",20236,], +["features.rageshake.api.crash_CrashDetectionView_Day_0_en","features.rageshake.api.crash_CrashDetectionView_Night_0_en",20238,], +["features.login.impl.screens.createaccount_CreateAccountView_Day_0_en","features.login.impl.screens.createaccount_CreateAccountView_Night_0_en",20238,], +["features.login.impl.screens.createaccount_CreateAccountView_Day_1_en","features.login.impl.screens.createaccount_CreateAccountView_Night_1_en",20238,], +["features.login.impl.screens.createaccount_CreateAccountView_Day_2_en","features.login.impl.screens.createaccount_CreateAccountView_Night_2_en",20238,], +["features.login.impl.screens.createaccount_CreateAccountView_Day_3_en","features.login.impl.screens.createaccount_CreateAccountView_Night_3_en",20238,], +["libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Day_0_en","libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Night_0_en",20238,], +["libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Day_1_en","libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Night_1_en",20238,], +["features.poll.impl.create_CreatePollView_Day_0_en","features.poll.impl.create_CreatePollView_Night_0_en",20238,], +["features.poll.impl.create_CreatePollView_Day_1_en","features.poll.impl.create_CreatePollView_Night_1_en",20238,], +["features.poll.impl.create_CreatePollView_Day_2_en","features.poll.impl.create_CreatePollView_Night_2_en",20238,], +["features.poll.impl.create_CreatePollView_Day_3_en","features.poll.impl.create_CreatePollView_Night_3_en",20238,], +["features.poll.impl.create_CreatePollView_Day_4_en","features.poll.impl.create_CreatePollView_Night_4_en",20238,], +["features.poll.impl.create_CreatePollView_Day_5_en","features.poll.impl.create_CreatePollView_Night_5_en",20238,], +["features.poll.impl.create_CreatePollView_Day_6_en","features.poll.impl.create_CreatePollView_Night_6_en",20238,], +["features.poll.impl.create_CreatePollView_Day_7_en","features.poll.impl.create_CreatePollView_Night_7_en",20238,], +["features.createroom.impl.root_CreateRoomRootView_Day_0_en","features.createroom.impl.root_CreateRoomRootView_Night_0_en",20238,], +["features.createroom.impl.root_CreateRoomRootView_Day_1_en","features.createroom.impl.root_CreateRoomRootView_Night_1_en",20238,], +["features.createroom.impl.root_CreateRoomRootView_Day_2_en","features.createroom.impl.root_CreateRoomRootView_Night_2_en",20238,], +["features.createroom.impl.root_CreateRoomRootView_Day_3_en","features.createroom.impl.root_CreateRoomRootView_Night_3_en",20238,], +["features.createroom.impl.root_CreateRoomRootView_Day_4_en","features.createroom.impl.root_CreateRoomRootView_Night_4_en",20238,], +["features.createroom.impl.root_CreateRoomRootView_Day_5_en","features.createroom.impl.root_CreateRoomRootView_Night_5_en",20238,], +["libraries.dateformatter.impl.previews_DateFormatterModeView_0_en","",20238,], +["libraries.dateformatter.impl.previews_DateFormatterModeView_1_en","",20238,], +["libraries.dateformatter.impl.previews_DateFormatterModeView_2_en","",20238,], +["libraries.dateformatter.impl.previews_DateFormatterModeView_3_en","",20238,], +["libraries.dateformatter.impl.previews_DateFormatterModeView_4_en","",20238,], ["libraries.mediaviewer.impl.gallery.ui_DateItemView_Day_0_en","libraries.mediaviewer.impl.gallery.ui_DateItemView_Night_0_en",0,], ["libraries.mediaviewer.impl.gallery.ui_DateItemView_Day_1_en","libraries.mediaviewer.impl.gallery.ui_DateItemView_Night_1_en",0,], -["libraries.designsystem.theme.components.previews_DatePickerDark_DateTime_pickers_en","",20236,], -["libraries.designsystem.theme.components.previews_DatePickerLight_DateTime_pickers_en","",20236,], -["features.invite.impl.declineandblock_DeclineAndBlockView_Day_0_en","features.invite.impl.declineandblock_DeclineAndBlockView_Night_0_en",20236,], -["features.invite.impl.declineandblock_DeclineAndBlockView_Day_1_en","features.invite.impl.declineandblock_DeclineAndBlockView_Night_1_en",20236,], -["features.invite.impl.declineandblock_DeclineAndBlockView_Day_2_en","features.invite.impl.declineandblock_DeclineAndBlockView_Night_2_en",20236,], -["features.invite.impl.declineandblock_DeclineAndBlockView_Day_3_en","features.invite.impl.declineandblock_DeclineAndBlockView_Night_3_en",20236,], -["features.invite.impl.declineandblock_DeclineAndBlockView_Day_4_en","features.invite.impl.declineandblock_DeclineAndBlockView_Night_4_en",20236,], +["libraries.designsystem.theme.components.previews_DatePickerDark_DateTime_pickers_en","",20238,], +["libraries.designsystem.theme.components.previews_DatePickerLight_DateTime_pickers_en","",20238,], +["features.invite.impl.declineandblock_DeclineAndBlockView_Day_0_en","features.invite.impl.declineandblock_DeclineAndBlockView_Night_0_en",20238,], +["features.invite.impl.declineandblock_DeclineAndBlockView_Day_1_en","features.invite.impl.declineandblock_DeclineAndBlockView_Night_1_en",20238,], +["features.invite.impl.declineandblock_DeclineAndBlockView_Day_2_en","features.invite.impl.declineandblock_DeclineAndBlockView_Night_2_en",20238,], +["features.invite.impl.declineandblock_DeclineAndBlockView_Day_3_en","features.invite.impl.declineandblock_DeclineAndBlockView_Night_3_en",20238,], +["features.invite.impl.declineandblock_DeclineAndBlockView_Day_4_en","features.invite.impl.declineandblock_DeclineAndBlockView_Night_4_en",20238,], ["features.logout.impl.direct_DefaultDirectLogoutView_Day_0_en","features.logout.impl.direct_DefaultDirectLogoutView_Night_0_en",0,], -["features.logout.impl.direct_DefaultDirectLogoutView_Day_1_en","features.logout.impl.direct_DefaultDirectLogoutView_Night_1_en",20236,], -["features.logout.impl.direct_DefaultDirectLogoutView_Day_2_en","features.logout.impl.direct_DefaultDirectLogoutView_Night_2_en",20236,], -["features.logout.impl.direct_DefaultDirectLogoutView_Day_3_en","features.logout.impl.direct_DefaultDirectLogoutView_Night_3_en",20236,], +["features.logout.impl.direct_DefaultDirectLogoutView_Day_1_en","features.logout.impl.direct_DefaultDirectLogoutView_Night_1_en",20238,], +["features.logout.impl.direct_DefaultDirectLogoutView_Day_2_en","features.logout.impl.direct_DefaultDirectLogoutView_Night_2_en",20238,], +["features.logout.impl.direct_DefaultDirectLogoutView_Day_3_en","features.logout.impl.direct_DefaultDirectLogoutView_Night_3_en",20238,], ["features.logout.impl.direct_DefaultDirectLogoutView_Day_4_en","features.logout.impl.direct_DefaultDirectLogoutView_Night_4_en",0,], -["features.preferences.impl.notifications.edit_DefaultNotificationSettingOption_Day_0_en","features.preferences.impl.notifications.edit_DefaultNotificationSettingOption_Night_0_en",20236,], -["features.roomlist.impl.components_DefaultRoomListTopBarWithIndicator_Day_0_en","features.roomlist.impl.components_DefaultRoomListTopBarWithIndicator_Night_0_en",20236,], -["features.roomlist.impl.components_DefaultRoomListTopBar_Day_0_en","features.roomlist.impl.components_DefaultRoomListTopBar_Night_0_en",20236,], +["features.preferences.impl.notifications.edit_DefaultNotificationSettingOption_Day_0_en","features.preferences.impl.notifications.edit_DefaultNotificationSettingOption_Night_0_en",20238,], +["features.roomlist.impl.components_DefaultRoomListTopBarWithIndicator_Day_0_en","features.roomlist.impl.components_DefaultRoomListTopBarWithIndicator_Night_0_en",20238,], +["features.roomlist.impl.components_DefaultRoomListTopBar_Day_0_en","features.roomlist.impl.components_DefaultRoomListTopBar_Night_0_en",20238,], ["features.licenses.impl.details_DependenciesDetailsView_Day_0_en","features.licenses.impl.details_DependenciesDetailsView_Night_0_en",0,], -["features.licenses.impl.list_DependencyLicensesListView_Day_0_en","features.licenses.impl.list_DependencyLicensesListView_Night_0_en",20236,], -["features.licenses.impl.list_DependencyLicensesListView_Day_1_en","features.licenses.impl.list_DependencyLicensesListView_Night_1_en",20236,], -["features.licenses.impl.list_DependencyLicensesListView_Day_2_en","features.licenses.impl.list_DependencyLicensesListView_Night_2_en",20236,], -["features.licenses.impl.list_DependencyLicensesListView_Day_3_en","features.licenses.impl.list_DependencyLicensesListView_Night_3_en",20236,], -["features.preferences.impl.developer_DeveloperSettingsView_Day_0_en","features.preferences.impl.developer_DeveloperSettingsView_Night_0_en",20236,], -["features.preferences.impl.developer_DeveloperSettingsView_Day_1_en","features.preferences.impl.developer_DeveloperSettingsView_Night_1_en",20236,], -["features.preferences.impl.developer_DeveloperSettingsView_Day_2_en","features.preferences.impl.developer_DeveloperSettingsView_Night_2_en",20236,], +["features.licenses.impl.list_DependencyLicensesListView_Day_0_en","features.licenses.impl.list_DependencyLicensesListView_Night_0_en",20238,], +["features.licenses.impl.list_DependencyLicensesListView_Day_1_en","features.licenses.impl.list_DependencyLicensesListView_Night_1_en",20238,], +["features.licenses.impl.list_DependencyLicensesListView_Day_2_en","features.licenses.impl.list_DependencyLicensesListView_Night_2_en",20238,], +["features.licenses.impl.list_DependencyLicensesListView_Day_3_en","features.licenses.impl.list_DependencyLicensesListView_Night_3_en",20238,], +["features.preferences.impl.developer_DeveloperSettingsView_Day_0_en","features.preferences.impl.developer_DeveloperSettingsView_Night_0_en",20238,], +["features.preferences.impl.developer_DeveloperSettingsView_Day_1_en","features.preferences.impl.developer_DeveloperSettingsView_Night_1_en",20238,], +["features.preferences.impl.developer_DeveloperSettingsView_Day_2_en","features.preferences.impl.developer_DeveloperSettingsView_Night_2_en",20238,], ["libraries.designsystem.theme.components_DialogWithDestructiveButton_Dialog_with_destructive_button_Dialogs_en","",0,], ["libraries.designsystem.theme.components_DialogWithOnlyMessageAndOkButton_Dialog_with_only_message_and_ok_button_Dialogs_en","",0,], ["libraries.designsystem.theme.components_DialogWithThirdButton_Dialog_with_third_button_Dialogs_en","",0,], @@ -357,17 +357,17 @@ export const screenshots = [ ["libraries.designsystem.text_DpScale_1_0f__en","",0,], ["libraries.designsystem.text_DpScale_1_5f__en","",0,], ["libraries.designsystem.theme.components_DropdownMenuItem_Menus_en","",0,], -["features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_0_en","features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_0_en",20236,], -["features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_1_en","features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_1_en",20236,], -["features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_2_en","features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_2_en",20236,], -["features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_3_en","features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_3_en",20236,], -["features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_4_en","features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_4_en",20236,], -["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_0_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_0_en",20236,], -["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_1_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_1_en",20236,], -["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_2_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_2_en",20236,], -["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_3_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_3_en",20236,], -["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_4_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_4_en",20236,], -["features.preferences.impl.user.editprofile_EditUserProfileView_Day_0_en","features.preferences.impl.user.editprofile_EditUserProfileView_Night_0_en",20236,], +["features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_0_en","features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_0_en",20238,], +["features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_1_en","features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_1_en",20238,], +["features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_2_en","features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_2_en",20238,], +["features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_3_en","features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_3_en",20238,], +["features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_4_en","features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_4_en",20238,], +["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_0_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_0_en",20238,], +["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_1_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_1_en",20238,], +["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_2_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_2_en",20238,], +["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_3_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_3_en",20238,], +["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_4_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_4_en",20238,], +["features.preferences.impl.user.editprofile_EditUserProfileView_Day_0_en","features.preferences.impl.user.editprofile_EditUserProfileView_Night_0_en",20238,], ["libraries.matrix.ui.components_EditableAvatarView_Day_0_en","libraries.matrix.ui.components_EditableAvatarView_Night_0_en",0,], ["libraries.matrix.ui.components_EditableAvatarView_Day_1_en","libraries.matrix.ui.components_EditableAvatarView_Night_1_en",0,], ["libraries.matrix.ui.components_EditableAvatarView_Day_2_en","libraries.matrix.ui.components_EditableAvatarView_Night_2_en",0,], @@ -377,9 +377,9 @@ export const screenshots = [ ["libraries.designsystem.atomic.atoms_ElementLogoAtomMedium_Day_0_en","libraries.designsystem.atomic.atoms_ElementLogoAtomMedium_Night_0_en",0,], ["features.messages.impl.timeline.components.customreaction_EmojiItem_Day_0_en","features.messages.impl.timeline.components.customreaction_EmojiItem_Night_0_en",0,], ["features.messages.impl.timeline.components.customreaction_EmojiPicker_Day_0_en","features.messages.impl.timeline.components.customreaction_EmojiPicker_Night_0_en",0,], -["libraries.designsystem.components.dialogs_ErrorDialogContent_Dialogs_en","",20236,], -["libraries.designsystem.components.dialogs_ErrorDialogWithDoNotShowAgain_Day_0_en","libraries.designsystem.components.dialogs_ErrorDialogWithDoNotShowAgain_Night_0_en",20236,], -["libraries.designsystem.components.dialogs_ErrorDialog_Day_0_en","libraries.designsystem.components.dialogs_ErrorDialog_Night_0_en",20236,], +["libraries.designsystem.components.dialogs_ErrorDialogContent_Dialogs_en","",20238,], +["libraries.designsystem.components.dialogs_ErrorDialogWithDoNotShowAgain_Day_0_en","libraries.designsystem.components.dialogs_ErrorDialogWithDoNotShowAgain_Night_0_en",20238,], +["libraries.designsystem.components.dialogs_ErrorDialog_Day_0_en","libraries.designsystem.components.dialogs_ErrorDialog_Night_0_en",20238,], ["features.messages.impl.timeline.debug_EventDebugInfoView_Day_0_en","features.messages.impl.timeline.debug_EventDebugInfoView_Night_0_en",0,], ["libraries.featureflag.ui_FeatureListView_Day_0_en","libraries.featureflag.ui_FeatureListView_Night_0_en",0,], ["libraries.mediaviewer.impl.gallery.ui_FileItemView_Day_0_en","libraries.mediaviewer.impl.gallery.ui_FileItemView_Night_0_en",0,], @@ -397,16 +397,16 @@ export const screenshots = [ ["libraries.designsystem.theme.components_FloatingActionButton_Floating_Action_Buttons_en","",0,], ["libraries.designsystem.atomic.pages_FlowStepPage_Day_0_en","libraries.designsystem.atomic.pages_FlowStepPage_Night_0_en",0,], ["features.messages.impl.timeline.focus_FocusRequestStateView_Day_0_en","features.messages.impl.timeline.focus_FocusRequestStateView_Night_0_en",0,], -["features.messages.impl.timeline.focus_FocusRequestStateView_Day_1_en","features.messages.impl.timeline.focus_FocusRequestStateView_Night_1_en",20236,], -["features.messages.impl.timeline.focus_FocusRequestStateView_Day_2_en","features.messages.impl.timeline.focus_FocusRequestStateView_Night_2_en",20236,], -["features.messages.impl.timeline.focus_FocusRequestStateView_Day_3_en","features.messages.impl.timeline.focus_FocusRequestStateView_Night_3_en",20236,], +["features.messages.impl.timeline.focus_FocusRequestStateView_Day_1_en","features.messages.impl.timeline.focus_FocusRequestStateView_Night_1_en",20238,], +["features.messages.impl.timeline.focus_FocusRequestStateView_Day_2_en","features.messages.impl.timeline.focus_FocusRequestStateView_Night_2_en",20238,], +["features.messages.impl.timeline.focus_FocusRequestStateView_Day_3_en","features.messages.impl.timeline.focus_FocusRequestStateView_Night_3_en",20238,], ["features.messages.impl.timeline.components_FocusedEvent_Day_0_en","features.messages.impl.timeline.components_FocusedEvent_Night_0_en",0,], ["libraries.textcomposer.components_FormattingOption_Day_0_en","libraries.textcomposer.components_FormattingOption_Night_0_en",0,], ["features.messages.impl.forward_ForwardMessagesView_Day_0_en","features.messages.impl.forward_ForwardMessagesView_Night_0_en",0,], ["features.messages.impl.forward_ForwardMessagesView_Day_1_en","features.messages.impl.forward_ForwardMessagesView_Night_1_en",0,], ["features.messages.impl.forward_ForwardMessagesView_Day_2_en","features.messages.impl.forward_ForwardMessagesView_Night_2_en",0,], -["features.messages.impl.forward_ForwardMessagesView_Day_3_en","features.messages.impl.forward_ForwardMessagesView_Night_3_en",20236,], -["features.roomlist.impl.components_FullScreenIntentPermissionBanner_Day_0_en","features.roomlist.impl.components_FullScreenIntentPermissionBanner_Night_0_en",20236,], +["features.messages.impl.forward_ForwardMessagesView_Day_3_en","features.messages.impl.forward_ForwardMessagesView_Night_3_en",20238,], +["features.roomlist.impl.components_FullScreenIntentPermissionBanner_Day_0_en","features.roomlist.impl.components_FullScreenIntentPermissionBanner_Night_0_en",20238,], ["libraries.designsystem.components.button_GradientFloatingActionButtonCircleShape_Day_0_en","libraries.designsystem.components.button_GradientFloatingActionButtonCircleShape_Night_0_en",0,], ["libraries.designsystem.components.button_GradientFloatingActionButton_Day_0_en","libraries.designsystem.components.button_GradientFloatingActionButton_Night_0_en",0,], ["features.messages.impl.timeline.components.group_GroupHeaderView_Day_0_en","features.messages.impl.timeline.components.group_GroupHeaderView_Night_0_en",0,], @@ -430,8 +430,8 @@ export const screenshots = [ ["libraries.designsystem.icons_IconsCompound_Day_5_en","libraries.designsystem.icons_IconsCompound_Night_5_en",0,], ["libraries.designsystem.icons_IconsOther_Day_0_en","libraries.designsystem.icons_IconsOther_Night_0_en",0,], ["features.messages.impl.crypto.identity_IdentityChangeStateView_Day_0_en","features.messages.impl.crypto.identity_IdentityChangeStateView_Night_0_en",0,], -["features.messages.impl.crypto.identity_IdentityChangeStateView_Day_1_en","features.messages.impl.crypto.identity_IdentityChangeStateView_Night_1_en",20236,], -["features.messages.impl.crypto.identity_IdentityChangeStateView_Day_2_en","features.messages.impl.crypto.identity_IdentityChangeStateView_Night_2_en",20236,], +["features.messages.impl.crypto.identity_IdentityChangeStateView_Day_1_en","features.messages.impl.crypto.identity_IdentityChangeStateView_Night_1_en",20238,], +["features.messages.impl.crypto.identity_IdentityChangeStateView_Day_2_en","features.messages.impl.crypto.identity_IdentityChangeStateView_Night_2_en",20238,], ["libraries.mediaviewer.impl.gallery.ui_ImageItemView_Day_0_en","libraries.mediaviewer.impl.gallery.ui_ImageItemView_Night_0_en",0,], ["libraries.matrix.ui.messages.reply_InReplyToView_Day_0_en","libraries.matrix.ui.messages.reply_InReplyToView_Night_0_en",0,], ["libraries.matrix.ui.messages.reply_InReplyToView_Day_10_en","libraries.matrix.ui.messages.reply_InReplyToView_Night_10_en",0,], @@ -439,84 +439,84 @@ export const screenshots = [ ["libraries.matrix.ui.messages.reply_InReplyToView_Day_1_en","libraries.matrix.ui.messages.reply_InReplyToView_Night_1_en",0,], ["libraries.matrix.ui.messages.reply_InReplyToView_Day_2_en","libraries.matrix.ui.messages.reply_InReplyToView_Night_2_en",0,], ["libraries.matrix.ui.messages.reply_InReplyToView_Day_3_en","libraries.matrix.ui.messages.reply_InReplyToView_Night_3_en",0,], -["libraries.matrix.ui.messages.reply_InReplyToView_Day_4_en","libraries.matrix.ui.messages.reply_InReplyToView_Night_4_en",20236,], +["libraries.matrix.ui.messages.reply_InReplyToView_Day_4_en","libraries.matrix.ui.messages.reply_InReplyToView_Night_4_en",20238,], ["libraries.matrix.ui.messages.reply_InReplyToView_Day_5_en","libraries.matrix.ui.messages.reply_InReplyToView_Night_5_en",0,], ["libraries.matrix.ui.messages.reply_InReplyToView_Day_6_en","libraries.matrix.ui.messages.reply_InReplyToView_Night_6_en",0,], ["libraries.matrix.ui.messages.reply_InReplyToView_Day_7_en","libraries.matrix.ui.messages.reply_InReplyToView_Night_7_en",0,], -["libraries.matrix.ui.messages.reply_InReplyToView_Day_8_en","libraries.matrix.ui.messages.reply_InReplyToView_Night_8_en",20236,], +["libraries.matrix.ui.messages.reply_InReplyToView_Day_8_en","libraries.matrix.ui.messages.reply_InReplyToView_Night_8_en",20238,], ["libraries.matrix.ui.messages.reply_InReplyToView_Day_9_en","libraries.matrix.ui.messages.reply_InReplyToView_Night_9_en",0,], -["features.call.impl.ui_IncomingCallScreen_Day_0_en","features.call.impl.ui_IncomingCallScreen_Night_0_en",20236,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_0_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_0_en",20236,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_10_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_10_en",20236,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_11_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_11_en",20236,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_12_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_12_en",20236,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_13_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_13_en",20236,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_1_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_1_en",20236,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_2_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_2_en",20236,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_3_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_3_en",20236,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_4_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_4_en",20236,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_5_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_5_en",20236,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_6_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_6_en",20236,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_7_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_7_en",20236,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_8_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_8_en",20236,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_9_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_9_en",20236,], +["features.call.impl.ui_IncomingCallScreen_Day_0_en","features.call.impl.ui_IncomingCallScreen_Night_0_en",20238,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_0_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_0_en",20238,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_10_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_10_en",20238,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_11_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_11_en",20238,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_12_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_12_en",20238,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_13_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_13_en",20238,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_1_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_1_en",20238,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_2_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_2_en",20238,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_3_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_3_en",20238,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_4_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_4_en",20238,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_5_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_5_en",20238,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_6_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_6_en",20238,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_7_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_7_en",20238,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_8_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_8_en",20238,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_9_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_9_en",20238,], ["features.networkmonitor.api.ui_Indicator_Day_0_en","features.networkmonitor.api.ui_Indicator_Night_0_en",0,], ["libraries.designsystem.atomic.molecules_InfoListItemMolecule_Day_0_en","libraries.designsystem.atomic.molecules_InfoListItemMolecule_Night_0_en",0,], ["libraries.designsystem.atomic.organisms_InfoListOrganism_Day_0_en","libraries.designsystem.atomic.organisms_InfoListOrganism_Night_0_en",0,], -["libraries.matrix.ui.components_InviteSenderView_Day_0_en","libraries.matrix.ui.components_InviteSenderView_Night_0_en",20236,], -["features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Day_0_en","features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Night_0_en",20236,], -["features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Day_1_en","features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Night_1_en",20236,], -["features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Day_2_en","features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Night_2_en",20236,], -["features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Day_3_en","features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Night_3_en",20236,], -["features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Day_4_en","features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Night_4_en",20236,], -["features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Day_5_en","features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Night_5_en",20236,], +["libraries.matrix.ui.components_InviteSenderView_Day_0_en","libraries.matrix.ui.components_InviteSenderView_Night_0_en",20238,], +["features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Day_0_en","features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Night_0_en",20238,], +["features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Day_1_en","features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Night_1_en",20238,], +["features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Day_2_en","features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Night_2_en",20238,], +["features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Day_3_en","features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Night_3_en",20238,], +["features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Day_4_en","features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Night_4_en",20238,], +["features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Day_5_en","features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Night_5_en",20238,], ["features.joinroom.impl_JoinRoomView_Day_0_en","features.joinroom.impl_JoinRoomView_Night_0_en",0,], -["features.joinroom.impl_JoinRoomView_Day_10_en","features.joinroom.impl_JoinRoomView_Night_10_en",20236,], -["features.joinroom.impl_JoinRoomView_Day_11_en","features.joinroom.impl_JoinRoomView_Night_11_en",20236,], -["features.joinroom.impl_JoinRoomView_Day_12_en","features.joinroom.impl_JoinRoomView_Night_12_en",20236,], -["features.joinroom.impl_JoinRoomView_Day_13_en","features.joinroom.impl_JoinRoomView_Night_13_en",20236,], -["features.joinroom.impl_JoinRoomView_Day_14_en","features.joinroom.impl_JoinRoomView_Night_14_en",20236,], -["features.joinroom.impl_JoinRoomView_Day_15_en","features.joinroom.impl_JoinRoomView_Night_15_en",20236,], -["features.joinroom.impl_JoinRoomView_Day_16_en","features.joinroom.impl_JoinRoomView_Night_16_en",20236,], -["features.joinroom.impl_JoinRoomView_Day_1_en","features.joinroom.impl_JoinRoomView_Night_1_en",20236,], -["features.joinroom.impl_JoinRoomView_Day_2_en","features.joinroom.impl_JoinRoomView_Night_2_en",20236,], -["features.joinroom.impl_JoinRoomView_Day_3_en","features.joinroom.impl_JoinRoomView_Night_3_en",20236,], -["features.joinroom.impl_JoinRoomView_Day_4_en","features.joinroom.impl_JoinRoomView_Night_4_en",20236,], -["features.joinroom.impl_JoinRoomView_Day_5_en","features.joinroom.impl_JoinRoomView_Night_5_en",20236,], -["features.joinroom.impl_JoinRoomView_Day_6_en","features.joinroom.impl_JoinRoomView_Night_6_en",20236,], -["features.joinroom.impl_JoinRoomView_Day_7_en","features.joinroom.impl_JoinRoomView_Night_7_en",20236,], -["features.joinroom.impl_JoinRoomView_Day_8_en","features.joinroom.impl_JoinRoomView_Night_8_en",20236,], -["features.joinroom.impl_JoinRoomView_Day_9_en","features.joinroom.impl_JoinRoomView_Night_9_en",20236,], -["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_0_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_0_en",20236,], -["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_1_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_1_en",20236,], -["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_2_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_2_en",20236,], -["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_3_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_3_en",20236,], -["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_4_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_4_en",20236,], -["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_5_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_5_en",20236,], -["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_6_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_6_en",20236,], -["features.knockrequests.impl.list_KnockRequestsListView_Day_0_en","features.knockrequests.impl.list_KnockRequestsListView_Night_0_en",20236,], -["features.knockrequests.impl.list_KnockRequestsListView_Day_10_en","features.knockrequests.impl.list_KnockRequestsListView_Night_10_en",20236,], -["features.knockrequests.impl.list_KnockRequestsListView_Day_1_en","features.knockrequests.impl.list_KnockRequestsListView_Night_1_en",20236,], -["features.knockrequests.impl.list_KnockRequestsListView_Day_2_en","features.knockrequests.impl.list_KnockRequestsListView_Night_2_en",20236,], -["features.knockrequests.impl.list_KnockRequestsListView_Day_3_en","features.knockrequests.impl.list_KnockRequestsListView_Night_3_en",20236,], -["features.knockrequests.impl.list_KnockRequestsListView_Day_4_en","features.knockrequests.impl.list_KnockRequestsListView_Night_4_en",20236,], -["features.knockrequests.impl.list_KnockRequestsListView_Day_5_en","features.knockrequests.impl.list_KnockRequestsListView_Night_5_en",20236,], -["features.knockrequests.impl.list_KnockRequestsListView_Day_6_en","features.knockrequests.impl.list_KnockRequestsListView_Night_6_en",20236,], -["features.knockrequests.impl.list_KnockRequestsListView_Day_7_en","features.knockrequests.impl.list_KnockRequestsListView_Night_7_en",20236,], -["features.knockrequests.impl.list_KnockRequestsListView_Day_8_en","features.knockrequests.impl.list_KnockRequestsListView_Night_8_en",20236,], -["features.knockrequests.impl.list_KnockRequestsListView_Day_9_en","features.knockrequests.impl.list_KnockRequestsListView_Night_9_en",20236,], +["features.joinroom.impl_JoinRoomView_Day_10_en","features.joinroom.impl_JoinRoomView_Night_10_en",20238,], +["features.joinroom.impl_JoinRoomView_Day_11_en","features.joinroom.impl_JoinRoomView_Night_11_en",20238,], +["features.joinroom.impl_JoinRoomView_Day_12_en","features.joinroom.impl_JoinRoomView_Night_12_en",20238,], +["features.joinroom.impl_JoinRoomView_Day_13_en","features.joinroom.impl_JoinRoomView_Night_13_en",20238,], +["features.joinroom.impl_JoinRoomView_Day_14_en","features.joinroom.impl_JoinRoomView_Night_14_en",20238,], +["features.joinroom.impl_JoinRoomView_Day_15_en","features.joinroom.impl_JoinRoomView_Night_15_en",20238,], +["features.joinroom.impl_JoinRoomView_Day_16_en","features.joinroom.impl_JoinRoomView_Night_16_en",20238,], +["features.joinroom.impl_JoinRoomView_Day_1_en","features.joinroom.impl_JoinRoomView_Night_1_en",20238,], +["features.joinroom.impl_JoinRoomView_Day_2_en","features.joinroom.impl_JoinRoomView_Night_2_en",20238,], +["features.joinroom.impl_JoinRoomView_Day_3_en","features.joinroom.impl_JoinRoomView_Night_3_en",20238,], +["features.joinroom.impl_JoinRoomView_Day_4_en","features.joinroom.impl_JoinRoomView_Night_4_en",20238,], +["features.joinroom.impl_JoinRoomView_Day_5_en","features.joinroom.impl_JoinRoomView_Night_5_en",20238,], +["features.joinroom.impl_JoinRoomView_Day_6_en","features.joinroom.impl_JoinRoomView_Night_6_en",20238,], +["features.joinroom.impl_JoinRoomView_Day_7_en","features.joinroom.impl_JoinRoomView_Night_7_en",20238,], +["features.joinroom.impl_JoinRoomView_Day_8_en","features.joinroom.impl_JoinRoomView_Night_8_en",20238,], +["features.joinroom.impl_JoinRoomView_Day_9_en","features.joinroom.impl_JoinRoomView_Night_9_en",20238,], +["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_0_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_0_en",20238,], +["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_1_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_1_en",20238,], +["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_2_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_2_en",20238,], +["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_3_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_3_en",20238,], +["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_4_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_4_en",20238,], +["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_5_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_5_en",20238,], +["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_6_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_6_en",20238,], +["features.knockrequests.impl.list_KnockRequestsListView_Day_0_en","features.knockrequests.impl.list_KnockRequestsListView_Night_0_en",20238,], +["features.knockrequests.impl.list_KnockRequestsListView_Day_10_en","features.knockrequests.impl.list_KnockRequestsListView_Night_10_en",20238,], +["features.knockrequests.impl.list_KnockRequestsListView_Day_1_en","features.knockrequests.impl.list_KnockRequestsListView_Night_1_en",20238,], +["features.knockrequests.impl.list_KnockRequestsListView_Day_2_en","features.knockrequests.impl.list_KnockRequestsListView_Night_2_en",20238,], +["features.knockrequests.impl.list_KnockRequestsListView_Day_3_en","features.knockrequests.impl.list_KnockRequestsListView_Night_3_en",20238,], +["features.knockrequests.impl.list_KnockRequestsListView_Day_4_en","features.knockrequests.impl.list_KnockRequestsListView_Night_4_en",20238,], +["features.knockrequests.impl.list_KnockRequestsListView_Day_5_en","features.knockrequests.impl.list_KnockRequestsListView_Night_5_en",20238,], +["features.knockrequests.impl.list_KnockRequestsListView_Day_6_en","features.knockrequests.impl.list_KnockRequestsListView_Night_6_en",20238,], +["features.knockrequests.impl.list_KnockRequestsListView_Day_7_en","features.knockrequests.impl.list_KnockRequestsListView_Night_7_en",20238,], +["features.knockrequests.impl.list_KnockRequestsListView_Day_8_en","features.knockrequests.impl.list_KnockRequestsListView_Night_8_en",20238,], +["features.knockrequests.impl.list_KnockRequestsListView_Day_9_en","features.knockrequests.impl.list_KnockRequestsListView_Night_9_en",20238,], ["libraries.designsystem.components_LabelledCheckbox_Toggles_en","",0,], ["features.leaveroom.api_LeaveRoomView_Day_0_en","features.leaveroom.api_LeaveRoomView_Night_0_en",0,], -["features.leaveroom.api_LeaveRoomView_Day_1_en","features.leaveroom.api_LeaveRoomView_Night_1_en",20236,], -["features.leaveroom.api_LeaveRoomView_Day_2_en","features.leaveroom.api_LeaveRoomView_Night_2_en",20236,], -["features.leaveroom.api_LeaveRoomView_Day_3_en","features.leaveroom.api_LeaveRoomView_Night_3_en",20236,], -["features.leaveroom.api_LeaveRoomView_Day_4_en","features.leaveroom.api_LeaveRoomView_Night_4_en",20236,], -["features.leaveroom.api_LeaveRoomView_Day_5_en","features.leaveroom.api_LeaveRoomView_Night_5_en",20236,], -["features.leaveroom.api_LeaveRoomView_Day_6_en","features.leaveroom.api_LeaveRoomView_Night_6_en",20236,], +["features.leaveroom.api_LeaveRoomView_Day_1_en","features.leaveroom.api_LeaveRoomView_Night_1_en",20238,], +["features.leaveroom.api_LeaveRoomView_Day_2_en","features.leaveroom.api_LeaveRoomView_Night_2_en",20238,], +["features.leaveroom.api_LeaveRoomView_Day_3_en","features.leaveroom.api_LeaveRoomView_Night_3_en",20238,], +["features.leaveroom.api_LeaveRoomView_Day_4_en","features.leaveroom.api_LeaveRoomView_Night_4_en",20238,], +["features.leaveroom.api_LeaveRoomView_Day_5_en","features.leaveroom.api_LeaveRoomView_Night_5_en",20238,], +["features.leaveroom.api_LeaveRoomView_Day_6_en","features.leaveroom.api_LeaveRoomView_Night_6_en",20238,], ["libraries.designsystem.background_LightGradientBackground_Day_0_en","libraries.designsystem.background_LightGradientBackground_Night_0_en",0,], ["libraries.designsystem.theme.components_LinearProgressIndicator_Progress_Indicators_en","",0,], ["features.messages.impl.link_LinkView_Day_0_en","features.messages.impl.link_LinkView_Night_0_en",0,], -["features.messages.impl.link_LinkView_Day_1_en","features.messages.impl.link_LinkView_Night_1_en",20236,], +["features.messages.impl.link_LinkView_Day_1_en","features.messages.impl.link_LinkView_Night_1_en",20238,], ["libraries.designsystem.components.dialogs_ListDialogContent_Dialogs_en","",0,], ["libraries.designsystem.components.dialogs_ListDialog_Day_0_en","libraries.designsystem.components.dialogs_ListDialog_Night_0_en",0,], ["libraries.designsystem.theme.components_ListItemPrimaryActionWithIcon_List_item_-_Primary_action_&_Icon_List_items_en","",0,], @@ -571,31 +571,31 @@ export const screenshots = [ ["libraries.designsystem.theme.components_ListSupportingTextSmallPadding_List_supporting_text_-_small_padding_List_sections_en","",0,], ["libraries.textcomposer.components_LiveWaveformView_Day_0_en","libraries.textcomposer.components_LiveWaveformView_Night_0_en",0,], ["appnav.room.joined_LoadingRoomNodeView_Day_0_en","appnav.room.joined_LoadingRoomNodeView_Night_0_en",0,], -["appnav.room.joined_LoadingRoomNodeView_Day_1_en","appnav.room.joined_LoadingRoomNodeView_Night_1_en",20236,], -["features.lockscreen.impl.settings_LockScreenSettingsView_Day_0_en","features.lockscreen.impl.settings_LockScreenSettingsView_Night_0_en",20236,], -["features.lockscreen.impl.settings_LockScreenSettingsView_Day_1_en","features.lockscreen.impl.settings_LockScreenSettingsView_Night_1_en",20236,], -["features.lockscreen.impl.settings_LockScreenSettingsView_Day_2_en","features.lockscreen.impl.settings_LockScreenSettingsView_Night_2_en",20236,], +["appnav.room.joined_LoadingRoomNodeView_Day_1_en","appnav.room.joined_LoadingRoomNodeView_Night_1_en",20238,], +["features.lockscreen.impl.settings_LockScreenSettingsView_Day_0_en","features.lockscreen.impl.settings_LockScreenSettingsView_Night_0_en",20238,], +["features.lockscreen.impl.settings_LockScreenSettingsView_Day_1_en","features.lockscreen.impl.settings_LockScreenSettingsView_Night_1_en",20238,], +["features.lockscreen.impl.settings_LockScreenSettingsView_Day_2_en","features.lockscreen.impl.settings_LockScreenSettingsView_Night_2_en",20238,], ["appnav.loggedin_LoggedInView_Day_0_en","appnav.loggedin_LoggedInView_Night_0_en",0,], -["appnav.loggedin_LoggedInView_Day_1_en","appnav.loggedin_LoggedInView_Night_1_en",20236,], -["appnav.loggedin_LoggedInView_Day_2_en","appnav.loggedin_LoggedInView_Night_2_en",20236,], -["appnav.loggedin_LoggedInView_Day_3_en","appnav.loggedin_LoggedInView_Night_3_en",20236,], -["features.login.impl.screens.loginpassword_LoginPasswordView_Day_0_en","features.login.impl.screens.loginpassword_LoginPasswordView_Night_0_en",20236,], -["features.login.impl.screens.loginpassword_LoginPasswordView_Day_1_en","features.login.impl.screens.loginpassword_LoginPasswordView_Night_1_en",20236,], -["features.login.impl.screens.loginpassword_LoginPasswordView_Day_2_en","features.login.impl.screens.loginpassword_LoginPasswordView_Night_2_en",20236,], -["features.logout.impl_LogoutView_Day_0_en","features.logout.impl_LogoutView_Night_0_en",20236,], -["features.logout.impl_LogoutView_Day_10_en","features.logout.impl_LogoutView_Night_10_en",20236,], -["features.logout.impl_LogoutView_Day_11_en","features.logout.impl_LogoutView_Night_11_en",20236,], -["features.logout.impl_LogoutView_Day_1_en","features.logout.impl_LogoutView_Night_1_en",20236,], -["features.logout.impl_LogoutView_Day_2_en","features.logout.impl_LogoutView_Night_2_en",20236,], -["features.logout.impl_LogoutView_Day_3_en","features.logout.impl_LogoutView_Night_3_en",20236,], -["features.logout.impl_LogoutView_Day_4_en","features.logout.impl_LogoutView_Night_4_en",20236,], -["features.logout.impl_LogoutView_Day_5_en","features.logout.impl_LogoutView_Night_5_en",20236,], -["features.logout.impl_LogoutView_Day_6_en","features.logout.impl_LogoutView_Night_6_en",20236,], -["features.logout.impl_LogoutView_Day_7_en","features.logout.impl_LogoutView_Night_7_en",20236,], -["features.logout.impl_LogoutView_Day_8_en","features.logout.impl_LogoutView_Night_8_en",20236,], -["features.logout.impl_LogoutView_Day_9_en","features.logout.impl_LogoutView_Night_9_en",20236,], +["appnav.loggedin_LoggedInView_Day_1_en","appnav.loggedin_LoggedInView_Night_1_en",20238,], +["appnav.loggedin_LoggedInView_Day_2_en","appnav.loggedin_LoggedInView_Night_2_en",20238,], +["appnav.loggedin_LoggedInView_Day_3_en","appnav.loggedin_LoggedInView_Night_3_en",20238,], +["features.login.impl.screens.loginpassword_LoginPasswordView_Day_0_en","features.login.impl.screens.loginpassword_LoginPasswordView_Night_0_en",20238,], +["features.login.impl.screens.loginpassword_LoginPasswordView_Day_1_en","features.login.impl.screens.loginpassword_LoginPasswordView_Night_1_en",20238,], +["features.login.impl.screens.loginpassword_LoginPasswordView_Day_2_en","features.login.impl.screens.loginpassword_LoginPasswordView_Night_2_en",20238,], +["features.logout.impl_LogoutView_Day_0_en","features.logout.impl_LogoutView_Night_0_en",20238,], +["features.logout.impl_LogoutView_Day_10_en","features.logout.impl_LogoutView_Night_10_en",20238,], +["features.logout.impl_LogoutView_Day_11_en","features.logout.impl_LogoutView_Night_11_en",20238,], +["features.logout.impl_LogoutView_Day_1_en","features.logout.impl_LogoutView_Night_1_en",20238,], +["features.logout.impl_LogoutView_Day_2_en","features.logout.impl_LogoutView_Night_2_en",20238,], +["features.logout.impl_LogoutView_Day_3_en","features.logout.impl_LogoutView_Night_3_en",20238,], +["features.logout.impl_LogoutView_Day_4_en","features.logout.impl_LogoutView_Night_4_en",20238,], +["features.logout.impl_LogoutView_Day_5_en","features.logout.impl_LogoutView_Night_5_en",20238,], +["features.logout.impl_LogoutView_Day_6_en","features.logout.impl_LogoutView_Night_6_en",20238,], +["features.logout.impl_LogoutView_Day_7_en","features.logout.impl_LogoutView_Night_7_en",20238,], +["features.logout.impl_LogoutView_Day_8_en","features.logout.impl_LogoutView_Night_8_en",20238,], +["features.logout.impl_LogoutView_Day_9_en","features.logout.impl_LogoutView_Night_9_en",20238,], ["libraries.designsystem.components.button_MainActionButton_Buttons_en","",0,], -["libraries.textcomposer_MarkdownTextComposerEdit_Day_0_en","libraries.textcomposer_MarkdownTextComposerEdit_Night_0_en",20236,], +["libraries.textcomposer_MarkdownTextComposerEdit_Day_0_en","libraries.textcomposer_MarkdownTextComposerEdit_Night_0_en",20238,], ["libraries.textcomposer.components.markdown_MarkdownTextInput_Day_0_en","libraries.textcomposer.components.markdown_MarkdownTextInput_Night_0_en",0,], ["libraries.designsystem.atomic.atoms_MatrixBadgeAtomInfo_Day_0_en","libraries.designsystem.atomic.atoms_MatrixBadgeAtomInfo_Night_0_en",0,], ["libraries.designsystem.atomic.atoms_MatrixBadgeAtomNegative_Day_0_en","libraries.designsystem.atomic.atoms_MatrixBadgeAtomNegative_Night_0_en",0,], @@ -608,22 +608,22 @@ export const screenshots = [ ["libraries.matrix.ui.components_MatrixUserRow_Day_1_en","libraries.matrix.ui.components_MatrixUserRow_Night_1_en",0,], ["libraries.mediaviewer.impl.local.audio_MediaAudioView_Day_0_en","libraries.mediaviewer.impl.local.audio_MediaAudioView_Night_0_en",0,], ["libraries.mediaviewer.impl.local.audio_MediaAudioView_Day_1_en","libraries.mediaviewer.impl.local.audio_MediaAudioView_Night_1_en",0,], -["libraries.mediaviewer.impl.details_MediaDeleteConfirmationBottomSheet_Day_0_en","libraries.mediaviewer.impl.details_MediaDeleteConfirmationBottomSheet_Night_0_en",20236,], -["libraries.mediaviewer.impl.details_MediaDetailsBottomSheet_Day_0_en","libraries.mediaviewer.impl.details_MediaDetailsBottomSheet_Night_0_en",20236,], +["libraries.mediaviewer.impl.details_MediaDeleteConfirmationBottomSheet_Day_0_en","libraries.mediaviewer.impl.details_MediaDeleteConfirmationBottomSheet_Night_0_en",20238,], +["libraries.mediaviewer.impl.details_MediaDetailsBottomSheet_Day_0_en","libraries.mediaviewer.impl.details_MediaDetailsBottomSheet_Night_0_en",20238,], ["libraries.mediaviewer.impl.local.file_MediaFileView_Day_0_en","libraries.mediaviewer.impl.local.file_MediaFileView_Night_0_en",0,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_0_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_0_en",20236,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_10_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_10_en",20236,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_11_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_11_en",20236,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_12_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_12_en",20236,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_1_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_1_en",20236,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_2_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_2_en",20236,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_3_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_3_en",20236,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_4_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_4_en",20236,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_5_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_5_en",20236,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_6_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_6_en",20236,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_7_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_7_en",20236,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_8_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_8_en",20236,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_9_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_9_en",20236,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_0_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_0_en",20238,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_10_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_10_en",20238,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_11_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_11_en",20238,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_12_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_12_en",20238,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_1_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_1_en",20238,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_2_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_2_en",20238,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_3_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_3_en",20238,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_4_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_4_en",20238,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_5_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_5_en",20238,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_6_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_6_en",20238,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_7_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_7_en",20238,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_8_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_8_en",20238,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_9_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_9_en",20238,], ["libraries.mediaviewer.impl.local.image_MediaImageView_Day_0_en","libraries.mediaviewer.impl.local.image_MediaImageView_Night_0_en",0,], ["libraries.mediaviewer.impl.local.player_MediaPlayerControllerView_Day_0_en","libraries.mediaviewer.impl.local.player_MediaPlayerControllerView_Night_0_en",0,], ["libraries.mediaviewer.impl.local.player_MediaPlayerControllerView_Day_1_en","libraries.mediaviewer.impl.local.player_MediaPlayerControllerView_Night_1_en",0,], @@ -631,14 +631,14 @@ export const screenshots = [ ["libraries.mediaviewer.impl.local.video_MediaVideoView_Day_0_en","libraries.mediaviewer.impl.local.video_MediaVideoView_Night_0_en",0,], ["libraries.mediaviewer.impl.viewer_MediaViewerView_0_en","",0,], ["libraries.mediaviewer.impl.viewer_MediaViewerView_10_en","",0,], -["libraries.mediaviewer.impl.viewer_MediaViewerView_11_en","",20236,], -["libraries.mediaviewer.impl.viewer_MediaViewerView_12_en","",20236,], +["libraries.mediaviewer.impl.viewer_MediaViewerView_11_en","",20238,], +["libraries.mediaviewer.impl.viewer_MediaViewerView_12_en","",20238,], ["libraries.mediaviewer.impl.viewer_MediaViewerView_13_en","",0,], -["libraries.mediaviewer.impl.viewer_MediaViewerView_14_en","",20236,], +["libraries.mediaviewer.impl.viewer_MediaViewerView_14_en","",20238,], ["libraries.mediaviewer.impl.viewer_MediaViewerView_15_en","",0,], ["libraries.mediaviewer.impl.viewer_MediaViewerView_16_en","",0,], ["libraries.mediaviewer.impl.viewer_MediaViewerView_1_en","",0,], -["libraries.mediaviewer.impl.viewer_MediaViewerView_2_en","",20236,], +["libraries.mediaviewer.impl.viewer_MediaViewerView_2_en","",20238,], ["libraries.mediaviewer.impl.viewer_MediaViewerView_3_en","",0,], ["libraries.mediaviewer.impl.viewer_MediaViewerView_4_en","",0,], ["libraries.mediaviewer.impl.viewer_MediaViewerView_5_en","",0,], @@ -650,7 +650,7 @@ export const screenshots = [ ["libraries.textcomposer.mentions_MentionSpanTheme_Day_0_en","libraries.textcomposer.mentions_MentionSpanTheme_Night_0_en",0,], ["libraries.designsystem.theme.components.previews_Menu_Menus_en","",0,], ["features.messages.impl.messagecomposer_MessageComposerViewVoice_Day_0_en","features.messages.impl.messagecomposer_MessageComposerViewVoice_Night_0_en",0,], -["features.messages.impl.messagecomposer_MessageComposerView_Day_0_en","features.messages.impl.messagecomposer_MessageComposerView_Night_0_en",20236,], +["features.messages.impl.messagecomposer_MessageComposerView_Day_0_en","features.messages.impl.messagecomposer_MessageComposerView_Night_0_en",20238,], ["features.messages.impl.timeline.components_MessageEventBubble_Day_0_en","features.messages.impl.timeline.components_MessageEventBubble_Night_0_en",0,], ["features.messages.impl.timeline.components_MessageEventBubble_Day_10_en","features.messages.impl.timeline.components_MessageEventBubble_Night_10_en",0,], ["features.messages.impl.timeline.components_MessageEventBubble_Day_11_en","features.messages.impl.timeline.components_MessageEventBubble_Night_11_en",0,], @@ -667,7 +667,7 @@ export const screenshots = [ ["features.messages.impl.timeline.components_MessageEventBubble_Day_7_en","features.messages.impl.timeline.components_MessageEventBubble_Night_7_en",0,], ["features.messages.impl.timeline.components_MessageEventBubble_Day_8_en","features.messages.impl.timeline.components_MessageEventBubble_Night_8_en",0,], ["features.messages.impl.timeline.components_MessageEventBubble_Day_9_en","features.messages.impl.timeline.components_MessageEventBubble_Night_9_en",0,], -["features.messages.impl.timeline.components_MessageShieldView_Day_0_en","features.messages.impl.timeline.components_MessageShieldView_Night_0_en",20236,], +["features.messages.impl.timeline.components_MessageShieldView_Day_0_en","features.messages.impl.timeline.components_MessageShieldView_Night_0_en",20238,], ["features.messages.impl.timeline.components_MessageStateEventContainer_Day_0_en","features.messages.impl.timeline.components_MessageStateEventContainer_Night_0_en",0,], ["features.messages.impl.timeline.components_MessagesReactionButtonAdd_Day_0_en","features.messages.impl.timeline.components_MessagesReactionButtonAdd_Night_0_en",0,], ["features.messages.impl.timeline.components_MessagesReactionButtonExtra_Day_0_en","features.messages.impl.timeline.components_MessagesReactionButtonExtra_Night_0_en",0,], @@ -675,25 +675,25 @@ export const screenshots = [ ["features.messages.impl.timeline.components_MessagesReactionButton_Day_1_en","features.messages.impl.timeline.components_MessagesReactionButton_Night_1_en",0,], ["features.messages.impl.timeline.components_MessagesReactionButton_Day_2_en","features.messages.impl.timeline.components_MessagesReactionButton_Night_2_en",0,], ["features.messages.impl.timeline.components_MessagesReactionButton_Day_3_en","features.messages.impl.timeline.components_MessagesReactionButton_Night_3_en",0,], -["features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Day_0_en","features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Night_0_en",20236,], -["features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Day_1_en","features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Night_1_en",20236,], -["features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Day_2_en","features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Night_2_en",20236,], -["features.messages.impl_MessagesView_Day_0_en","features.messages.impl_MessagesView_Night_0_en",20236,], -["features.messages.impl_MessagesView_Day_10_en","features.messages.impl_MessagesView_Night_10_en",20236,], -["features.messages.impl_MessagesView_Day_11_en","features.messages.impl_MessagesView_Night_11_en",20236,], -["features.messages.impl_MessagesView_Day_12_en","features.messages.impl_MessagesView_Night_12_en",20236,], -["features.messages.impl_MessagesView_Day_13_en","features.messages.impl_MessagesView_Night_13_en",20236,], -["features.messages.impl_MessagesView_Day_1_en","features.messages.impl_MessagesView_Night_1_en",20236,], -["features.messages.impl_MessagesView_Day_2_en","features.messages.impl_MessagesView_Night_2_en",20236,], -["features.messages.impl_MessagesView_Day_3_en","features.messages.impl_MessagesView_Night_3_en",20236,], -["features.messages.impl_MessagesView_Day_4_en","features.messages.impl_MessagesView_Night_4_en",20236,], -["features.messages.impl_MessagesView_Day_5_en","features.messages.impl_MessagesView_Night_5_en",20236,], -["features.messages.impl_MessagesView_Day_6_en","features.messages.impl_MessagesView_Night_6_en",20236,], -["features.messages.impl_MessagesView_Day_7_en","features.messages.impl_MessagesView_Night_7_en",20236,], -["features.messages.impl_MessagesView_Day_8_en","features.messages.impl_MessagesView_Night_8_en",20236,], -["features.messages.impl_MessagesView_Day_9_en","features.messages.impl_MessagesView_Night_9_en",20236,], +["features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Day_0_en","features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Night_0_en",20238,], +["features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Day_1_en","features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Night_1_en",20238,], +["features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Day_2_en","features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Night_2_en",20238,], +["features.messages.impl_MessagesView_Day_0_en","features.messages.impl_MessagesView_Night_0_en",20238,], +["features.messages.impl_MessagesView_Day_10_en","features.messages.impl_MessagesView_Night_10_en",20238,], +["features.messages.impl_MessagesView_Day_11_en","features.messages.impl_MessagesView_Night_11_en",20238,], +["features.messages.impl_MessagesView_Day_12_en","features.messages.impl_MessagesView_Night_12_en",20238,], +["features.messages.impl_MessagesView_Day_13_en","features.messages.impl_MessagesView_Night_13_en",20238,], +["features.messages.impl_MessagesView_Day_1_en","features.messages.impl_MessagesView_Night_1_en",20238,], +["features.messages.impl_MessagesView_Day_2_en","features.messages.impl_MessagesView_Night_2_en",20238,], +["features.messages.impl_MessagesView_Day_3_en","features.messages.impl_MessagesView_Night_3_en",20238,], +["features.messages.impl_MessagesView_Day_4_en","features.messages.impl_MessagesView_Night_4_en",20238,], +["features.messages.impl_MessagesView_Day_5_en","features.messages.impl_MessagesView_Night_5_en",20238,], +["features.messages.impl_MessagesView_Day_6_en","features.messages.impl_MessagesView_Night_6_en",20238,], +["features.messages.impl_MessagesView_Day_7_en","features.messages.impl_MessagesView_Night_7_en",20238,], +["features.messages.impl_MessagesView_Day_8_en","features.messages.impl_MessagesView_Night_8_en",20238,], +["features.messages.impl_MessagesView_Day_9_en","features.messages.impl_MessagesView_Night_9_en",20238,], ["features.migration.impl_MigrationView_Day_0_en","features.migration.impl_MigrationView_Night_0_en",0,], -["features.migration.impl_MigrationView_Day_1_en","features.migration.impl_MigrationView_Night_1_en",20236,], +["features.migration.impl_MigrationView_Day_1_en","features.migration.impl_MigrationView_Night_1_en",20238,], ["libraries.designsystem.theme.components_ModalBottomSheetDark_Bottom_Sheets_en","",0,], ["libraries.designsystem.theme.components_ModalBottomSheetLight_Bottom_Sheets_en","",0,], ["appicon.element_MonochromeIcon_en","",0,], @@ -702,21 +702,21 @@ export const screenshots = [ ["libraries.designsystem.components.list_MutipleSelectionListItemSelectedTrailingContent_Multiple_selection_List_item_-_selection_in_trailing_content_List_items_en","",0,], ["libraries.designsystem.components.list_MutipleSelectionListItemSelected_Multiple_selection_List_item_-_selection_in_supporting_text_List_items_en","",0,], ["libraries.designsystem.components.list_MutipleSelectionListItem_Multiple_selection_List_item_-_no_selection_List_items_en","",0,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_0_en","features.preferences.impl.notifications_NotificationSettingsView_Night_0_en",20236,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_10_en","features.preferences.impl.notifications_NotificationSettingsView_Night_10_en",20236,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_11_en","features.preferences.impl.notifications_NotificationSettingsView_Night_11_en",20236,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_12_en","features.preferences.impl.notifications_NotificationSettingsView_Night_12_en",20236,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_13_en","features.preferences.impl.notifications_NotificationSettingsView_Night_13_en",20236,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_1_en","features.preferences.impl.notifications_NotificationSettingsView_Night_1_en",20236,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_2_en","features.preferences.impl.notifications_NotificationSettingsView_Night_2_en",20236,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_3_en","features.preferences.impl.notifications_NotificationSettingsView_Night_3_en",20236,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_4_en","features.preferences.impl.notifications_NotificationSettingsView_Night_4_en",20236,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_5_en","features.preferences.impl.notifications_NotificationSettingsView_Night_5_en",20236,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_6_en","features.preferences.impl.notifications_NotificationSettingsView_Night_6_en",20236,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_7_en","features.preferences.impl.notifications_NotificationSettingsView_Night_7_en",20236,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_8_en","features.preferences.impl.notifications_NotificationSettingsView_Night_8_en",20236,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_9_en","features.preferences.impl.notifications_NotificationSettingsView_Night_9_en",20236,], -["features.ftue.impl.notifications_NotificationsOptInView_Day_0_en","features.ftue.impl.notifications_NotificationsOptInView_Night_0_en",20236,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_0_en","features.preferences.impl.notifications_NotificationSettingsView_Night_0_en",20238,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_10_en","features.preferences.impl.notifications_NotificationSettingsView_Night_10_en",20238,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_11_en","features.preferences.impl.notifications_NotificationSettingsView_Night_11_en",20238,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_12_en","features.preferences.impl.notifications_NotificationSettingsView_Night_12_en",20238,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_13_en","features.preferences.impl.notifications_NotificationSettingsView_Night_13_en",20238,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_1_en","features.preferences.impl.notifications_NotificationSettingsView_Night_1_en",20238,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_2_en","features.preferences.impl.notifications_NotificationSettingsView_Night_2_en",20238,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_3_en","features.preferences.impl.notifications_NotificationSettingsView_Night_3_en",20238,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_4_en","features.preferences.impl.notifications_NotificationSettingsView_Night_4_en",20238,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_5_en","features.preferences.impl.notifications_NotificationSettingsView_Night_5_en",20238,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_6_en","features.preferences.impl.notifications_NotificationSettingsView_Night_6_en",20238,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_7_en","features.preferences.impl.notifications_NotificationSettingsView_Night_7_en",20238,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_8_en","features.preferences.impl.notifications_NotificationSettingsView_Night_8_en",20238,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_9_en","features.preferences.impl.notifications_NotificationSettingsView_Night_9_en",20238,], +["features.ftue.impl.notifications_NotificationsOptInView_Day_0_en","features.ftue.impl.notifications_NotificationsOptInView_Night_0_en",20238,], ["libraries.oidc.impl.webview_OidcView_Day_0_en","libraries.oidc.impl.webview_OidcView_Night_0_en",0,], ["libraries.oidc.impl.webview_OidcView_Day_1_en","libraries.oidc.impl.webview_OidcView_Night_1_en",0,], ["libraries.designsystem.atomic.pages_OnBoardingPage_Day_0_en","libraries.designsystem.atomic.pages_OnBoardingPage_Night_0_en",0,], @@ -727,20 +727,20 @@ export const screenshots = [ ["features.login.impl.screens.onboarding_OnBoardingView_Day_4_en","features.login.impl.screens.onboarding_OnBoardingView_Night_4_en",20238,], ["features.login.impl.screens.onboarding_OnBoardingView_Day_5_en","features.login.impl.screens.onboarding_OnBoardingView_Night_5_en",20238,], ["libraries.designsystem.background_OnboardingBackground_Day_0_en","libraries.designsystem.background_OnboardingBackground_Night_0_en",0,], -["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_0_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_0_en",20236,], -["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_10_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_10_en",20236,], -["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_11_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_11_en",20236,], +["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_0_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_0_en",20238,], +["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_10_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_10_en",20238,], +["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_11_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_11_en",20238,], ["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_12_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_12_en",0,], ["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_13_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_13_en",0,], -["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_1_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_1_en",20236,], -["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_2_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_2_en",20236,], -["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_3_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_3_en",20236,], -["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_4_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_4_en",20236,], -["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_5_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_5_en",20236,], -["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_6_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_6_en",20236,], -["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_7_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_7_en",20236,], -["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_8_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_8_en",20236,], -["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_9_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_9_en",20236,], +["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_1_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_1_en",20238,], +["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_2_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_2_en",20238,], +["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_3_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_3_en",20238,], +["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_4_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_4_en",20238,], +["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_5_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_5_en",20238,], +["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_6_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_6_en",20238,], +["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_7_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_7_en",20238,], +["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_8_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_8_en",20238,], +["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_9_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_9_en",20238,], ["libraries.designsystem.theme.components_OutlinedButtonLargeLowPadding_Buttons_en","",0,], ["libraries.designsystem.theme.components_OutlinedButtonLarge_Buttons_en","",0,], ["libraries.designsystem.theme.components_OutlinedButtonMediumLowPadding_Buttons_en","",0,], @@ -754,65 +754,65 @@ export const screenshots = [ ["libraries.designsystem.components_PageTitleWithIconFull_Day_5_en","libraries.designsystem.components_PageTitleWithIconFull_Night_5_en",0,], ["libraries.designsystem.components_PageTitleWithIconFull_Day_6_en","libraries.designsystem.components_PageTitleWithIconFull_Night_6_en",0,], ["libraries.designsystem.components_PageTitleWithIconMinimal_Day_0_en","libraries.designsystem.components_PageTitleWithIconMinimal_Night_0_en",0,], -["libraries.mediaviewer.impl.local.pdf_PdfPagesErrorView_Day_0_en","libraries.mediaviewer.impl.local.pdf_PdfPagesErrorView_Night_0_en",20236,], -["features.roomdetails.impl.rolesandpermissions.changeroles_PendingMemberRowWithLongName_Day_0_en","features.roomdetails.impl.rolesandpermissions.changeroles_PendingMemberRowWithLongName_Night_0_en",20236,], -["libraries.permissions.api_PermissionsView_Day_0_en","libraries.permissions.api_PermissionsView_Night_0_en",20236,], -["libraries.permissions.api_PermissionsView_Day_1_en","libraries.permissions.api_PermissionsView_Night_1_en",20236,], -["libraries.permissions.api_PermissionsView_Day_2_en","libraries.permissions.api_PermissionsView_Night_2_en",20236,], -["libraries.permissions.api_PermissionsView_Day_3_en","libraries.permissions.api_PermissionsView_Night_3_en",20236,], +["libraries.mediaviewer.impl.local.pdf_PdfPagesErrorView_Day_0_en","libraries.mediaviewer.impl.local.pdf_PdfPagesErrorView_Night_0_en",20238,], +["features.roomdetails.impl.rolesandpermissions.changeroles_PendingMemberRowWithLongName_Day_0_en","features.roomdetails.impl.rolesandpermissions.changeroles_PendingMemberRowWithLongName_Night_0_en",20238,], +["libraries.permissions.api_PermissionsView_Day_0_en","libraries.permissions.api_PermissionsView_Night_0_en",20238,], +["libraries.permissions.api_PermissionsView_Day_1_en","libraries.permissions.api_PermissionsView_Night_1_en",20238,], +["libraries.permissions.api_PermissionsView_Day_2_en","libraries.permissions.api_PermissionsView_Night_2_en",20238,], +["libraries.permissions.api_PermissionsView_Day_3_en","libraries.permissions.api_PermissionsView_Night_3_en",20238,], ["features.lockscreen.impl.components_PinEntryTextField_Day_0_en","features.lockscreen.impl.components_PinEntryTextField_Night_0_en",0,], ["libraries.designsystem.components_PinIcon_Day_0_en","libraries.designsystem.components_PinIcon_Night_0_en",0,], ["features.lockscreen.impl.unlock.keypad_PinKeypad_Day_0_en","features.lockscreen.impl.unlock.keypad_PinKeypad_Night_0_en",0,], -["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_0_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_0_en",20236,], -["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_1_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_1_en",20236,], -["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_2_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_2_en",20236,], -["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_3_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_3_en",20236,], -["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_4_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_4_en",20236,], -["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_5_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_5_en",20236,], -["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_6_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_6_en",20236,], -["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_7_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_7_en",20236,], -["features.lockscreen.impl.unlock_PinUnlockView_Day_0_en","features.lockscreen.impl.unlock_PinUnlockView_Night_0_en",20236,], -["features.lockscreen.impl.unlock_PinUnlockView_Day_1_en","features.lockscreen.impl.unlock_PinUnlockView_Night_1_en",20236,], -["features.lockscreen.impl.unlock_PinUnlockView_Day_2_en","features.lockscreen.impl.unlock_PinUnlockView_Night_2_en",20236,], -["features.lockscreen.impl.unlock_PinUnlockView_Day_3_en","features.lockscreen.impl.unlock_PinUnlockView_Night_3_en",20236,], -["features.lockscreen.impl.unlock_PinUnlockView_Day_4_en","features.lockscreen.impl.unlock_PinUnlockView_Night_4_en",20236,], -["features.lockscreen.impl.unlock_PinUnlockView_Day_5_en","features.lockscreen.impl.unlock_PinUnlockView_Night_5_en",20236,], -["features.lockscreen.impl.unlock_PinUnlockView_Day_6_en","features.lockscreen.impl.unlock_PinUnlockView_Night_6_en",20236,], -["features.lockscreen.impl.unlock_PinUnlockView_Day_7_en","features.lockscreen.impl.unlock_PinUnlockView_Night_7_en",20236,], +["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_0_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_0_en",20238,], +["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_1_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_1_en",20238,], +["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_2_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_2_en",20238,], +["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_3_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_3_en",20238,], +["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_4_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_4_en",20238,], +["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_5_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_5_en",20238,], +["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_6_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_6_en",20238,], +["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_7_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_7_en",20238,], +["features.lockscreen.impl.unlock_PinUnlockView_Day_0_en","features.lockscreen.impl.unlock_PinUnlockView_Night_0_en",20238,], +["features.lockscreen.impl.unlock_PinUnlockView_Day_1_en","features.lockscreen.impl.unlock_PinUnlockView_Night_1_en",20238,], +["features.lockscreen.impl.unlock_PinUnlockView_Day_2_en","features.lockscreen.impl.unlock_PinUnlockView_Night_2_en",20238,], +["features.lockscreen.impl.unlock_PinUnlockView_Day_3_en","features.lockscreen.impl.unlock_PinUnlockView_Night_3_en",20238,], +["features.lockscreen.impl.unlock_PinUnlockView_Day_4_en","features.lockscreen.impl.unlock_PinUnlockView_Night_4_en",20238,], +["features.lockscreen.impl.unlock_PinUnlockView_Day_5_en","features.lockscreen.impl.unlock_PinUnlockView_Night_5_en",20238,], +["features.lockscreen.impl.unlock_PinUnlockView_Day_6_en","features.lockscreen.impl.unlock_PinUnlockView_Night_6_en",20238,], +["features.lockscreen.impl.unlock_PinUnlockView_Day_7_en","features.lockscreen.impl.unlock_PinUnlockView_Night_7_en",20238,], ["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_0_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_0_en",0,], -["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_10_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_10_en",20236,], -["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_1_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_1_en",20236,], -["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_2_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_2_en",20236,], -["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_3_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_3_en",20236,], -["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_4_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_4_en",20236,], -["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_5_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_5_en",20236,], -["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_6_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_6_en",20236,], -["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_7_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_7_en",20236,], -["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_8_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_8_en",20236,], -["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_9_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_9_en",20236,], -["features.messages.impl.pinned.list_PinnedMessagesListView_Day_0_en","features.messages.impl.pinned.list_PinnedMessagesListView_Night_0_en",20236,], -["features.messages.impl.pinned.list_PinnedMessagesListView_Day_1_en","features.messages.impl.pinned.list_PinnedMessagesListView_Night_1_en",20236,], -["features.messages.impl.pinned.list_PinnedMessagesListView_Day_2_en","features.messages.impl.pinned.list_PinnedMessagesListView_Night_2_en",20236,], -["features.messages.impl.pinned.list_PinnedMessagesListView_Day_3_en","features.messages.impl.pinned.list_PinnedMessagesListView_Night_3_en",20236,], +["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_10_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_10_en",20238,], +["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_1_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_1_en",20238,], +["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_2_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_2_en",20238,], +["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_3_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_3_en",20238,], +["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_4_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_4_en",20238,], +["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_5_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_5_en",20238,], +["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_6_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_6_en",20238,], +["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_7_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_7_en",20238,], +["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_8_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_8_en",20238,], +["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_9_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_9_en",20238,], +["features.messages.impl.pinned.list_PinnedMessagesListView_Day_0_en","features.messages.impl.pinned.list_PinnedMessagesListView_Night_0_en",20238,], +["features.messages.impl.pinned.list_PinnedMessagesListView_Day_1_en","features.messages.impl.pinned.list_PinnedMessagesListView_Night_1_en",20238,], +["features.messages.impl.pinned.list_PinnedMessagesListView_Day_2_en","features.messages.impl.pinned.list_PinnedMessagesListView_Night_2_en",20238,], +["features.messages.impl.pinned.list_PinnedMessagesListView_Day_3_en","features.messages.impl.pinned.list_PinnedMessagesListView_Night_3_en",20238,], ["libraries.designsystem.atomic.atoms_PlaceholderAtom_Day_0_en","libraries.designsystem.atomic.atoms_PlaceholderAtom_Night_0_en",0,], -["features.poll.api.pollcontent_PollAnswerViewDisclosedNotSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewDisclosedNotSelected_Night_0_en",20236,], -["features.poll.api.pollcontent_PollAnswerViewDisclosedSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewDisclosedSelected_Night_0_en",20236,], -["features.poll.api.pollcontent_PollAnswerViewEndedSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewEndedSelected_Night_0_en",20236,], -["features.poll.api.pollcontent_PollAnswerViewEndedWinnerNotSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewEndedWinnerNotSelected_Night_0_en",20236,], -["features.poll.api.pollcontent_PollAnswerViewEndedWinnerSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewEndedWinnerSelected_Night_0_en",20236,], +["features.poll.api.pollcontent_PollAnswerViewDisclosedNotSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewDisclosedNotSelected_Night_0_en",20238,], +["features.poll.api.pollcontent_PollAnswerViewDisclosedSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewDisclosedSelected_Night_0_en",20238,], +["features.poll.api.pollcontent_PollAnswerViewEndedSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewEndedSelected_Night_0_en",20238,], +["features.poll.api.pollcontent_PollAnswerViewEndedWinnerNotSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewEndedWinnerNotSelected_Night_0_en",20238,], +["features.poll.api.pollcontent_PollAnswerViewEndedWinnerSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewEndedWinnerSelected_Night_0_en",20238,], ["features.poll.api.pollcontent_PollAnswerViewUndisclosedNotSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewUndisclosedNotSelected_Night_0_en",0,], ["features.poll.api.pollcontent_PollAnswerViewUndisclosedSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewUndisclosedSelected_Night_0_en",0,], -["features.poll.api.pollcontent_PollContentViewCreatorEditable_Day_0_en","features.poll.api.pollcontent_PollContentViewCreatorEditable_Night_0_en",20236,], -["features.poll.api.pollcontent_PollContentViewCreatorEnded_Day_0_en","features.poll.api.pollcontent_PollContentViewCreatorEnded_Night_0_en",20236,], -["features.poll.api.pollcontent_PollContentViewCreator_Day_0_en","features.poll.api.pollcontent_PollContentViewCreator_Night_0_en",20236,], -["features.poll.api.pollcontent_PollContentViewDisclosed_Day_0_en","features.poll.api.pollcontent_PollContentViewDisclosed_Night_0_en",20236,], -["features.poll.api.pollcontent_PollContentViewEnded_Day_0_en","features.poll.api.pollcontent_PollContentViewEnded_Night_0_en",20236,], -["features.poll.api.pollcontent_PollContentViewUndisclosed_Day_0_en","features.poll.api.pollcontent_PollContentViewUndisclosed_Night_0_en",20236,], -["features.poll.impl.history_PollHistoryView_Day_0_en","features.poll.impl.history_PollHistoryView_Night_0_en",20236,], -["features.poll.impl.history_PollHistoryView_Day_1_en","features.poll.impl.history_PollHistoryView_Night_1_en",20236,], -["features.poll.impl.history_PollHistoryView_Day_2_en","features.poll.impl.history_PollHistoryView_Night_2_en",20236,], -["features.poll.impl.history_PollHistoryView_Day_3_en","features.poll.impl.history_PollHistoryView_Night_3_en",20236,], -["features.poll.impl.history_PollHistoryView_Day_4_en","features.poll.impl.history_PollHistoryView_Night_4_en",20236,], +["features.poll.api.pollcontent_PollContentViewCreatorEditable_Day_0_en","features.poll.api.pollcontent_PollContentViewCreatorEditable_Night_0_en",20238,], +["features.poll.api.pollcontent_PollContentViewCreatorEnded_Day_0_en","features.poll.api.pollcontent_PollContentViewCreatorEnded_Night_0_en",20238,], +["features.poll.api.pollcontent_PollContentViewCreator_Day_0_en","features.poll.api.pollcontent_PollContentViewCreator_Night_0_en",20238,], +["features.poll.api.pollcontent_PollContentViewDisclosed_Day_0_en","features.poll.api.pollcontent_PollContentViewDisclosed_Night_0_en",20238,], +["features.poll.api.pollcontent_PollContentViewEnded_Day_0_en","features.poll.api.pollcontent_PollContentViewEnded_Night_0_en",20238,], +["features.poll.api.pollcontent_PollContentViewUndisclosed_Day_0_en","features.poll.api.pollcontent_PollContentViewUndisclosed_Night_0_en",20238,], +["features.poll.impl.history_PollHistoryView_Day_0_en","features.poll.impl.history_PollHistoryView_Night_0_en",20238,], +["features.poll.impl.history_PollHistoryView_Day_1_en","features.poll.impl.history_PollHistoryView_Night_1_en",20238,], +["features.poll.impl.history_PollHistoryView_Day_2_en","features.poll.impl.history_PollHistoryView_Night_2_en",20238,], +["features.poll.impl.history_PollHistoryView_Day_3_en","features.poll.impl.history_PollHistoryView_Night_3_en",20238,], +["features.poll.impl.history_PollHistoryView_Day_4_en","features.poll.impl.history_PollHistoryView_Night_4_en",20238,], ["features.poll.api.pollcontent_PollTitleView_Day_0_en","features.poll.api.pollcontent_PollTitleView_Night_0_en",0,], ["libraries.designsystem.components.preferences_PreferenceCategory_Preferences_en","",0,], ["libraries.designsystem.components.preferences_PreferenceCheckbox_Preferences_en","",0,], @@ -826,218 +826,218 @@ export const screenshots = [ ["libraries.designsystem.components.preferences_PreferenceRow_Preferences_en","",0,], ["libraries.designsystem.components.preferences_PreferenceSlide_Preferences_en","",0,], ["libraries.designsystem.components.preferences_PreferenceSwitch_Preferences_en","",0,], -["features.preferences.impl.root_PreferencesRootViewDark_0_en","",20236,], -["features.preferences.impl.root_PreferencesRootViewDark_1_en","",20236,], -["features.preferences.impl.root_PreferencesRootViewLight_0_en","",20236,], -["features.preferences.impl.root_PreferencesRootViewLight_1_en","",20236,], +["features.preferences.impl.root_PreferencesRootViewDark_0_en","",20238,], +["features.preferences.impl.root_PreferencesRootViewDark_1_en","",20238,], +["features.preferences.impl.root_PreferencesRootViewLight_0_en","",20238,], +["features.preferences.impl.root_PreferencesRootViewLight_1_en","",20238,], ["features.messages.impl.timeline.components.event_ProgressButton_Day_0_en","features.messages.impl.timeline.components.event_ProgressButton_Night_0_en",0,], -["libraries.designsystem.components_ProgressDialogContent_Dialogs_en","",20236,], -["libraries.designsystem.components_ProgressDialog_Day_0_en","libraries.designsystem.components_ProgressDialog_Night_0_en",20236,], -["features.messages.impl.timeline.protection_ProtectedView_Day_0_en","features.messages.impl.timeline.protection_ProtectedView_Night_0_en",20236,], -["features.messages.impl.timeline.protection_ProtectedView_Day_1_en","features.messages.impl.timeline.protection_ProtectedView_Night_1_en",20236,], -["features.messages.impl.timeline.protection_ProtectedView_Day_2_en","features.messages.impl.timeline.protection_ProtectedView_Night_2_en",20236,], -["features.messages.impl.timeline.protection_ProtectedView_Day_3_en","features.messages.impl.timeline.protection_ProtectedView_Night_3_en",20236,], -["libraries.troubleshoot.impl.history_PushHistoryView_Day_0_en","libraries.troubleshoot.impl.history_PushHistoryView_Night_0_en",20236,], -["libraries.troubleshoot.impl.history_PushHistoryView_Day_1_en","libraries.troubleshoot.impl.history_PushHistoryView_Night_1_en",20236,], -["libraries.troubleshoot.impl.history_PushHistoryView_Day_2_en","libraries.troubleshoot.impl.history_PushHistoryView_Night_2_en",20236,], -["features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_0_en","features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Night_0_en",20236,], -["features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_1_en","features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Night_1_en",20236,], -["features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_2_en","features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Night_2_en",20236,], -["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_0_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_0_en",20236,], -["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_1_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_1_en",20236,], -["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_2_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_2_en",20236,], -["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_3_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_3_en",20236,], -["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_4_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_4_en",20236,], -["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_5_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_5_en",20236,], -["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_6_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_6_en",20236,], -["features.login.impl.screens.qrcode.intro_QrCodeIntroView_Day_0_en","features.login.impl.screens.qrcode.intro_QrCodeIntroView_Night_0_en",20236,], -["features.login.impl.screens.qrcode.intro_QrCodeIntroView_Day_1_en","features.login.impl.screens.qrcode.intro_QrCodeIntroView_Night_1_en",20236,], -["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_0_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_0_en",20236,], -["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_1_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_1_en",20236,], -["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_2_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_2_en",20236,], -["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_3_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_3_en",20236,], -["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_4_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_4_en",20236,], +["libraries.designsystem.components_ProgressDialogContent_Dialogs_en","",20238,], +["libraries.designsystem.components_ProgressDialog_Day_0_en","libraries.designsystem.components_ProgressDialog_Night_0_en",20238,], +["features.messages.impl.timeline.protection_ProtectedView_Day_0_en","features.messages.impl.timeline.protection_ProtectedView_Night_0_en",20238,], +["features.messages.impl.timeline.protection_ProtectedView_Day_1_en","features.messages.impl.timeline.protection_ProtectedView_Night_1_en",20238,], +["features.messages.impl.timeline.protection_ProtectedView_Day_2_en","features.messages.impl.timeline.protection_ProtectedView_Night_2_en",20238,], +["features.messages.impl.timeline.protection_ProtectedView_Day_3_en","features.messages.impl.timeline.protection_ProtectedView_Night_3_en",20238,], +["libraries.troubleshoot.impl.history_PushHistoryView_Day_0_en","libraries.troubleshoot.impl.history_PushHistoryView_Night_0_en",20238,], +["libraries.troubleshoot.impl.history_PushHistoryView_Day_1_en","libraries.troubleshoot.impl.history_PushHistoryView_Night_1_en",20238,], +["libraries.troubleshoot.impl.history_PushHistoryView_Day_2_en","libraries.troubleshoot.impl.history_PushHistoryView_Night_2_en",20238,], +["features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_0_en","features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Night_0_en",20238,], +["features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_1_en","features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Night_1_en",20238,], +["features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_2_en","features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Night_2_en",20238,], +["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_0_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_0_en",20238,], +["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_1_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_1_en",20238,], +["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_2_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_2_en",20238,], +["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_3_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_3_en",20238,], +["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_4_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_4_en",20238,], +["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_5_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_5_en",20238,], +["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_6_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_6_en",20238,], +["features.login.impl.screens.qrcode.intro_QrCodeIntroView_Day_0_en","features.login.impl.screens.qrcode.intro_QrCodeIntroView_Night_0_en",20238,], +["features.login.impl.screens.qrcode.intro_QrCodeIntroView_Day_1_en","features.login.impl.screens.qrcode.intro_QrCodeIntroView_Night_1_en",20238,], +["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_0_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_0_en",20238,], +["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_1_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_1_en",20238,], +["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_2_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_2_en",20238,], +["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_3_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_3_en",20238,], +["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_4_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_4_en",20238,], ["libraries.designsystem.theme.components_RadioButton_Toggles_en","",0,], -["features.rageshake.api.detection_RageshakeDialogContent_Day_0_en","features.rageshake.api.detection_RageshakeDialogContent_Night_0_en",20236,], -["features.rageshake.api.preferences_RageshakePreferencesView_Day_0_en","features.rageshake.api.preferences_RageshakePreferencesView_Night_0_en",20236,], +["features.rageshake.api.detection_RageshakeDialogContent_Day_0_en","features.rageshake.api.detection_RageshakeDialogContent_Night_0_en",20238,], +["features.rageshake.api.preferences_RageshakePreferencesView_Day_0_en","features.rageshake.api.preferences_RageshakePreferencesView_Night_0_en",20238,], ["features.rageshake.api.preferences_RageshakePreferencesView_Day_1_en","features.rageshake.api.preferences_RageshakePreferencesView_Night_1_en",0,], ["features.messages.impl.timeline.components.reactionsummary_ReactionSummaryViewContent_Day_0_en","features.messages.impl.timeline.components.reactionsummary_ReactionSummaryViewContent_Night_0_en",0,], -["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_0_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_0_en",20236,], -["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_1_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_1_en",20236,], -["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_2_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_2_en",20236,], -["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_3_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_3_en",20236,], -["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_4_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_4_en",20236,], -["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_5_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_5_en",20236,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_0_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_0_en",20236,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_10_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_10_en",20236,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_11_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_11_en",20236,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_12_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_12_en",20236,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_13_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_13_en",20236,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_1_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_1_en",20236,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_2_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_2_en",20236,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_3_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_3_en",20236,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_4_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_4_en",20236,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_5_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_5_en",20236,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_6_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_6_en",20236,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_7_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_7_en",20236,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_8_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_8_en",20236,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_9_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_9_en",20236,], +["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_0_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_0_en",20238,], +["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_1_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_1_en",20238,], +["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_2_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_2_en",20238,], +["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_3_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_3_en",20238,], +["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_4_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_4_en",20238,], +["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_5_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_5_en",20238,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_0_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_0_en",20238,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_10_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_10_en",20238,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_11_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_11_en",20238,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_12_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_12_en",20238,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_13_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_13_en",20238,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_1_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_1_en",20238,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_2_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_2_en",20238,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_3_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_3_en",20238,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_4_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_4_en",20238,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_5_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_5_en",20238,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_6_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_6_en",20238,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_7_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_7_en",20238,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_8_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_8_en",20238,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_9_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_9_en",20238,], ["libraries.designsystem.atomic.atoms_RedIndicatorAtom_Day_0_en","libraries.designsystem.atomic.atoms_RedIndicatorAtom_Night_0_en",0,], ["features.messages.impl.timeline.components_ReplySwipeIndicator_Day_0_en","features.messages.impl.timeline.components_ReplySwipeIndicator_Night_0_en",0,], -["features.messages.impl.report_ReportMessageView_Day_0_en","features.messages.impl.report_ReportMessageView_Night_0_en",20236,], -["features.messages.impl.report_ReportMessageView_Day_1_en","features.messages.impl.report_ReportMessageView_Night_1_en",20236,], -["features.messages.impl.report_ReportMessageView_Day_2_en","features.messages.impl.report_ReportMessageView_Night_2_en",20236,], -["features.messages.impl.report_ReportMessageView_Day_3_en","features.messages.impl.report_ReportMessageView_Night_3_en",20236,], -["features.messages.impl.report_ReportMessageView_Day_4_en","features.messages.impl.report_ReportMessageView_Night_4_en",20236,], -["features.messages.impl.report_ReportMessageView_Day_5_en","features.messages.impl.report_ReportMessageView_Night_5_en",20236,], -["features.reportroom.impl_ReportRoomView_Day_0_en","features.reportroom.impl_ReportRoomView_Night_0_en",20236,], -["features.reportroom.impl_ReportRoomView_Day_1_en","features.reportroom.impl_ReportRoomView_Night_1_en",20236,], -["features.reportroom.impl_ReportRoomView_Day_2_en","features.reportroom.impl_ReportRoomView_Night_2_en",20236,], -["features.reportroom.impl_ReportRoomView_Day_3_en","features.reportroom.impl_ReportRoomView_Night_3_en",20236,], -["features.reportroom.impl_ReportRoomView_Day_4_en","features.reportroom.impl_ReportRoomView_Night_4_en",20236,], -["features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_0_en","features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_0_en",20236,], -["features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_1_en","features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_1_en",20236,], -["features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_2_en","features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_2_en",20236,], -["features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_3_en","features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_3_en",20236,], -["features.securebackup.impl.reset.root_ResetIdentityRootView_Day_0_en","features.securebackup.impl.reset.root_ResetIdentityRootView_Night_0_en",20236,], -["features.securebackup.impl.reset.root_ResetIdentityRootView_Day_1_en","features.securebackup.impl.reset.root_ResetIdentityRootView_Night_1_en",20236,], +["features.messages.impl.report_ReportMessageView_Day_0_en","features.messages.impl.report_ReportMessageView_Night_0_en",20238,], +["features.messages.impl.report_ReportMessageView_Day_1_en","features.messages.impl.report_ReportMessageView_Night_1_en",20238,], +["features.messages.impl.report_ReportMessageView_Day_2_en","features.messages.impl.report_ReportMessageView_Night_2_en",20238,], +["features.messages.impl.report_ReportMessageView_Day_3_en","features.messages.impl.report_ReportMessageView_Night_3_en",20238,], +["features.messages.impl.report_ReportMessageView_Day_4_en","features.messages.impl.report_ReportMessageView_Night_4_en",20238,], +["features.messages.impl.report_ReportMessageView_Day_5_en","features.messages.impl.report_ReportMessageView_Night_5_en",20238,], +["features.reportroom.impl_ReportRoomView_Day_0_en","features.reportroom.impl_ReportRoomView_Night_0_en",20238,], +["features.reportroom.impl_ReportRoomView_Day_1_en","features.reportroom.impl_ReportRoomView_Night_1_en",20238,], +["features.reportroom.impl_ReportRoomView_Day_2_en","features.reportroom.impl_ReportRoomView_Night_2_en",20238,], +["features.reportroom.impl_ReportRoomView_Day_3_en","features.reportroom.impl_ReportRoomView_Night_3_en",20238,], +["features.reportroom.impl_ReportRoomView_Day_4_en","features.reportroom.impl_ReportRoomView_Night_4_en",20238,], +["features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_0_en","features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_0_en",20238,], +["features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_1_en","features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_1_en",20238,], +["features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_2_en","features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_2_en",20238,], +["features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_3_en","features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_3_en",20238,], +["features.securebackup.impl.reset.root_ResetIdentityRootView_Day_0_en","features.securebackup.impl.reset.root_ResetIdentityRootView_Night_0_en",20238,], +["features.securebackup.impl.reset.root_ResetIdentityRootView_Day_1_en","features.securebackup.impl.reset.root_ResetIdentityRootView_Night_1_en",20238,], ["features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Day_0_en","features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Night_0_en",0,], -["features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Day_1_en","features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Night_1_en",20236,], -["features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Day_2_en","features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Night_2_en",20236,], -["libraries.designsystem.components.dialogs_RetryDialogContent_Dialogs_en","",20236,], -["libraries.designsystem.components.dialogs_RetryDialog_Day_0_en","libraries.designsystem.components.dialogs_RetryDialog_Night_0_en",20236,], -["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_0_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_0_en",20236,], -["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_1_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_1_en",20236,], -["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_2_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_2_en",20236,], -["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_3_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_3_en",20236,], -["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_4_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_4_en",20236,], -["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_5_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_5_en",20236,], -["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_6_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_6_en",20236,], -["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_7_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_7_en",20236,], +["features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Day_1_en","features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Night_1_en",20238,], +["features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Day_2_en","features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Night_2_en",20238,], +["libraries.designsystem.components.dialogs_RetryDialogContent_Dialogs_en","",20238,], +["libraries.designsystem.components.dialogs_RetryDialog_Day_0_en","libraries.designsystem.components.dialogs_RetryDialog_Night_0_en",20238,], +["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_0_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_0_en",20238,], +["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_1_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_1_en",20238,], +["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_2_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_2_en",20238,], +["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_3_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_3_en",20238,], +["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_4_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_4_en",20238,], +["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_5_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_5_en",20238,], +["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_6_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_6_en",20238,], +["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_7_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_7_en",20238,], ["libraries.matrix.ui.room.address_RoomAddressField_Day_0_en","libraries.matrix.ui.room.address_RoomAddressField_Night_0_en",0,], ["features.roomaliasresolver.impl_RoomAliasResolverView_Day_0_en","features.roomaliasresolver.impl_RoomAliasResolverView_Night_0_en",0,], -["features.roomaliasresolver.impl_RoomAliasResolverView_Day_1_en","features.roomaliasresolver.impl_RoomAliasResolverView_Night_1_en",20236,], -["features.roomaliasresolver.impl_RoomAliasResolverView_Day_2_en","features.roomaliasresolver.impl_RoomAliasResolverView_Night_2_en",20236,], -["features.roomdetails.impl_RoomDetailsDark_0_en","",20236,], -["features.roomdetails.impl_RoomDetailsDark_10_en","",20236,], -["features.roomdetails.impl_RoomDetailsDark_11_en","",20236,], -["features.roomdetails.impl_RoomDetailsDark_12_en","",20236,], -["features.roomdetails.impl_RoomDetailsDark_13_en","",20236,], -["features.roomdetails.impl_RoomDetailsDark_14_en","",20236,], -["features.roomdetails.impl_RoomDetailsDark_15_en","",20236,], -["features.roomdetails.impl_RoomDetailsDark_16_en","",20236,], -["features.roomdetails.impl_RoomDetailsDark_17_en","",20236,], -["features.roomdetails.impl_RoomDetailsDark_18_en","",20236,], -["features.roomdetails.impl_RoomDetailsDark_1_en","",20236,], -["features.roomdetails.impl_RoomDetailsDark_2_en","",20236,], -["features.roomdetails.impl_RoomDetailsDark_3_en","",20236,], -["features.roomdetails.impl_RoomDetailsDark_4_en","",20236,], -["features.roomdetails.impl_RoomDetailsDark_5_en","",20236,], -["features.roomdetails.impl_RoomDetailsDark_6_en","",20236,], -["features.roomdetails.impl_RoomDetailsDark_7_en","",20236,], -["features.roomdetails.impl_RoomDetailsDark_8_en","",20236,], -["features.roomdetails.impl_RoomDetailsDark_9_en","",20236,], -["features.roomdetails.impl.edit_RoomDetailsEditView_Day_0_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_0_en",20236,], -["features.roomdetails.impl.edit_RoomDetailsEditView_Day_1_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_1_en",20236,], -["features.roomdetails.impl.edit_RoomDetailsEditView_Day_2_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_2_en",20236,], -["features.roomdetails.impl.edit_RoomDetailsEditView_Day_3_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_3_en",20236,], -["features.roomdetails.impl.edit_RoomDetailsEditView_Day_4_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_4_en",20236,], -["features.roomdetails.impl.edit_RoomDetailsEditView_Day_5_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_5_en",20236,], -["features.roomdetails.impl.edit_RoomDetailsEditView_Day_6_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_6_en",20236,], -["features.roomdetails.impl.edit_RoomDetailsEditView_Day_7_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_7_en",20236,], -["features.roomdetails.impl_RoomDetails_0_en","",20236,], -["features.roomdetails.impl_RoomDetails_10_en","",20236,], -["features.roomdetails.impl_RoomDetails_11_en","",20236,], -["features.roomdetails.impl_RoomDetails_12_en","",20236,], -["features.roomdetails.impl_RoomDetails_13_en","",20236,], -["features.roomdetails.impl_RoomDetails_14_en","",20236,], -["features.roomdetails.impl_RoomDetails_15_en","",20236,], -["features.roomdetails.impl_RoomDetails_16_en","",20236,], -["features.roomdetails.impl_RoomDetails_17_en","",20236,], -["features.roomdetails.impl_RoomDetails_18_en","",20236,], -["features.roomdetails.impl_RoomDetails_1_en","",20236,], -["features.roomdetails.impl_RoomDetails_2_en","",20236,], -["features.roomdetails.impl_RoomDetails_3_en","",20236,], -["features.roomdetails.impl_RoomDetails_4_en","",20236,], -["features.roomdetails.impl_RoomDetails_5_en","",20236,], -["features.roomdetails.impl_RoomDetails_6_en","",20236,], -["features.roomdetails.impl_RoomDetails_7_en","",20236,], -["features.roomdetails.impl_RoomDetails_8_en","",20236,], -["features.roomdetails.impl_RoomDetails_9_en","",20236,], -["features.roomdirectory.impl.root_RoomDirectoryView_Day_0_en","features.roomdirectory.impl.root_RoomDirectoryView_Night_0_en",20236,], -["features.roomdirectory.impl.root_RoomDirectoryView_Day_1_en","features.roomdirectory.impl.root_RoomDirectoryView_Night_1_en",20236,], -["features.roomdirectory.impl.root_RoomDirectoryView_Day_2_en","features.roomdirectory.impl.root_RoomDirectoryView_Night_2_en",20236,], -["features.roomdetails.impl.invite_RoomInviteMembersView_Day_0_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_0_en",20236,], -["features.roomdetails.impl.invite_RoomInviteMembersView_Day_1_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_1_en",20236,], -["features.roomdetails.impl.invite_RoomInviteMembersView_Day_2_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_2_en",20236,], -["features.roomdetails.impl.invite_RoomInviteMembersView_Day_3_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_3_en",20236,], -["features.roomdetails.impl.invite_RoomInviteMembersView_Day_4_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_4_en",20236,], -["features.roomdetails.impl.invite_RoomInviteMembersView_Day_5_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_5_en",20236,], -["features.roomdetails.impl.invite_RoomInviteMembersView_Day_6_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_6_en",20236,], -["features.roomdetails.impl.invite_RoomInviteMembersView_Day_7_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_7_en",20236,], -["features.roomlist.impl.components_RoomListContentView_Day_0_en","features.roomlist.impl.components_RoomListContentView_Night_0_en",20236,], -["features.roomlist.impl.components_RoomListContentView_Day_1_en","features.roomlist.impl.components_RoomListContentView_Night_1_en",20236,], +["features.roomaliasresolver.impl_RoomAliasResolverView_Day_1_en","features.roomaliasresolver.impl_RoomAliasResolverView_Night_1_en",20238,], +["features.roomaliasresolver.impl_RoomAliasResolverView_Day_2_en","features.roomaliasresolver.impl_RoomAliasResolverView_Night_2_en",20238,], +["features.roomdetails.impl_RoomDetailsDark_0_en","",20238,], +["features.roomdetails.impl_RoomDetailsDark_10_en","",20238,], +["features.roomdetails.impl_RoomDetailsDark_11_en","",20238,], +["features.roomdetails.impl_RoomDetailsDark_12_en","",20238,], +["features.roomdetails.impl_RoomDetailsDark_13_en","",20238,], +["features.roomdetails.impl_RoomDetailsDark_14_en","",20238,], +["features.roomdetails.impl_RoomDetailsDark_15_en","",20238,], +["features.roomdetails.impl_RoomDetailsDark_16_en","",20238,], +["features.roomdetails.impl_RoomDetailsDark_17_en","",20238,], +["features.roomdetails.impl_RoomDetailsDark_18_en","",20238,], +["features.roomdetails.impl_RoomDetailsDark_1_en","",20238,], +["features.roomdetails.impl_RoomDetailsDark_2_en","",20238,], +["features.roomdetails.impl_RoomDetailsDark_3_en","",20238,], +["features.roomdetails.impl_RoomDetailsDark_4_en","",20238,], +["features.roomdetails.impl_RoomDetailsDark_5_en","",20238,], +["features.roomdetails.impl_RoomDetailsDark_6_en","",20238,], +["features.roomdetails.impl_RoomDetailsDark_7_en","",20238,], +["features.roomdetails.impl_RoomDetailsDark_8_en","",20238,], +["features.roomdetails.impl_RoomDetailsDark_9_en","",20238,], +["features.roomdetails.impl.edit_RoomDetailsEditView_Day_0_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_0_en",20238,], +["features.roomdetails.impl.edit_RoomDetailsEditView_Day_1_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_1_en",20238,], +["features.roomdetails.impl.edit_RoomDetailsEditView_Day_2_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_2_en",20238,], +["features.roomdetails.impl.edit_RoomDetailsEditView_Day_3_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_3_en",20238,], +["features.roomdetails.impl.edit_RoomDetailsEditView_Day_4_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_4_en",20238,], +["features.roomdetails.impl.edit_RoomDetailsEditView_Day_5_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_5_en",20238,], +["features.roomdetails.impl.edit_RoomDetailsEditView_Day_6_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_6_en",20238,], +["features.roomdetails.impl.edit_RoomDetailsEditView_Day_7_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_7_en",20238,], +["features.roomdetails.impl_RoomDetails_0_en","",20238,], +["features.roomdetails.impl_RoomDetails_10_en","",20238,], +["features.roomdetails.impl_RoomDetails_11_en","",20238,], +["features.roomdetails.impl_RoomDetails_12_en","",20238,], +["features.roomdetails.impl_RoomDetails_13_en","",20238,], +["features.roomdetails.impl_RoomDetails_14_en","",20238,], +["features.roomdetails.impl_RoomDetails_15_en","",20238,], +["features.roomdetails.impl_RoomDetails_16_en","",20238,], +["features.roomdetails.impl_RoomDetails_17_en","",20238,], +["features.roomdetails.impl_RoomDetails_18_en","",20238,], +["features.roomdetails.impl_RoomDetails_1_en","",20238,], +["features.roomdetails.impl_RoomDetails_2_en","",20238,], +["features.roomdetails.impl_RoomDetails_3_en","",20238,], +["features.roomdetails.impl_RoomDetails_4_en","",20238,], +["features.roomdetails.impl_RoomDetails_5_en","",20238,], +["features.roomdetails.impl_RoomDetails_6_en","",20238,], +["features.roomdetails.impl_RoomDetails_7_en","",20238,], +["features.roomdetails.impl_RoomDetails_8_en","",20238,], +["features.roomdetails.impl_RoomDetails_9_en","",20238,], +["features.roomdirectory.impl.root_RoomDirectoryView_Day_0_en","features.roomdirectory.impl.root_RoomDirectoryView_Night_0_en",20238,], +["features.roomdirectory.impl.root_RoomDirectoryView_Day_1_en","features.roomdirectory.impl.root_RoomDirectoryView_Night_1_en",20238,], +["features.roomdirectory.impl.root_RoomDirectoryView_Day_2_en","features.roomdirectory.impl.root_RoomDirectoryView_Night_2_en",20238,], +["features.roomdetails.impl.invite_RoomInviteMembersView_Day_0_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_0_en",20238,], +["features.roomdetails.impl.invite_RoomInviteMembersView_Day_1_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_1_en",20238,], +["features.roomdetails.impl.invite_RoomInviteMembersView_Day_2_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_2_en",20238,], +["features.roomdetails.impl.invite_RoomInviteMembersView_Day_3_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_3_en",20238,], +["features.roomdetails.impl.invite_RoomInviteMembersView_Day_4_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_4_en",20238,], +["features.roomdetails.impl.invite_RoomInviteMembersView_Day_5_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_5_en",20238,], +["features.roomdetails.impl.invite_RoomInviteMembersView_Day_6_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_6_en",20238,], +["features.roomdetails.impl.invite_RoomInviteMembersView_Day_7_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_7_en",20238,], +["features.roomlist.impl.components_RoomListContentView_Day_0_en","features.roomlist.impl.components_RoomListContentView_Night_0_en",20238,], +["features.roomlist.impl.components_RoomListContentView_Day_1_en","features.roomlist.impl.components_RoomListContentView_Night_1_en",20238,], ["features.roomlist.impl.components_RoomListContentView_Day_2_en","features.roomlist.impl.components_RoomListContentView_Night_2_en",0,], -["features.roomlist.impl.components_RoomListContentView_Day_3_en","features.roomlist.impl.components_RoomListContentView_Night_3_en",20236,], -["features.roomlist.impl.components_RoomListContentView_Day_4_en","features.roomlist.impl.components_RoomListContentView_Night_4_en",20236,], -["features.roomlist.impl_RoomListDeclineInviteMenuContent_Day_0_en","features.roomlist.impl_RoomListDeclineInviteMenuContent_Night_0_en",20236,], -["features.roomlist.impl.filters_RoomListFiltersView_Day_0_en","features.roomlist.impl.filters_RoomListFiltersView_Night_0_en",20236,], -["features.roomlist.impl.filters_RoomListFiltersView_Day_1_en","features.roomlist.impl.filters_RoomListFiltersView_Night_1_en",20236,], -["features.roomlist.impl_RoomListModalBottomSheetContent_Day_0_en","features.roomlist.impl_RoomListModalBottomSheetContent_Night_0_en",20236,], -["features.roomlist.impl_RoomListModalBottomSheetContent_Day_1_en","features.roomlist.impl_RoomListModalBottomSheetContent_Night_1_en",20236,], -["features.roomlist.impl_RoomListModalBottomSheetContent_Day_2_en","features.roomlist.impl_RoomListModalBottomSheetContent_Night_2_en",20236,], +["features.roomlist.impl.components_RoomListContentView_Day_3_en","features.roomlist.impl.components_RoomListContentView_Night_3_en",20238,], +["features.roomlist.impl.components_RoomListContentView_Day_4_en","features.roomlist.impl.components_RoomListContentView_Night_4_en",20238,], +["features.roomlist.impl_RoomListDeclineInviteMenuContent_Day_0_en","features.roomlist.impl_RoomListDeclineInviteMenuContent_Night_0_en",20238,], +["features.roomlist.impl.filters_RoomListFiltersView_Day_0_en","features.roomlist.impl.filters_RoomListFiltersView_Night_0_en",20238,], +["features.roomlist.impl.filters_RoomListFiltersView_Day_1_en","features.roomlist.impl.filters_RoomListFiltersView_Night_1_en",20238,], +["features.roomlist.impl_RoomListModalBottomSheetContent_Day_0_en","features.roomlist.impl_RoomListModalBottomSheetContent_Night_0_en",20238,], +["features.roomlist.impl_RoomListModalBottomSheetContent_Day_1_en","features.roomlist.impl_RoomListModalBottomSheetContent_Night_1_en",20238,], +["features.roomlist.impl_RoomListModalBottomSheetContent_Day_2_en","features.roomlist.impl_RoomListModalBottomSheetContent_Night_2_en",20238,], ["features.roomlist.impl.search_RoomListSearchContent_Day_0_en","features.roomlist.impl.search_RoomListSearchContent_Night_0_en",0,], -["features.roomlist.impl.search_RoomListSearchContent_Day_1_en","features.roomlist.impl.search_RoomListSearchContent_Night_1_en",20236,], -["features.roomlist.impl_RoomListView_Day_0_en","features.roomlist.impl_RoomListView_Night_0_en",20236,], -["features.roomlist.impl_RoomListView_Day_10_en","features.roomlist.impl_RoomListView_Night_10_en",20236,], -["features.roomlist.impl_RoomListView_Day_1_en","features.roomlist.impl_RoomListView_Night_1_en",20236,], -["features.roomlist.impl_RoomListView_Day_2_en","features.roomlist.impl_RoomListView_Night_2_en",20236,], -["features.roomlist.impl_RoomListView_Day_3_en","features.roomlist.impl_RoomListView_Night_3_en",20236,], -["features.roomlist.impl_RoomListView_Day_4_en","features.roomlist.impl_RoomListView_Night_4_en",20236,], -["features.roomlist.impl_RoomListView_Day_5_en","features.roomlist.impl_RoomListView_Night_5_en",20236,], -["features.roomlist.impl_RoomListView_Day_6_en","features.roomlist.impl_RoomListView_Night_6_en",20236,], -["features.roomlist.impl_RoomListView_Day_7_en","features.roomlist.impl_RoomListView_Night_7_en",20236,], +["features.roomlist.impl.search_RoomListSearchContent_Day_1_en","features.roomlist.impl.search_RoomListSearchContent_Night_1_en",20238,], +["features.roomlist.impl_RoomListView_Day_0_en","features.roomlist.impl_RoomListView_Night_0_en",20238,], +["features.roomlist.impl_RoomListView_Day_10_en","features.roomlist.impl_RoomListView_Night_10_en",20238,], +["features.roomlist.impl_RoomListView_Day_1_en","features.roomlist.impl_RoomListView_Night_1_en",20238,], +["features.roomlist.impl_RoomListView_Day_2_en","features.roomlist.impl_RoomListView_Night_2_en",20238,], +["features.roomlist.impl_RoomListView_Day_3_en","features.roomlist.impl_RoomListView_Night_3_en",20238,], +["features.roomlist.impl_RoomListView_Day_4_en","features.roomlist.impl_RoomListView_Night_4_en",20238,], +["features.roomlist.impl_RoomListView_Day_5_en","features.roomlist.impl_RoomListView_Night_5_en",20238,], +["features.roomlist.impl_RoomListView_Day_6_en","features.roomlist.impl_RoomListView_Night_6_en",20238,], +["features.roomlist.impl_RoomListView_Day_7_en","features.roomlist.impl_RoomListView_Night_7_en",20238,], ["features.roomlist.impl_RoomListView_Day_8_en","features.roomlist.impl_RoomListView_Night_8_en",0,], ["features.roomlist.impl_RoomListView_Day_9_en","features.roomlist.impl_RoomListView_Night_9_en",0,], -["features.roomdetails.impl.members_RoomMemberListViewBanned_Day_0_en","features.roomdetails.impl.members_RoomMemberListViewBanned_Night_0_en",20236,], -["features.roomdetails.impl.members_RoomMemberListViewBanned_Day_1_en","features.roomdetails.impl.members_RoomMemberListViewBanned_Night_1_en",20236,], -["features.roomdetails.impl.members_RoomMemberListViewBanned_Day_2_en","features.roomdetails.impl.members_RoomMemberListViewBanned_Night_2_en",20236,], -["features.roomdetails.impl.members_RoomMemberListView_Day_0_en","features.roomdetails.impl.members_RoomMemberListView_Night_0_en",20236,], -["features.roomdetails.impl.members_RoomMemberListView_Day_1_en","features.roomdetails.impl.members_RoomMemberListView_Night_1_en",20236,], -["features.roomdetails.impl.members_RoomMemberListView_Day_2_en","features.roomdetails.impl.members_RoomMemberListView_Night_2_en",20236,], -["features.roomdetails.impl.members_RoomMemberListView_Day_3_en","features.roomdetails.impl.members_RoomMemberListView_Night_3_en",20236,], -["features.roomdetails.impl.members_RoomMemberListView_Day_4_en","features.roomdetails.impl.members_RoomMemberListView_Night_4_en",20236,], -["features.roomdetails.impl.members_RoomMemberListView_Day_5_en","features.roomdetails.impl.members_RoomMemberListView_Night_5_en",20236,], +["features.roomdetails.impl.members_RoomMemberListViewBanned_Day_0_en","features.roomdetails.impl.members_RoomMemberListViewBanned_Night_0_en",20238,], +["features.roomdetails.impl.members_RoomMemberListViewBanned_Day_1_en","features.roomdetails.impl.members_RoomMemberListViewBanned_Night_1_en",20238,], +["features.roomdetails.impl.members_RoomMemberListViewBanned_Day_2_en","features.roomdetails.impl.members_RoomMemberListViewBanned_Night_2_en",20238,], +["features.roomdetails.impl.members_RoomMemberListView_Day_0_en","features.roomdetails.impl.members_RoomMemberListView_Night_0_en",20238,], +["features.roomdetails.impl.members_RoomMemberListView_Day_1_en","features.roomdetails.impl.members_RoomMemberListView_Night_1_en",20238,], +["features.roomdetails.impl.members_RoomMemberListView_Day_2_en","features.roomdetails.impl.members_RoomMemberListView_Night_2_en",20238,], +["features.roomdetails.impl.members_RoomMemberListView_Day_3_en","features.roomdetails.impl.members_RoomMemberListView_Night_3_en",20238,], +["features.roomdetails.impl.members_RoomMemberListView_Day_4_en","features.roomdetails.impl.members_RoomMemberListView_Night_4_en",20238,], +["features.roomdetails.impl.members_RoomMemberListView_Day_5_en","features.roomdetails.impl.members_RoomMemberListView_Night_5_en",20238,], ["features.roomdetails.impl.members_RoomMemberListView_Day_6_en","features.roomdetails.impl.members_RoomMemberListView_Night_6_en",0,], -["features.roomdetails.impl.members_RoomMemberListView_Day_7_en","features.roomdetails.impl.members_RoomMemberListView_Night_7_en",20236,], -["features.roomdetails.impl.members_RoomMemberListView_Day_8_en","features.roomdetails.impl.members_RoomMemberListView_Night_8_en",20236,], -["features.roomdetails.impl.members_RoomMemberListView_Day_9_en","features.roomdetails.impl.members_RoomMemberListView_Night_9_en",20236,], +["features.roomdetails.impl.members_RoomMemberListView_Day_7_en","features.roomdetails.impl.members_RoomMemberListView_Night_7_en",20238,], +["features.roomdetails.impl.members_RoomMemberListView_Day_8_en","features.roomdetails.impl.members_RoomMemberListView_Night_8_en",20238,], +["features.roomdetails.impl.members_RoomMemberListView_Day_9_en","features.roomdetails.impl.members_RoomMemberListView_Night_9_en",20238,], ["libraries.designsystem.atomic.molecules_RoomMembersCountMolecule_Day_0_en","libraries.designsystem.atomic.molecules_RoomMembersCountMolecule_Night_0_en",0,], -["features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_0_en","features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_0_en",20236,], +["features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_0_en","features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_0_en",20238,], ["features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_10_en","features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_10_en",0,], -["features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_1_en","features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_1_en",20236,], -["features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_2_en","features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_2_en",20236,], -["features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_3_en","features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_3_en",20236,], -["features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_4_en","features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_4_en",20236,], -["features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_5_en","features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_5_en",20236,], -["features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_6_en","features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_6_en",20236,], +["features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_1_en","features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_1_en",20238,], +["features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_2_en","features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_2_en",20238,], +["features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_3_en","features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_3_en",20238,], +["features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_4_en","features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_4_en",20238,], +["features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_5_en","features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_5_en",20238,], +["features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_6_en","features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_6_en",20238,], ["features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_7_en","features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_7_en",0,], -["features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_8_en","features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_8_en",20236,], -["features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_9_en","features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_9_en",20236,], -["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsOption_Day_0_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsOption_Night_0_en",20236,], -["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_0_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_0_en",20236,], -["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_1_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_1_en",20236,], -["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_2_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_2_en",20236,], -["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_3_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_3_en",20236,], -["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_4_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_4_en",20236,], -["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_5_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_5_en",20236,], -["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_6_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_6_en",20236,], -["libraries.roomselect.impl_RoomSelectView_Day_0_en","libraries.roomselect.impl_RoomSelectView_Night_0_en",20236,], -["libraries.roomselect.impl_RoomSelectView_Day_1_en","libraries.roomselect.impl_RoomSelectView_Night_1_en",20236,], -["libraries.roomselect.impl_RoomSelectView_Day_2_en","libraries.roomselect.impl_RoomSelectView_Night_2_en",20236,], -["libraries.roomselect.impl_RoomSelectView_Day_3_en","libraries.roomselect.impl_RoomSelectView_Night_3_en",20236,], -["libraries.roomselect.impl_RoomSelectView_Day_4_en","libraries.roomselect.impl_RoomSelectView_Night_4_en",20236,], -["libraries.roomselect.impl_RoomSelectView_Day_5_en","libraries.roomselect.impl_RoomSelectView_Night_5_en",20236,], +["features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_8_en","features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_8_en",20238,], +["features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_9_en","features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_9_en",20238,], +["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsOption_Day_0_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsOption_Night_0_en",20238,], +["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_0_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_0_en",20238,], +["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_1_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_1_en",20238,], +["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_2_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_2_en",20238,], +["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_3_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_3_en",20238,], +["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_4_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_4_en",20238,], +["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_5_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_5_en",20238,], +["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_6_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_6_en",20238,], +["libraries.roomselect.impl_RoomSelectView_Day_0_en","libraries.roomselect.impl_RoomSelectView_Night_0_en",20238,], +["libraries.roomselect.impl_RoomSelectView_Day_1_en","libraries.roomselect.impl_RoomSelectView_Night_1_en",20238,], +["libraries.roomselect.impl_RoomSelectView_Day_2_en","libraries.roomselect.impl_RoomSelectView_Night_2_en",20238,], +["libraries.roomselect.impl_RoomSelectView_Day_3_en","libraries.roomselect.impl_RoomSelectView_Night_3_en",20238,], +["libraries.roomselect.impl_RoomSelectView_Day_4_en","libraries.roomselect.impl_RoomSelectView_Night_4_en",20238,], +["libraries.roomselect.impl_RoomSelectView_Day_5_en","libraries.roomselect.impl_RoomSelectView_Night_5_en",20238,], ["features.roomlist.impl.components_RoomSummaryPlaceholderRow_Day_0_en","features.roomlist.impl.components_RoomSummaryPlaceholderRow_Night_0_en",0,], ["features.roomlist.impl.components_RoomSummaryRow_Day_0_en","features.roomlist.impl.components_RoomSummaryRow_Night_0_en",0,], ["features.roomlist.impl.components_RoomSummaryRow_Day_10_en","features.roomlist.impl.components_RoomSummaryRow_Night_10_en",0,], @@ -1060,12 +1060,12 @@ export const screenshots = [ ["features.roomlist.impl.components_RoomSummaryRow_Day_26_en","features.roomlist.impl.components_RoomSummaryRow_Night_26_en",0,], ["features.roomlist.impl.components_RoomSummaryRow_Day_27_en","features.roomlist.impl.components_RoomSummaryRow_Night_27_en",0,], ["features.roomlist.impl.components_RoomSummaryRow_Day_28_en","features.roomlist.impl.components_RoomSummaryRow_Night_28_en",0,], -["features.roomlist.impl.components_RoomSummaryRow_Day_29_en","features.roomlist.impl.components_RoomSummaryRow_Night_29_en",20236,], -["features.roomlist.impl.components_RoomSummaryRow_Day_2_en","features.roomlist.impl.components_RoomSummaryRow_Night_2_en",20236,], -["features.roomlist.impl.components_RoomSummaryRow_Day_30_en","features.roomlist.impl.components_RoomSummaryRow_Night_30_en",20236,], -["features.roomlist.impl.components_RoomSummaryRow_Day_31_en","features.roomlist.impl.components_RoomSummaryRow_Night_31_en",20236,], -["features.roomlist.impl.components_RoomSummaryRow_Day_32_en","features.roomlist.impl.components_RoomSummaryRow_Night_32_en",20236,], -["features.roomlist.impl.components_RoomSummaryRow_Day_33_en","features.roomlist.impl.components_RoomSummaryRow_Night_33_en",20236,], +["features.roomlist.impl.components_RoomSummaryRow_Day_29_en","features.roomlist.impl.components_RoomSummaryRow_Night_29_en",20238,], +["features.roomlist.impl.components_RoomSummaryRow_Day_2_en","features.roomlist.impl.components_RoomSummaryRow_Night_2_en",20238,], +["features.roomlist.impl.components_RoomSummaryRow_Day_30_en","features.roomlist.impl.components_RoomSummaryRow_Night_30_en",20238,], +["features.roomlist.impl.components_RoomSummaryRow_Day_31_en","features.roomlist.impl.components_RoomSummaryRow_Night_31_en",20238,], +["features.roomlist.impl.components_RoomSummaryRow_Day_32_en","features.roomlist.impl.components_RoomSummaryRow_Night_32_en",20238,], +["features.roomlist.impl.components_RoomSummaryRow_Day_33_en","features.roomlist.impl.components_RoomSummaryRow_Night_33_en",20238,], ["features.roomlist.impl.components_RoomSummaryRow_Day_3_en","features.roomlist.impl.components_RoomSummaryRow_Night_3_en",0,], ["features.roomlist.impl.components_RoomSummaryRow_Day_4_en","features.roomlist.impl.components_RoomSummaryRow_Night_4_en",0,], ["features.roomlist.impl.components_RoomSummaryRow_Day_5_en","features.roomlist.impl.components_RoomSummaryRow_Night_5_en",0,], @@ -1073,77 +1073,77 @@ export const screenshots = [ ["features.roomlist.impl.components_RoomSummaryRow_Day_7_en","features.roomlist.impl.components_RoomSummaryRow_Night_7_en",0,], ["features.roomlist.impl.components_RoomSummaryRow_Day_8_en","features.roomlist.impl.components_RoomSummaryRow_Night_8_en",0,], ["features.roomlist.impl.components_RoomSummaryRow_Day_9_en","features.roomlist.impl.components_RoomSummaryRow_Night_9_en",0,], -["appnav.root_RootView_Day_0_en","appnav.root_RootView_Night_0_en",20236,], -["appnav.root_RootView_Day_1_en","appnav.root_RootView_Night_1_en",20236,], -["appnav.root_RootView_Day_2_en","appnav.root_RootView_Night_2_en",20236,], +["appnav.root_RootView_Day_0_en","appnav.root_RootView_Night_0_en",20238,], +["appnav.root_RootView_Day_1_en","appnav.root_RootView_Night_1_en",20238,], +["appnav.root_RootView_Day_2_en","appnav.root_RootView_Night_2_en",20238,], ["appicon.element_RoundIcon_en","",0,], ["appicon.enterprise_RoundIcon_en","",0,], ["libraries.designsystem.atomic.atoms_RoundedIconAtom_Day_0_en","libraries.designsystem.atomic.atoms_RoundedIconAtom_Night_0_en",0,], -["features.verifysession.impl.emoji_SasEmojis_Day_0_en","features.verifysession.impl.emoji_SasEmojis_Night_0_en",20236,], -["features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Day_0_en","features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Night_0_en",20236,], -["features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Day_1_en","features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Night_1_en",20236,], +["features.verifysession.impl.emoji_SasEmojis_Day_0_en","features.verifysession.impl.emoji_SasEmojis_Night_0_en",20238,], +["features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Day_0_en","features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Night_0_en",20238,], +["features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Day_1_en","features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Night_1_en",20238,], ["libraries.designsystem.theme.components_SearchBarActiveNoneQuery_Search_views_en","",0,], ["libraries.designsystem.theme.components_SearchBarActiveWithContent_Search_views_en","",0,], -["libraries.designsystem.theme.components_SearchBarActiveWithNoResults_Search_views_en","",20236,], +["libraries.designsystem.theme.components_SearchBarActiveWithNoResults_Search_views_en","",20238,], ["libraries.designsystem.theme.components_SearchBarActiveWithQueryNoBackButton_Search_views_en","",0,], ["libraries.designsystem.theme.components_SearchBarActiveWithQuery_Search_views_en","",0,], ["libraries.designsystem.theme.components_SearchBarInactive_Search_views_en","",0,], -["features.createroom.impl.components_SearchMultipleUsersResultItem_en","",20236,], -["features.createroom.impl.components_SearchSingleUserResultItem_en","",20236,], -["features.securebackup.impl.disable_SecureBackupDisableView_Day_0_en","features.securebackup.impl.disable_SecureBackupDisableView_Night_0_en",20236,], -["features.securebackup.impl.disable_SecureBackupDisableView_Day_1_en","features.securebackup.impl.disable_SecureBackupDisableView_Night_1_en",20236,], -["features.securebackup.impl.disable_SecureBackupDisableView_Day_2_en","features.securebackup.impl.disable_SecureBackupDisableView_Night_2_en",20236,], -["features.securebackup.impl.disable_SecureBackupDisableView_Day_3_en","features.securebackup.impl.disable_SecureBackupDisableView_Night_3_en",20236,], -["features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_0_en","features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_0_en",20236,], -["features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_1_en","features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_1_en",20236,], -["features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_2_en","features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_2_en",20236,], -["features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_3_en","features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_3_en",20236,], -["features.securebackup.impl.root_SecureBackupRootView_Day_0_en","features.securebackup.impl.root_SecureBackupRootView_Night_0_en",20236,], -["features.securebackup.impl.root_SecureBackupRootView_Day_10_en","features.securebackup.impl.root_SecureBackupRootView_Night_10_en",20236,], -["features.securebackup.impl.root_SecureBackupRootView_Day_11_en","features.securebackup.impl.root_SecureBackupRootView_Night_11_en",20236,], -["features.securebackup.impl.root_SecureBackupRootView_Day_12_en","features.securebackup.impl.root_SecureBackupRootView_Night_12_en",20236,], -["features.securebackup.impl.root_SecureBackupRootView_Day_13_en","features.securebackup.impl.root_SecureBackupRootView_Night_13_en",20236,], -["features.securebackup.impl.root_SecureBackupRootView_Day_14_en","features.securebackup.impl.root_SecureBackupRootView_Night_14_en",20236,], -["features.securebackup.impl.root_SecureBackupRootView_Day_15_en","features.securebackup.impl.root_SecureBackupRootView_Night_15_en",20236,], -["features.securebackup.impl.root_SecureBackupRootView_Day_16_en","features.securebackup.impl.root_SecureBackupRootView_Night_16_en",20236,], -["features.securebackup.impl.root_SecureBackupRootView_Day_17_en","features.securebackup.impl.root_SecureBackupRootView_Night_17_en",20236,], -["features.securebackup.impl.root_SecureBackupRootView_Day_1_en","features.securebackup.impl.root_SecureBackupRootView_Night_1_en",20236,], -["features.securebackup.impl.root_SecureBackupRootView_Day_2_en","features.securebackup.impl.root_SecureBackupRootView_Night_2_en",20236,], -["features.securebackup.impl.root_SecureBackupRootView_Day_3_en","features.securebackup.impl.root_SecureBackupRootView_Night_3_en",20236,], -["features.securebackup.impl.root_SecureBackupRootView_Day_4_en","features.securebackup.impl.root_SecureBackupRootView_Night_4_en",20236,], -["features.securebackup.impl.root_SecureBackupRootView_Day_5_en","features.securebackup.impl.root_SecureBackupRootView_Night_5_en",20236,], -["features.securebackup.impl.root_SecureBackupRootView_Day_6_en","features.securebackup.impl.root_SecureBackupRootView_Night_6_en",20236,], -["features.securebackup.impl.root_SecureBackupRootView_Day_7_en","features.securebackup.impl.root_SecureBackupRootView_Night_7_en",20236,], -["features.securebackup.impl.root_SecureBackupRootView_Day_8_en","features.securebackup.impl.root_SecureBackupRootView_Night_8_en",20236,], -["features.securebackup.impl.root_SecureBackupRootView_Day_9_en","features.securebackup.impl.root_SecureBackupRootView_Night_9_en",20236,], -["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_0_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_0_en",20236,], -["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_1_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_1_en",20236,], -["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_2_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_2_en",20236,], -["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_3_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_3_en",20236,], -["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_4_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_4_en",20236,], -["features.securebackup.impl.setup_SecureBackupSetupView_Day_0_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_0_en",20236,], -["features.securebackup.impl.setup_SecureBackupSetupView_Day_1_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_1_en",20236,], -["features.securebackup.impl.setup_SecureBackupSetupView_Day_2_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_2_en",20236,], -["features.securebackup.impl.setup_SecureBackupSetupView_Day_3_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_3_en",20236,], -["features.securebackup.impl.setup_SecureBackupSetupView_Day_4_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_4_en",20236,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_0_en","",20236,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_1_en","",20236,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_2_en","",20236,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_3_en","",20236,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_4_en","",20236,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_5_en","",20236,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_6_en","",20236,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_7_en","",20236,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_8_en","",20236,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_0_en","",20236,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_1_en","",20236,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_2_en","",20236,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_3_en","",20236,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_4_en","",20236,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_5_en","",20236,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_6_en","",20236,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_7_en","",20236,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_8_en","",20236,], +["features.createroom.impl.components_SearchMultipleUsersResultItem_en","",20238,], +["features.createroom.impl.components_SearchSingleUserResultItem_en","",20238,], +["features.securebackup.impl.disable_SecureBackupDisableView_Day_0_en","features.securebackup.impl.disable_SecureBackupDisableView_Night_0_en",20238,], +["features.securebackup.impl.disable_SecureBackupDisableView_Day_1_en","features.securebackup.impl.disable_SecureBackupDisableView_Night_1_en",20238,], +["features.securebackup.impl.disable_SecureBackupDisableView_Day_2_en","features.securebackup.impl.disable_SecureBackupDisableView_Night_2_en",20238,], +["features.securebackup.impl.disable_SecureBackupDisableView_Day_3_en","features.securebackup.impl.disable_SecureBackupDisableView_Night_3_en",20238,], +["features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_0_en","features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_0_en",20238,], +["features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_1_en","features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_1_en",20238,], +["features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_2_en","features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_2_en",20238,], +["features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_3_en","features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_3_en",20238,], +["features.securebackup.impl.root_SecureBackupRootView_Day_0_en","features.securebackup.impl.root_SecureBackupRootView_Night_0_en",20238,], +["features.securebackup.impl.root_SecureBackupRootView_Day_10_en","features.securebackup.impl.root_SecureBackupRootView_Night_10_en",20238,], +["features.securebackup.impl.root_SecureBackupRootView_Day_11_en","features.securebackup.impl.root_SecureBackupRootView_Night_11_en",20238,], +["features.securebackup.impl.root_SecureBackupRootView_Day_12_en","features.securebackup.impl.root_SecureBackupRootView_Night_12_en",20238,], +["features.securebackup.impl.root_SecureBackupRootView_Day_13_en","features.securebackup.impl.root_SecureBackupRootView_Night_13_en",20238,], +["features.securebackup.impl.root_SecureBackupRootView_Day_14_en","features.securebackup.impl.root_SecureBackupRootView_Night_14_en",20238,], +["features.securebackup.impl.root_SecureBackupRootView_Day_15_en","features.securebackup.impl.root_SecureBackupRootView_Night_15_en",20238,], +["features.securebackup.impl.root_SecureBackupRootView_Day_16_en","features.securebackup.impl.root_SecureBackupRootView_Night_16_en",20238,], +["features.securebackup.impl.root_SecureBackupRootView_Day_17_en","features.securebackup.impl.root_SecureBackupRootView_Night_17_en",20238,], +["features.securebackup.impl.root_SecureBackupRootView_Day_1_en","features.securebackup.impl.root_SecureBackupRootView_Night_1_en",20238,], +["features.securebackup.impl.root_SecureBackupRootView_Day_2_en","features.securebackup.impl.root_SecureBackupRootView_Night_2_en",20238,], +["features.securebackup.impl.root_SecureBackupRootView_Day_3_en","features.securebackup.impl.root_SecureBackupRootView_Night_3_en",20238,], +["features.securebackup.impl.root_SecureBackupRootView_Day_4_en","features.securebackup.impl.root_SecureBackupRootView_Night_4_en",20238,], +["features.securebackup.impl.root_SecureBackupRootView_Day_5_en","features.securebackup.impl.root_SecureBackupRootView_Night_5_en",20238,], +["features.securebackup.impl.root_SecureBackupRootView_Day_6_en","features.securebackup.impl.root_SecureBackupRootView_Night_6_en",20238,], +["features.securebackup.impl.root_SecureBackupRootView_Day_7_en","features.securebackup.impl.root_SecureBackupRootView_Night_7_en",20238,], +["features.securebackup.impl.root_SecureBackupRootView_Day_8_en","features.securebackup.impl.root_SecureBackupRootView_Night_8_en",20238,], +["features.securebackup.impl.root_SecureBackupRootView_Day_9_en","features.securebackup.impl.root_SecureBackupRootView_Night_9_en",20238,], +["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_0_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_0_en",20238,], +["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_1_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_1_en",20238,], +["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_2_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_2_en",20238,], +["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_3_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_3_en",20238,], +["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_4_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_4_en",20238,], +["features.securebackup.impl.setup_SecureBackupSetupView_Day_0_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_0_en",20238,], +["features.securebackup.impl.setup_SecureBackupSetupView_Day_1_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_1_en",20238,], +["features.securebackup.impl.setup_SecureBackupSetupView_Day_2_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_2_en",20238,], +["features.securebackup.impl.setup_SecureBackupSetupView_Day_3_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_3_en",20238,], +["features.securebackup.impl.setup_SecureBackupSetupView_Day_4_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_4_en",20238,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_0_en","",20238,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_1_en","",20238,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_2_en","",20238,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_3_en","",20238,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_4_en","",20238,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_5_en","",20238,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_6_en","",20238,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_7_en","",20238,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_8_en","",20238,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_0_en","",20238,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_1_en","",20238,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_2_en","",20238,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_3_en","",20238,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_4_en","",20238,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_5_en","",20238,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_6_en","",20238,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_7_en","",20238,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_8_en","",20238,], ["libraries.matrix.ui.components_SelectedRoom_Day_0_en","libraries.matrix.ui.components_SelectedRoom_Night_0_en",0,], ["libraries.matrix.ui.components_SelectedRoom_Day_1_en","libraries.matrix.ui.components_SelectedRoom_Night_1_en",0,], ["libraries.matrix.ui.components_SelectedRoom_Day_2_en","libraries.matrix.ui.components_SelectedRoom_Night_2_en",0,], @@ -1151,11 +1151,11 @@ export const screenshots = [ ["libraries.matrix.ui.components_SelectedUser_Day_0_en","libraries.matrix.ui.components_SelectedUser_Night_0_en",0,], ["libraries.matrix.ui.components_SelectedUsersRowList_Day_0_en","libraries.matrix.ui.components_SelectedUsersRowList_Night_0_en",0,], ["libraries.textcomposer.components_SendButton_Day_0_en","libraries.textcomposer.components_SendButton_Night_0_en",0,], -["features.location.impl.send_SendLocationView_Day_0_en","features.location.impl.send_SendLocationView_Night_0_en",20236,], -["features.location.impl.send_SendLocationView_Day_1_en","features.location.impl.send_SendLocationView_Night_1_en",20236,], -["features.location.impl.send_SendLocationView_Day_2_en","features.location.impl.send_SendLocationView_Night_2_en",20236,], -["features.location.impl.send_SendLocationView_Day_3_en","features.location.impl.send_SendLocationView_Night_3_en",20236,], -["features.location.impl.send_SendLocationView_Day_4_en","features.location.impl.send_SendLocationView_Night_4_en",20236,], +["features.location.impl.send_SendLocationView_Day_0_en","features.location.impl.send_SendLocationView_Night_0_en",20238,], +["features.location.impl.send_SendLocationView_Day_1_en","features.location.impl.send_SendLocationView_Night_1_en",20238,], +["features.location.impl.send_SendLocationView_Day_2_en","features.location.impl.send_SendLocationView_Night_2_en",20238,], +["features.location.impl.send_SendLocationView_Day_3_en","features.location.impl.send_SendLocationView_Night_3_en",20238,], +["features.location.impl.send_SendLocationView_Day_4_en","features.location.impl.send_SendLocationView_Night_4_en",20238,], ["libraries.matrix.ui.messages.sender_SenderName_Day_0_en","libraries.matrix.ui.messages.sender_SenderName_Night_0_en",0,], ["libraries.matrix.ui.messages.sender_SenderName_Day_1_en","libraries.matrix.ui.messages.sender_SenderName_Night_1_en",0,], ["libraries.matrix.ui.messages.sender_SenderName_Day_2_en","libraries.matrix.ui.messages.sender_SenderName_Night_2_en",0,], @@ -1165,27 +1165,27 @@ export const screenshots = [ ["libraries.matrix.ui.messages.sender_SenderName_Day_6_en","libraries.matrix.ui.messages.sender_SenderName_Night_6_en",0,], ["libraries.matrix.ui.messages.sender_SenderName_Day_7_en","libraries.matrix.ui.messages.sender_SenderName_Night_7_en",0,], ["libraries.matrix.ui.messages.sender_SenderName_Day_8_en","libraries.matrix.ui.messages.sender_SenderName_Night_8_en",0,], -["features.verifysession.impl.incoming.ui_SessionDetailsView_Day_0_en","features.verifysession.impl.incoming.ui_SessionDetailsView_Night_0_en",20236,], -["features.roomlist.impl.components_SetUpRecoveryKeyBanner_Day_0_en","features.roomlist.impl.components_SetUpRecoveryKeyBanner_Night_0_en",20236,], -["features.lockscreen.impl.setup.biometric_SetupBiometricView_Day_0_en","features.lockscreen.impl.setup.biometric_SetupBiometricView_Night_0_en",20236,], -["features.lockscreen.impl.setup.pin_SetupPinView_Day_0_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_0_en",20236,], -["features.lockscreen.impl.setup.pin_SetupPinView_Day_1_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_1_en",20236,], -["features.lockscreen.impl.setup.pin_SetupPinView_Day_2_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_2_en",20236,], -["features.lockscreen.impl.setup.pin_SetupPinView_Day_3_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_3_en",20236,], -["features.lockscreen.impl.setup.pin_SetupPinView_Day_4_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_4_en",20236,], +["features.verifysession.impl.incoming.ui_SessionDetailsView_Day_0_en","features.verifysession.impl.incoming.ui_SessionDetailsView_Night_0_en",20238,], +["features.roomlist.impl.components_SetUpRecoveryKeyBanner_Day_0_en","features.roomlist.impl.components_SetUpRecoveryKeyBanner_Night_0_en",20238,], +["features.lockscreen.impl.setup.biometric_SetupBiometricView_Day_0_en","features.lockscreen.impl.setup.biometric_SetupBiometricView_Night_0_en",20238,], +["features.lockscreen.impl.setup.pin_SetupPinView_Day_0_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_0_en",20238,], +["features.lockscreen.impl.setup.pin_SetupPinView_Day_1_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_1_en",20238,], +["features.lockscreen.impl.setup.pin_SetupPinView_Day_2_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_2_en",20238,], +["features.lockscreen.impl.setup.pin_SetupPinView_Day_3_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_3_en",20238,], +["features.lockscreen.impl.setup.pin_SetupPinView_Day_4_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_4_en",20238,], ["features.share.impl_ShareView_Day_0_en","features.share.impl_ShareView_Night_0_en",0,], ["features.share.impl_ShareView_Day_1_en","features.share.impl_ShareView_Night_1_en",0,], ["features.share.impl_ShareView_Day_2_en","features.share.impl_ShareView_Night_2_en",0,], -["features.share.impl_ShareView_Day_3_en","features.share.impl_ShareView_Night_3_en",20236,], -["features.location.impl.show_ShowLocationView_Day_0_en","features.location.impl.show_ShowLocationView_Night_0_en",20236,], -["features.location.impl.show_ShowLocationView_Day_1_en","features.location.impl.show_ShowLocationView_Night_1_en",20236,], -["features.location.impl.show_ShowLocationView_Day_2_en","features.location.impl.show_ShowLocationView_Night_2_en",20236,], -["features.location.impl.show_ShowLocationView_Day_3_en","features.location.impl.show_ShowLocationView_Night_3_en",20236,], -["features.location.impl.show_ShowLocationView_Day_4_en","features.location.impl.show_ShowLocationView_Night_4_en",20236,], -["features.location.impl.show_ShowLocationView_Day_5_en","features.location.impl.show_ShowLocationView_Night_5_en",20236,], -["features.location.impl.show_ShowLocationView_Day_6_en","features.location.impl.show_ShowLocationView_Night_6_en",20236,], -["features.location.impl.show_ShowLocationView_Day_7_en","features.location.impl.show_ShowLocationView_Night_7_en",20236,], -["features.signedout.impl_SignedOutView_Day_0_en","features.signedout.impl_SignedOutView_Night_0_en",20236,], +["features.share.impl_ShareView_Day_3_en","features.share.impl_ShareView_Night_3_en",20238,], +["features.location.impl.show_ShowLocationView_Day_0_en","features.location.impl.show_ShowLocationView_Night_0_en",20238,], +["features.location.impl.show_ShowLocationView_Day_1_en","features.location.impl.show_ShowLocationView_Night_1_en",20238,], +["features.location.impl.show_ShowLocationView_Day_2_en","features.location.impl.show_ShowLocationView_Night_2_en",20238,], +["features.location.impl.show_ShowLocationView_Day_3_en","features.location.impl.show_ShowLocationView_Night_3_en",20238,], +["features.location.impl.show_ShowLocationView_Day_4_en","features.location.impl.show_ShowLocationView_Night_4_en",20238,], +["features.location.impl.show_ShowLocationView_Day_5_en","features.location.impl.show_ShowLocationView_Night_5_en",20238,], +["features.location.impl.show_ShowLocationView_Day_6_en","features.location.impl.show_ShowLocationView_Night_6_en",20238,], +["features.location.impl.show_ShowLocationView_Day_7_en","features.location.impl.show_ShowLocationView_Night_7_en",20238,], +["features.signedout.impl_SignedOutView_Day_0_en","features.signedout.impl_SignedOutView_Night_0_en",20238,], ["libraries.designsystem.components.dialogs_SingleSelectionDialogContent_Dialogs_en","",0,], ["libraries.designsystem.components.dialogs_SingleSelectionDialog_Day_0_en","libraries.designsystem.components.dialogs_SingleSelectionDialog_Night_0_en",0,], ["libraries.designsystem.components.list_SingleSelectionListItemCustomFormattert_Single_selection_List_item_-_custom_formatter_List_items_en","",0,], @@ -1194,7 +1194,7 @@ export const screenshots = [ ["libraries.designsystem.components.list_SingleSelectionListItemUnselectedWithSupportingText_Single_selection_List_item_-_no_selection,_supporting_text_List_items_en","",0,], ["libraries.designsystem.components.list_SingleSelectionListItem_Single_selection_List_item_-_no_selection_List_items_en","",0,], ["libraries.designsystem.theme.components_Sliders_Sliders_en","",0,], -["features.login.impl.dialogs_SlidingSyncNotSupportedDialog_Day_0_en","features.login.impl.dialogs_SlidingSyncNotSupportedDialog_Night_0_en",20236,], +["features.login.impl.dialogs_SlidingSyncNotSupportedDialog_Day_0_en","features.login.impl.dialogs_SlidingSyncNotSupportedDialog_Night_0_en",20238,], ["libraries.designsystem.theme.components_SnackbarWithActionAndCloseButton_Snackbar_with_action_and_close_button_Snackbars_en","",0,], ["libraries.designsystem.theme.components_SnackbarWithActionOnNewLineAndCloseButton_Snackbar_with_action_and_close_button_on_new_line_Snackbars_en","",0,], ["libraries.designsystem.theme.components_SnackbarWithActionOnNewLine_Snackbar_with_action_on_new_line_Snackbars_en","",0,], @@ -1203,60 +1203,60 @@ export const screenshots = [ ["libraries.designsystem.modifiers_SquareSizeModifierInsideSquare_en","",0,], ["libraries.designsystem.modifiers_SquareSizeModifierLargeHeight_en","",0,], ["libraries.designsystem.modifiers_SquareSizeModifierLargeWidth_en","",0,], -["features.location.api.internal_StaticMapPlaceholder_Day_0_en","features.location.api.internal_StaticMapPlaceholder_Night_0_en",20236,], +["features.location.api.internal_StaticMapPlaceholder_Day_0_en","features.location.api.internal_StaticMapPlaceholder_Night_0_en",20238,], ["features.location.api_StaticMapView_Day_0_en","features.location.api_StaticMapView_Night_0_en",0,], -["features.messages.impl.messagecomposer.suggestions_SuggestionsPickerView_Day_0_en","features.messages.impl.messagecomposer.suggestions_SuggestionsPickerView_Night_0_en",20236,], +["features.messages.impl.messagecomposer.suggestions_SuggestionsPickerView_Day_0_en","features.messages.impl.messagecomposer.suggestions_SuggestionsPickerView_Night_0_en",20238,], ["libraries.designsystem.atomic.pages_SunsetPage_Day_0_en","libraries.designsystem.atomic.pages_SunsetPage_Night_0_en",0,], ["libraries.designsystem.components.button_SuperButton_Day_0_en","libraries.designsystem.components.button_SuperButton_Night_0_en",0,], ["libraries.designsystem.theme.components_Surface_en","",0,], ["libraries.designsystem.theme.components_Switch_Toggles_en","",0,], -["appnav.loggedin_SyncStateView_Day_0_en","appnav.loggedin_SyncStateView_Night_0_en",20236,], +["appnav.loggedin_SyncStateView_Day_0_en","appnav.loggedin_SyncStateView_Night_0_en",20238,], ["libraries.designsystem.theme.components_TextButtonLargeLowPadding_Buttons_en","",0,], ["libraries.designsystem.theme.components_TextButtonLarge_Buttons_en","",0,], ["libraries.designsystem.theme.components_TextButtonMediumLowPadding_Buttons_en","",0,], ["libraries.designsystem.theme.components_TextButtonMedium_Buttons_en","",0,], ["libraries.designsystem.theme.components_TextButtonSmall_Buttons_en","",0,], -["libraries.textcomposer_TextComposerAddCaption_Day_0_en","libraries.textcomposer_TextComposerAddCaption_Night_0_en",20236,], -["libraries.textcomposer_TextComposerCaption_Day_0_en","libraries.textcomposer_TextComposerCaption_Night_0_en",20236,], -["libraries.textcomposer_TextComposerEditCaption_Day_0_en","libraries.textcomposer_TextComposerEditCaption_Night_0_en",20236,], -["libraries.textcomposer_TextComposerEditNotEncrypted_Day_0_en","libraries.textcomposer_TextComposerEditNotEncrypted_Night_0_en",20236,], -["libraries.textcomposer_TextComposerEdit_Day_0_en","libraries.textcomposer_TextComposerEdit_Night_0_en",20236,], -["libraries.textcomposer_TextComposerFormattingNotEncrypted_Day_0_en","libraries.textcomposer_TextComposerFormattingNotEncrypted_Night_0_en",20236,], -["libraries.textcomposer_TextComposerFormatting_Day_0_en","libraries.textcomposer_TextComposerFormatting_Night_0_en",20236,], -["libraries.textcomposer_TextComposerLinkDialogCreateLinkWithoutText_Day_0_en","libraries.textcomposer_TextComposerLinkDialogCreateLinkWithoutText_Night_0_en",20236,], -["libraries.textcomposer_TextComposerLinkDialogCreateLink_Day_0_en","libraries.textcomposer_TextComposerLinkDialogCreateLink_Night_0_en",20236,], -["libraries.textcomposer_TextComposerLinkDialogEditLink_Day_0_en","libraries.textcomposer_TextComposerLinkDialogEditLink_Night_0_en",20236,], -["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_0_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_0_en",20236,], -["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_10_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_10_en",20236,], -["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_11_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_11_en",20236,], -["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_1_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_1_en",20236,], -["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_2_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_2_en",20236,], -["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_3_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_3_en",20236,], -["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_4_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_4_en",20236,], -["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_5_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_5_en",20236,], -["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_6_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_6_en",20236,], -["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_7_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_7_en",20236,], -["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_8_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_8_en",20236,], -["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_9_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_9_en",20236,], -["libraries.textcomposer_TextComposerReply_Day_0_en","libraries.textcomposer_TextComposerReply_Night_0_en",20236,], -["libraries.textcomposer_TextComposerReply_Day_10_en","libraries.textcomposer_TextComposerReply_Night_10_en",20236,], -["libraries.textcomposer_TextComposerReply_Day_11_en","libraries.textcomposer_TextComposerReply_Night_11_en",20236,], -["libraries.textcomposer_TextComposerReply_Day_1_en","libraries.textcomposer_TextComposerReply_Night_1_en",20236,], -["libraries.textcomposer_TextComposerReply_Day_2_en","libraries.textcomposer_TextComposerReply_Night_2_en",20236,], -["libraries.textcomposer_TextComposerReply_Day_3_en","libraries.textcomposer_TextComposerReply_Night_3_en",20236,], -["libraries.textcomposer_TextComposerReply_Day_4_en","libraries.textcomposer_TextComposerReply_Night_4_en",20236,], -["libraries.textcomposer_TextComposerReply_Day_5_en","libraries.textcomposer_TextComposerReply_Night_5_en",20236,], -["libraries.textcomposer_TextComposerReply_Day_6_en","libraries.textcomposer_TextComposerReply_Night_6_en",20236,], -["libraries.textcomposer_TextComposerReply_Day_7_en","libraries.textcomposer_TextComposerReply_Night_7_en",20236,], -["libraries.textcomposer_TextComposerReply_Day_8_en","libraries.textcomposer_TextComposerReply_Night_8_en",20236,], -["libraries.textcomposer_TextComposerReply_Day_9_en","libraries.textcomposer_TextComposerReply_Night_9_en",20236,], -["libraries.textcomposer_TextComposerSimpleNotEncrypted_Day_0_en","libraries.textcomposer_TextComposerSimpleNotEncrypted_Night_0_en",20236,], -["libraries.textcomposer_TextComposerSimple_Day_0_en","libraries.textcomposer_TextComposerSimple_Night_0_en",20236,], -["libraries.textcomposer_TextComposerVoiceNotEncrypted_Day_0_en","libraries.textcomposer_TextComposerVoiceNotEncrypted_Night_0_en",20236,], +["libraries.textcomposer_TextComposerAddCaption_Day_0_en","libraries.textcomposer_TextComposerAddCaption_Night_0_en",20238,], +["libraries.textcomposer_TextComposerCaption_Day_0_en","libraries.textcomposer_TextComposerCaption_Night_0_en",20238,], +["libraries.textcomposer_TextComposerEditCaption_Day_0_en","libraries.textcomposer_TextComposerEditCaption_Night_0_en",20238,], +["libraries.textcomposer_TextComposerEditNotEncrypted_Day_0_en","libraries.textcomposer_TextComposerEditNotEncrypted_Night_0_en",20238,], +["libraries.textcomposer_TextComposerEdit_Day_0_en","libraries.textcomposer_TextComposerEdit_Night_0_en",20238,], +["libraries.textcomposer_TextComposerFormattingNotEncrypted_Day_0_en","libraries.textcomposer_TextComposerFormattingNotEncrypted_Night_0_en",20238,], +["libraries.textcomposer_TextComposerFormatting_Day_0_en","libraries.textcomposer_TextComposerFormatting_Night_0_en",20238,], +["libraries.textcomposer_TextComposerLinkDialogCreateLinkWithoutText_Day_0_en","libraries.textcomposer_TextComposerLinkDialogCreateLinkWithoutText_Night_0_en",20238,], +["libraries.textcomposer_TextComposerLinkDialogCreateLink_Day_0_en","libraries.textcomposer_TextComposerLinkDialogCreateLink_Night_0_en",20238,], +["libraries.textcomposer_TextComposerLinkDialogEditLink_Day_0_en","libraries.textcomposer_TextComposerLinkDialogEditLink_Night_0_en",20238,], +["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_0_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_0_en",20238,], +["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_10_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_10_en",20238,], +["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_11_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_11_en",20238,], +["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_1_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_1_en",20238,], +["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_2_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_2_en",20238,], +["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_3_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_3_en",20238,], +["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_4_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_4_en",20238,], +["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_5_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_5_en",20238,], +["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_6_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_6_en",20238,], +["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_7_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_7_en",20238,], +["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_8_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_8_en",20238,], +["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_9_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_9_en",20238,], +["libraries.textcomposer_TextComposerReply_Day_0_en","libraries.textcomposer_TextComposerReply_Night_0_en",20238,], +["libraries.textcomposer_TextComposerReply_Day_10_en","libraries.textcomposer_TextComposerReply_Night_10_en",20238,], +["libraries.textcomposer_TextComposerReply_Day_11_en","libraries.textcomposer_TextComposerReply_Night_11_en",20238,], +["libraries.textcomposer_TextComposerReply_Day_1_en","libraries.textcomposer_TextComposerReply_Night_1_en",20238,], +["libraries.textcomposer_TextComposerReply_Day_2_en","libraries.textcomposer_TextComposerReply_Night_2_en",20238,], +["libraries.textcomposer_TextComposerReply_Day_3_en","libraries.textcomposer_TextComposerReply_Night_3_en",20238,], +["libraries.textcomposer_TextComposerReply_Day_4_en","libraries.textcomposer_TextComposerReply_Night_4_en",20238,], +["libraries.textcomposer_TextComposerReply_Day_5_en","libraries.textcomposer_TextComposerReply_Night_5_en",20238,], +["libraries.textcomposer_TextComposerReply_Day_6_en","libraries.textcomposer_TextComposerReply_Night_6_en",20238,], +["libraries.textcomposer_TextComposerReply_Day_7_en","libraries.textcomposer_TextComposerReply_Night_7_en",20238,], +["libraries.textcomposer_TextComposerReply_Day_8_en","libraries.textcomposer_TextComposerReply_Night_8_en",20238,], +["libraries.textcomposer_TextComposerReply_Day_9_en","libraries.textcomposer_TextComposerReply_Night_9_en",20238,], +["libraries.textcomposer_TextComposerSimpleNotEncrypted_Day_0_en","libraries.textcomposer_TextComposerSimpleNotEncrypted_Night_0_en",20238,], +["libraries.textcomposer_TextComposerSimple_Day_0_en","libraries.textcomposer_TextComposerSimple_Night_0_en",20238,], +["libraries.textcomposer_TextComposerVoiceNotEncrypted_Day_0_en","libraries.textcomposer_TextComposerVoiceNotEncrypted_Night_0_en",20238,], ["libraries.textcomposer_TextComposerVoice_Day_0_en","libraries.textcomposer_TextComposerVoice_Night_0_en",0,], ["libraries.designsystem.theme.components_TextDark_Text_en","",0,], -["libraries.designsystem.components.dialogs_TextFieldDialogWithError_Day_0_en","libraries.designsystem.components.dialogs_TextFieldDialogWithError_Night_0_en",20236,], -["libraries.designsystem.components.dialogs_TextFieldDialog_Day_0_en","libraries.designsystem.components.dialogs_TextFieldDialog_Night_0_en",20236,], +["libraries.designsystem.components.dialogs_TextFieldDialogWithError_Day_0_en","libraries.designsystem.components.dialogs_TextFieldDialogWithError_Night_0_en",20238,], +["libraries.designsystem.components.dialogs_TextFieldDialog_Day_0_en","libraries.designsystem.components.dialogs_TextFieldDialog_Night_0_en",20238,], ["libraries.designsystem.components.list_TextFieldListItemEmpty_Text_field_List_item_-_empty_List_items_en","",0,], ["libraries.designsystem.components.list_TextFieldListItemTextFieldValue_Text_field_List_item_-_textfieldvalue_List_items_en","",0,], ["libraries.designsystem.components.list_TextFieldListItem_Text_field_List_item_-_text_List_items_en","",0,], @@ -1268,14 +1268,14 @@ export const screenshots = [ ["libraries.mediaviewer.impl.local.txt_TextFileContentView_Day_3_en","libraries.mediaviewer.impl.local.txt_TextFileContentView_Night_3_en",0,], ["libraries.textcomposer.components_TextFormatting_Day_0_en","libraries.textcomposer.components_TextFormatting_Night_0_en",0,], ["libraries.designsystem.theme.components_TextLight_Text_en","",0,], -["libraries.designsystem.theme.components.previews_TimePickerHorizontal_DateTime_pickers_en","",20236,], -["libraries.designsystem.theme.components.previews_TimePickerVerticalDark_DateTime_pickers_en","",20236,], -["libraries.designsystem.theme.components.previews_TimePickerVerticalLight_DateTime_pickers_en","",20236,], +["libraries.designsystem.theme.components.previews_TimePickerHorizontal_DateTime_pickers_en","",20238,], +["libraries.designsystem.theme.components.previews_TimePickerVerticalDark_DateTime_pickers_en","",20238,], +["libraries.designsystem.theme.components.previews_TimePickerVerticalLight_DateTime_pickers_en","",20238,], ["features.messages.impl.timeline.components_TimelineEventTimestampView_Day_0_en","features.messages.impl.timeline.components_TimelineEventTimestampView_Night_0_en",0,], ["features.messages.impl.timeline.components_TimelineEventTimestampView_Day_1_en","features.messages.impl.timeline.components_TimelineEventTimestampView_Night_1_en",0,], ["features.messages.impl.timeline.components_TimelineEventTimestampView_Day_2_en","features.messages.impl.timeline.components_TimelineEventTimestampView_Night_2_en",0,], -["features.messages.impl.timeline.components_TimelineEventTimestampView_Day_3_en","features.messages.impl.timeline.components_TimelineEventTimestampView_Night_3_en",20236,], -["features.messages.impl.timeline.components_TimelineEventTimestampView_Day_4_en","features.messages.impl.timeline.components_TimelineEventTimestampView_Night_4_en",20236,], +["features.messages.impl.timeline.components_TimelineEventTimestampView_Day_3_en","features.messages.impl.timeline.components_TimelineEventTimestampView_Night_3_en",20238,], +["features.messages.impl.timeline.components_TimelineEventTimestampView_Day_4_en","features.messages.impl.timeline.components_TimelineEventTimestampView_Night_4_en",20238,], ["features.messages.impl.timeline.components_TimelineEventTimestampView_Day_5_en","features.messages.impl.timeline.components_TimelineEventTimestampView_Night_5_en",0,], ["features.messages.impl.timeline.components_TimelineEventTimestampView_Day_6_en","features.messages.impl.timeline.components_TimelineEventTimestampView_Night_6_en",0,], ["features.messages.impl.timeline.components_TimelineEventTimestampView_Day_7_en","features.messages.impl.timeline.components_TimelineEventTimestampView_Night_7_en",0,], @@ -1285,18 +1285,18 @@ export const screenshots = [ ["features.messages.impl.timeline.components.event_TimelineItemAudioView_Day_2_en","features.messages.impl.timeline.components.event_TimelineItemAudioView_Night_2_en",0,], ["features.messages.impl.timeline.components.event_TimelineItemAudioView_Day_3_en","features.messages.impl.timeline.components.event_TimelineItemAudioView_Night_3_en",0,], ["features.messages.impl.timeline.components.event_TimelineItemAudioView_Day_4_en","features.messages.impl.timeline.components.event_TimelineItemAudioView_Night_4_en",0,], -["features.messages.impl.timeline.components_TimelineItemCallNotifyView_Day_0_en","features.messages.impl.timeline.components_TimelineItemCallNotifyView_Night_0_en",20236,], +["features.messages.impl.timeline.components_TimelineItemCallNotifyView_Day_0_en","features.messages.impl.timeline.components_TimelineItemCallNotifyView_Night_0_en",20238,], ["features.messages.impl.timeline.components.virtual_TimelineItemDaySeparatorView_Day_0_en","features.messages.impl.timeline.components.virtual_TimelineItemDaySeparatorView_Night_0_en",0,], ["features.messages.impl.timeline.components.virtual_TimelineItemDaySeparatorView_Day_1_en","features.messages.impl.timeline.components.virtual_TimelineItemDaySeparatorView_Night_1_en",0,], -["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_0_en",20236,], -["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_1_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_1_en",20236,], -["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_2_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_2_en",20236,], -["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_3_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_3_en",20236,], -["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_4_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_4_en",20236,], -["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_5_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_5_en",20236,], -["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_6_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_6_en",20236,], -["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_7_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_7_en",20236,], -["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_8_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_8_en",20236,], +["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_0_en",20238,], +["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_1_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_1_en",20238,], +["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_2_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_2_en",20238,], +["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_3_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_3_en",20238,], +["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_4_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_4_en",20238,], +["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_5_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_5_en",20238,], +["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_6_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_6_en",20238,], +["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_7_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_7_en",20238,], +["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_8_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_8_en",20238,], ["features.messages.impl.timeline.components_TimelineItemEventRowDisambiguated_Day_0_en","features.messages.impl.timeline.components_TimelineItemEventRowDisambiguated_Night_0_en",0,], ["features.messages.impl.timeline.components_TimelineItemEventRowForDirectRoom_Day_0_en","features.messages.impl.timeline.components_TimelineItemEventRowForDirectRoom_Night_0_en",0,], ["features.messages.impl.timeline.components_TimelineItemEventRowLongSenderName_en","",0,], @@ -1304,18 +1304,18 @@ export const screenshots = [ ["features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_0_en","features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Night_0_en",0,], ["features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_1_en","features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Night_1_en",0,], ["features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_2_en","features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Night_2_en",0,], -["features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_3_en","features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Night_3_en",20236,], -["features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_4_en","features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Night_4_en",20236,], +["features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_3_en","features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Night_3_en",20238,], +["features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_4_en","features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Night_4_en",20238,], ["features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_5_en","features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Night_5_en",0,], ["features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_6_en","features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Night_6_en",0,], -["features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_7_en","features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Night_7_en",20236,], -["features.messages.impl.timeline.components_TimelineItemEventRowUtd_Day_0_en","features.messages.impl.timeline.components_TimelineItemEventRowUtd_Night_0_en",20236,], -["features.messages.impl.timeline.components_TimelineItemEventRowWithManyReactions_Day_0_en","features.messages.impl.timeline.components_TimelineItemEventRowWithManyReactions_Night_0_en",20236,], +["features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_7_en","features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Night_7_en",20238,], +["features.messages.impl.timeline.components_TimelineItemEventRowUtd_Day_0_en","features.messages.impl.timeline.components_TimelineItemEventRowUtd_Night_0_en",20238,], +["features.messages.impl.timeline.components_TimelineItemEventRowWithManyReactions_Day_0_en","features.messages.impl.timeline.components_TimelineItemEventRowWithManyReactions_Night_0_en",20238,], ["features.messages.impl.timeline.components_TimelineItemEventRowWithRR_Day_0_en","features.messages.impl.timeline.components_TimelineItemEventRowWithRR_Night_0_en",0,], ["features.messages.impl.timeline.components_TimelineItemEventRowWithRR_Day_1_en","features.messages.impl.timeline.components_TimelineItemEventRowWithRR_Night_1_en",0,], ["features.messages.impl.timeline.components_TimelineItemEventRowWithRR_Day_2_en","features.messages.impl.timeline.components_TimelineItemEventRowWithRR_Night_2_en",0,], -["features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Day_0_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Night_0_en",20236,], -["features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Day_1_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Night_1_en",20236,], +["features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Day_0_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Night_0_en",20238,], +["features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Day_1_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Night_1_en",20238,], ["features.messages.impl.timeline.components_TimelineItemEventRowWithReplyOther_Day_0_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReplyOther_Night_0_en",0,], ["features.messages.impl.timeline.components_TimelineItemEventRowWithReplyOther_Day_1_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReplyOther_Night_1_en",0,], ["features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_0_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_0_en",0,], @@ -1324,40 +1324,40 @@ export const screenshots = [ ["features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_1_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_1_en",0,], ["features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_2_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_2_en",0,], ["features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_3_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_3_en",0,], -["features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_4_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_4_en",20236,], +["features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_4_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_4_en",20238,], ["features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_5_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_5_en",0,], ["features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_6_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_6_en",0,], ["features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_7_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_7_en",0,], -["features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_8_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_8_en",20236,], +["features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_8_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_8_en",20238,], ["features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_9_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_9_en",0,], ["features.messages.impl.timeline.components_TimelineItemEventRow_Day_0_en","features.messages.impl.timeline.components_TimelineItemEventRow_Night_0_en",0,], -["features.messages.impl.timeline.components_TimelineItemEventTimestampBelow_en","",20236,], +["features.messages.impl.timeline.components_TimelineItemEventTimestampBelow_en","",20238,], ["features.messages.impl.timeline.components.event_TimelineItemFileView_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemFileView_Night_0_en",0,], ["features.messages.impl.timeline.components.event_TimelineItemFileView_Day_1_en","features.messages.impl.timeline.components.event_TimelineItemFileView_Night_1_en",0,], ["features.messages.impl.timeline.components.event_TimelineItemFileView_Day_2_en","features.messages.impl.timeline.components.event_TimelineItemFileView_Night_2_en",0,], ["features.messages.impl.timeline.components.event_TimelineItemFileView_Day_3_en","features.messages.impl.timeline.components.event_TimelineItemFileView_Night_3_en",0,], ["features.messages.impl.timeline.components.event_TimelineItemFileView_Day_4_en","features.messages.impl.timeline.components.event_TimelineItemFileView_Night_4_en",0,], -["features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentCollapse_Day_0_en","features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentCollapse_Night_0_en",20236,], -["features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentExpanded_Day_0_en","features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentExpanded_Night_0_en",20236,], -["features.messages.impl.timeline.components.event_TimelineItemImageViewHideMediaContent_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemImageViewHideMediaContent_Night_0_en",20236,], +["features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentCollapse_Day_0_en","features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentCollapse_Night_0_en",20238,], +["features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentExpanded_Day_0_en","features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentExpanded_Night_0_en",20238,], +["features.messages.impl.timeline.components.event_TimelineItemImageViewHideMediaContent_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemImageViewHideMediaContent_Night_0_en",20238,], ["features.messages.impl.timeline.components.event_TimelineItemImageView_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemImageView_Night_0_en",0,], ["features.messages.impl.timeline.components.event_TimelineItemImageView_Day_1_en","features.messages.impl.timeline.components.event_TimelineItemImageView_Night_1_en",0,], ["features.messages.impl.timeline.components.event_TimelineItemImageView_Day_2_en","features.messages.impl.timeline.components.event_TimelineItemImageView_Night_2_en",0,], ["features.messages.impl.timeline.components.event_TimelineItemImageView_Day_3_en","features.messages.impl.timeline.components.event_TimelineItemImageView_Night_3_en",0,], ["features.messages.impl.timeline.components.event_TimelineItemInformativeView_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemInformativeView_Night_0_en",0,], -["features.messages.impl.timeline.components.event_TimelineItemLegacyCallInviteView_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemLegacyCallInviteView_Night_0_en",20236,], +["features.messages.impl.timeline.components.event_TimelineItemLegacyCallInviteView_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemLegacyCallInviteView_Night_0_en",20238,], ["features.messages.impl.timeline.components.event_TimelineItemLocationView_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemLocationView_Night_0_en",0,], ["features.messages.impl.timeline.components.event_TimelineItemLocationView_Day_1_en","features.messages.impl.timeline.components.event_TimelineItemLocationView_Night_1_en",0,], -["features.messages.impl.timeline.components.event_TimelineItemPollView_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemPollView_Night_0_en",20236,], -["features.messages.impl.timeline.components.event_TimelineItemPollView_Day_1_en","features.messages.impl.timeline.components.event_TimelineItemPollView_Night_1_en",20236,], -["features.messages.impl.timeline.components.event_TimelineItemPollView_Day_2_en","features.messages.impl.timeline.components.event_TimelineItemPollView_Night_2_en",20236,], -["features.messages.impl.timeline.components.event_TimelineItemPollView_Day_3_en","features.messages.impl.timeline.components.event_TimelineItemPollView_Night_3_en",20236,], -["features.messages.impl.timeline.components_TimelineItemReactionsLayout_Day_0_en","features.messages.impl.timeline.components_TimelineItemReactionsLayout_Night_0_en",20236,], +["features.messages.impl.timeline.components.event_TimelineItemPollView_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemPollView_Night_0_en",20238,], +["features.messages.impl.timeline.components.event_TimelineItemPollView_Day_1_en","features.messages.impl.timeline.components.event_TimelineItemPollView_Night_1_en",20238,], +["features.messages.impl.timeline.components.event_TimelineItemPollView_Day_2_en","features.messages.impl.timeline.components.event_TimelineItemPollView_Night_2_en",20238,], +["features.messages.impl.timeline.components.event_TimelineItemPollView_Day_3_en","features.messages.impl.timeline.components.event_TimelineItemPollView_Night_3_en",20238,], +["features.messages.impl.timeline.components_TimelineItemReactionsLayout_Day_0_en","features.messages.impl.timeline.components_TimelineItemReactionsLayout_Night_0_en",20238,], ["features.messages.impl.timeline.components_TimelineItemReactionsViewFew_Day_0_en","features.messages.impl.timeline.components_TimelineItemReactionsViewFew_Night_0_en",0,], -["features.messages.impl.timeline.components_TimelineItemReactionsViewIncoming_Day_0_en","features.messages.impl.timeline.components_TimelineItemReactionsViewIncoming_Night_0_en",20236,], -["features.messages.impl.timeline.components_TimelineItemReactionsViewOutgoing_Day_0_en","features.messages.impl.timeline.components_TimelineItemReactionsViewOutgoing_Night_0_en",20236,], +["features.messages.impl.timeline.components_TimelineItemReactionsViewIncoming_Day_0_en","features.messages.impl.timeline.components_TimelineItemReactionsViewIncoming_Night_0_en",20238,], +["features.messages.impl.timeline.components_TimelineItemReactionsViewOutgoing_Day_0_en","features.messages.impl.timeline.components_TimelineItemReactionsViewOutgoing_Night_0_en",20238,], ["features.messages.impl.timeline.components_TimelineItemReactionsView_Day_0_en","features.messages.impl.timeline.components_TimelineItemReactionsView_Night_0_en",0,], -["features.messages.impl.timeline.components.virtual_TimelineItemReadMarkerView_Day_0_en","features.messages.impl.timeline.components.virtual_TimelineItemReadMarkerView_Night_0_en",20236,], +["features.messages.impl.timeline.components.virtual_TimelineItemReadMarkerView_Day_0_en","features.messages.impl.timeline.components.virtual_TimelineItemReadMarkerView_Night_0_en",20238,], ["features.messages.impl.timeline.components.receipt_TimelineItemReadReceiptView_Day_0_en","features.messages.impl.timeline.components.receipt_TimelineItemReadReceiptView_Night_0_en",0,], ["features.messages.impl.timeline.components.receipt_TimelineItemReadReceiptView_Day_1_en","features.messages.impl.timeline.components.receipt_TimelineItemReadReceiptView_Night_1_en",0,], ["features.messages.impl.timeline.components.receipt_TimelineItemReadReceiptView_Day_2_en","features.messages.impl.timeline.components.receipt_TimelineItemReadReceiptView_Night_2_en",0,], @@ -1366,8 +1366,8 @@ export const screenshots = [ ["features.messages.impl.timeline.components.receipt_TimelineItemReadReceiptView_Day_5_en","features.messages.impl.timeline.components.receipt_TimelineItemReadReceiptView_Night_5_en",0,], ["features.messages.impl.timeline.components.receipt_TimelineItemReadReceiptView_Day_6_en","features.messages.impl.timeline.components.receipt_TimelineItemReadReceiptView_Night_6_en",0,], ["features.messages.impl.timeline.components.receipt_TimelineItemReadReceiptView_Day_7_en","features.messages.impl.timeline.components.receipt_TimelineItemReadReceiptView_Night_7_en",0,], -["features.messages.impl.timeline.components.event_TimelineItemRedactedView_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemRedactedView_Night_0_en",20236,], -["features.messages.impl.timeline.components.virtual_TimelineItemRoomBeginningView_Day_0_en","features.messages.impl.timeline.components.virtual_TimelineItemRoomBeginningView_Night_0_en",20236,], +["features.messages.impl.timeline.components.event_TimelineItemRedactedView_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemRedactedView_Night_0_en",20238,], +["features.messages.impl.timeline.components.virtual_TimelineItemRoomBeginningView_Day_0_en","features.messages.impl.timeline.components.virtual_TimelineItemRoomBeginningView_Night_0_en",20238,], ["features.messages.impl.timeline.components_TimelineItemStateEventRow_Day_0_en","features.messages.impl.timeline.components_TimelineItemStateEventRow_Night_0_en",0,], ["features.messages.impl.timeline.components.event_TimelineItemStateView_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemStateView_Night_0_en",0,], ["features.messages.impl.timeline.components.event_TimelineItemStickerView_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemStickerView_Night_0_en",0,], @@ -1382,8 +1382,8 @@ export const screenshots = [ ["features.messages.impl.timeline.components.event_TimelineItemTextView_Day_3_en","features.messages.impl.timeline.components.event_TimelineItemTextView_Night_3_en",0,], ["features.messages.impl.timeline.components.event_TimelineItemTextView_Day_4_en","features.messages.impl.timeline.components.event_TimelineItemTextView_Night_4_en",0,], ["features.messages.impl.timeline.components.event_TimelineItemTextView_Day_5_en","features.messages.impl.timeline.components.event_TimelineItemTextView_Night_5_en",0,], -["features.messages.impl.timeline.components.event_TimelineItemUnknownView_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemUnknownView_Night_0_en",20236,], -["features.messages.impl.timeline.components.event_TimelineItemVideoViewHideMediaContent_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemVideoViewHideMediaContent_Night_0_en",20236,], +["features.messages.impl.timeline.components.event_TimelineItemUnknownView_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemUnknownView_Night_0_en",20238,], +["features.messages.impl.timeline.components.event_TimelineItemVideoViewHideMediaContent_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemVideoViewHideMediaContent_Night_0_en",20238,], ["features.messages.impl.timeline.components.event_TimelineItemVideoView_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemVideoView_Night_0_en",0,], ["features.messages.impl.timeline.components.event_TimelineItemVideoView_Day_1_en","features.messages.impl.timeline.components.event_TimelineItemVideoView_Night_1_en",0,], ["features.messages.impl.timeline.components.event_TimelineItemVideoView_Day_2_en","features.messages.impl.timeline.components.event_TimelineItemVideoView_Night_2_en",0,], @@ -1406,73 +1406,73 @@ export const screenshots = [ ["features.messages.impl.timeline.components.event_TimelineItemVoiceView_Day_9_en","features.messages.impl.timeline.components.event_TimelineItemVoiceView_Night_9_en",0,], ["features.messages.impl.timeline.components.virtual_TimelineLoadingMoreIndicator_Day_0_en","features.messages.impl.timeline.components.virtual_TimelineLoadingMoreIndicator_Night_0_en",0,], ["features.messages.impl.timeline.components.event_TimelineVideoWithCaptionRow_Day_0_en","features.messages.impl.timeline.components.event_TimelineVideoWithCaptionRow_Night_0_en",0,], -["features.messages.impl.timeline_TimelineViewMessageShield_Day_0_en","features.messages.impl.timeline_TimelineViewMessageShield_Night_0_en",20236,], -["features.messages.impl.timeline_TimelineView_Day_0_en","features.messages.impl.timeline_TimelineView_Night_0_en",20236,], +["features.messages.impl.timeline_TimelineViewMessageShield_Day_0_en","features.messages.impl.timeline_TimelineViewMessageShield_Night_0_en",20238,], +["features.messages.impl.timeline_TimelineView_Day_0_en","features.messages.impl.timeline_TimelineView_Night_0_en",20238,], ["features.messages.impl.timeline_TimelineView_Day_10_en","features.messages.impl.timeline_TimelineView_Night_10_en",0,], -["features.messages.impl.timeline_TimelineView_Day_11_en","features.messages.impl.timeline_TimelineView_Night_11_en",20236,], -["features.messages.impl.timeline_TimelineView_Day_12_en","features.messages.impl.timeline_TimelineView_Night_12_en",20236,], -["features.messages.impl.timeline_TimelineView_Day_13_en","features.messages.impl.timeline_TimelineView_Night_13_en",20236,], -["features.messages.impl.timeline_TimelineView_Day_14_en","features.messages.impl.timeline_TimelineView_Night_14_en",20236,], -["features.messages.impl.timeline_TimelineView_Day_15_en","features.messages.impl.timeline_TimelineView_Night_15_en",20236,], -["features.messages.impl.timeline_TimelineView_Day_16_en","features.messages.impl.timeline_TimelineView_Night_16_en",20236,], -["features.messages.impl.timeline_TimelineView_Day_17_en","features.messages.impl.timeline_TimelineView_Night_17_en",20236,], -["features.messages.impl.timeline_TimelineView_Day_1_en","features.messages.impl.timeline_TimelineView_Night_1_en",20236,], +["features.messages.impl.timeline_TimelineView_Day_11_en","features.messages.impl.timeline_TimelineView_Night_11_en",20238,], +["features.messages.impl.timeline_TimelineView_Day_12_en","features.messages.impl.timeline_TimelineView_Night_12_en",20238,], +["features.messages.impl.timeline_TimelineView_Day_13_en","features.messages.impl.timeline_TimelineView_Night_13_en",20238,], +["features.messages.impl.timeline_TimelineView_Day_14_en","features.messages.impl.timeline_TimelineView_Night_14_en",20238,], +["features.messages.impl.timeline_TimelineView_Day_15_en","features.messages.impl.timeline_TimelineView_Night_15_en",20238,], +["features.messages.impl.timeline_TimelineView_Day_16_en","features.messages.impl.timeline_TimelineView_Night_16_en",20238,], +["features.messages.impl.timeline_TimelineView_Day_17_en","features.messages.impl.timeline_TimelineView_Night_17_en",20238,], +["features.messages.impl.timeline_TimelineView_Day_1_en","features.messages.impl.timeline_TimelineView_Night_1_en",20238,], ["features.messages.impl.timeline_TimelineView_Day_2_en","features.messages.impl.timeline_TimelineView_Night_2_en",0,], ["features.messages.impl.timeline_TimelineView_Day_3_en","features.messages.impl.timeline_TimelineView_Night_3_en",0,], -["features.messages.impl.timeline_TimelineView_Day_4_en","features.messages.impl.timeline_TimelineView_Night_4_en",20236,], +["features.messages.impl.timeline_TimelineView_Day_4_en","features.messages.impl.timeline_TimelineView_Night_4_en",20238,], ["features.messages.impl.timeline_TimelineView_Day_5_en","features.messages.impl.timeline_TimelineView_Night_5_en",0,], -["features.messages.impl.timeline_TimelineView_Day_6_en","features.messages.impl.timeline_TimelineView_Night_6_en",20236,], +["features.messages.impl.timeline_TimelineView_Day_6_en","features.messages.impl.timeline_TimelineView_Night_6_en",20238,], ["features.messages.impl.timeline_TimelineView_Day_7_en","features.messages.impl.timeline_TimelineView_Night_7_en",0,], -["features.messages.impl.timeline_TimelineView_Day_8_en","features.messages.impl.timeline_TimelineView_Night_8_en",20236,], +["features.messages.impl.timeline_TimelineView_Day_8_en","features.messages.impl.timeline_TimelineView_Night_8_en",20238,], ["features.messages.impl.timeline_TimelineView_Day_9_en","features.messages.impl.timeline_TimelineView_Night_9_en",0,], ["libraries.designsystem.theme.components_TopAppBar_App_Bars_en","",0,], -["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_0_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_0_en",20236,], -["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_1_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_1_en",20236,], -["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_2_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_2_en",20236,], -["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_3_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_3_en",20236,], -["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_4_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_4_en",20236,], -["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_5_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_5_en",20236,], -["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_6_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_6_en",20236,], -["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_7_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_7_en",20236,], +["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_0_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_0_en",20238,], +["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_1_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_1_en",20238,], +["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_2_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_2_en",20238,], +["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_3_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_3_en",20238,], +["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_4_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_4_en",20238,], +["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_5_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_5_en",20238,], +["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_6_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_6_en",20238,], +["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_7_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_7_en",20238,], ["features.messages.impl.typing_TypingNotificationView_Day_0_en","features.messages.impl.typing_TypingNotificationView_Night_0_en",0,], -["features.messages.impl.typing_TypingNotificationView_Day_1_en","features.messages.impl.typing_TypingNotificationView_Night_1_en",20236,], -["features.messages.impl.typing_TypingNotificationView_Day_2_en","features.messages.impl.typing_TypingNotificationView_Night_2_en",20236,], -["features.messages.impl.typing_TypingNotificationView_Day_3_en","features.messages.impl.typing_TypingNotificationView_Night_3_en",20236,], -["features.messages.impl.typing_TypingNotificationView_Day_4_en","features.messages.impl.typing_TypingNotificationView_Night_4_en",20236,], -["features.messages.impl.typing_TypingNotificationView_Day_5_en","features.messages.impl.typing_TypingNotificationView_Night_5_en",20236,], -["features.messages.impl.typing_TypingNotificationView_Day_6_en","features.messages.impl.typing_TypingNotificationView_Night_6_en",20236,], +["features.messages.impl.typing_TypingNotificationView_Day_1_en","features.messages.impl.typing_TypingNotificationView_Night_1_en",20238,], +["features.messages.impl.typing_TypingNotificationView_Day_2_en","features.messages.impl.typing_TypingNotificationView_Night_2_en",20238,], +["features.messages.impl.typing_TypingNotificationView_Day_3_en","features.messages.impl.typing_TypingNotificationView_Night_3_en",20238,], +["features.messages.impl.typing_TypingNotificationView_Day_4_en","features.messages.impl.typing_TypingNotificationView_Night_4_en",20238,], +["features.messages.impl.typing_TypingNotificationView_Day_5_en","features.messages.impl.typing_TypingNotificationView_Night_5_en",20238,], +["features.messages.impl.typing_TypingNotificationView_Day_6_en","features.messages.impl.typing_TypingNotificationView_Night_6_en",20238,], ["features.messages.impl.typing_TypingNotificationView_Day_7_en","features.messages.impl.typing_TypingNotificationView_Night_7_en",0,], ["features.messages.impl.typing_TypingNotificationView_Day_8_en","features.messages.impl.typing_TypingNotificationView_Night_8_en",0,], ["libraries.designsystem.atomic.atoms_UnreadIndicatorAtom_Day_0_en","libraries.designsystem.atomic.atoms_UnreadIndicatorAtom_Night_0_en",0,], -["libraries.matrix.ui.components_UnresolvedUserRow_en","",20236,], +["libraries.matrix.ui.components_UnresolvedUserRow_en","",20238,], ["libraries.matrix.ui.components_UnsavedAvatar_Day_0_en","libraries.matrix.ui.components_UnsavedAvatar_Night_0_en",0,], ["libraries.designsystem.components.avatar_UserAvatarColors_Day_0_en","libraries.designsystem.components.avatar_UserAvatarColors_Night_0_en",0,], -["features.roomdetails.impl.notificationsettings_UserDefinedRoomNotificationSettingsView_Day_0_en","features.roomdetails.impl.notificationsettings_UserDefinedRoomNotificationSettingsView_Night_0_en",20236,], -["features.createroom.impl.components_UserListView_Day_0_en","features.createroom.impl.components_UserListView_Night_0_en",20236,], -["features.createroom.impl.components_UserListView_Day_1_en","features.createroom.impl.components_UserListView_Night_1_en",20236,], -["features.createroom.impl.components_UserListView_Day_2_en","features.createroom.impl.components_UserListView_Night_2_en",20236,], +["features.roomdetails.impl.notificationsettings_UserDefinedRoomNotificationSettingsView_Day_0_en","features.roomdetails.impl.notificationsettings_UserDefinedRoomNotificationSettingsView_Night_0_en",20238,], +["features.createroom.impl.components_UserListView_Day_0_en","features.createroom.impl.components_UserListView_Night_0_en",20238,], +["features.createroom.impl.components_UserListView_Day_1_en","features.createroom.impl.components_UserListView_Night_1_en",20238,], +["features.createroom.impl.components_UserListView_Day_2_en","features.createroom.impl.components_UserListView_Night_2_en",20238,], ["features.createroom.impl.components_UserListView_Day_3_en","features.createroom.impl.components_UserListView_Night_3_en",0,], ["features.createroom.impl.components_UserListView_Day_4_en","features.createroom.impl.components_UserListView_Night_4_en",0,], ["features.createroom.impl.components_UserListView_Day_5_en","features.createroom.impl.components_UserListView_Night_5_en",0,], ["features.createroom.impl.components_UserListView_Day_6_en","features.createroom.impl.components_UserListView_Night_6_en",0,], -["features.createroom.impl.components_UserListView_Day_7_en","features.createroom.impl.components_UserListView_Night_7_en",20236,], +["features.createroom.impl.components_UserListView_Day_7_en","features.createroom.impl.components_UserListView_Night_7_en",20238,], ["features.createroom.impl.components_UserListView_Day_8_en","features.createroom.impl.components_UserListView_Night_8_en",0,], -["features.createroom.impl.components_UserListView_Day_9_en","features.createroom.impl.components_UserListView_Night_9_en",20236,], +["features.createroom.impl.components_UserListView_Day_9_en","features.createroom.impl.components_UserListView_Night_9_en",20238,], ["features.preferences.impl.user_UserPreferences_Day_0_en","features.preferences.impl.user_UserPreferences_Night_0_en",0,], ["features.preferences.impl.user_UserPreferences_Day_1_en","features.preferences.impl.user_UserPreferences_Night_1_en",0,], ["features.preferences.impl.user_UserPreferences_Day_2_en","features.preferences.impl.user_UserPreferences_Night_2_en",0,], -["features.userprofile.shared_UserProfileHeaderSectionWithVerificationViolation_Day_0_en","features.userprofile.shared_UserProfileHeaderSectionWithVerificationViolation_Night_0_en",20236,], -["features.userprofile.shared_UserProfileHeaderSection_Day_0_en","features.userprofile.shared_UserProfileHeaderSection_Night_0_en",20236,], -["features.userprofile.shared_UserProfileView_Day_0_en","features.userprofile.shared_UserProfileView_Night_0_en",20236,], -["features.userprofile.shared_UserProfileView_Day_1_en","features.userprofile.shared_UserProfileView_Night_1_en",20236,], -["features.userprofile.shared_UserProfileView_Day_2_en","features.userprofile.shared_UserProfileView_Night_2_en",20236,], -["features.userprofile.shared_UserProfileView_Day_3_en","features.userprofile.shared_UserProfileView_Night_3_en",20236,], -["features.userprofile.shared_UserProfileView_Day_4_en","features.userprofile.shared_UserProfileView_Night_4_en",20236,], -["features.userprofile.shared_UserProfileView_Day_5_en","features.userprofile.shared_UserProfileView_Night_5_en",20236,], -["features.userprofile.shared_UserProfileView_Day_6_en","features.userprofile.shared_UserProfileView_Night_6_en",20236,], -["features.userprofile.shared_UserProfileView_Day_7_en","features.userprofile.shared_UserProfileView_Night_7_en",20236,], -["features.userprofile.shared_UserProfileView_Day_8_en","features.userprofile.shared_UserProfileView_Night_8_en",20236,], -["features.userprofile.shared_UserProfileView_Day_9_en","features.userprofile.shared_UserProfileView_Night_9_en",20236,], +["features.userprofile.shared_UserProfileHeaderSectionWithVerificationViolation_Day_0_en","features.userprofile.shared_UserProfileHeaderSectionWithVerificationViolation_Night_0_en",20238,], +["features.userprofile.shared_UserProfileHeaderSection_Day_0_en","features.userprofile.shared_UserProfileHeaderSection_Night_0_en",20238,], +["features.userprofile.shared_UserProfileView_Day_0_en","features.userprofile.shared_UserProfileView_Night_0_en",20238,], +["features.userprofile.shared_UserProfileView_Day_1_en","features.userprofile.shared_UserProfileView_Night_1_en",20238,], +["features.userprofile.shared_UserProfileView_Day_2_en","features.userprofile.shared_UserProfileView_Night_2_en",20238,], +["features.userprofile.shared_UserProfileView_Day_3_en","features.userprofile.shared_UserProfileView_Night_3_en",20238,], +["features.userprofile.shared_UserProfileView_Day_4_en","features.userprofile.shared_UserProfileView_Night_4_en",20238,], +["features.userprofile.shared_UserProfileView_Day_5_en","features.userprofile.shared_UserProfileView_Night_5_en",20238,], +["features.userprofile.shared_UserProfileView_Day_6_en","features.userprofile.shared_UserProfileView_Night_6_en",20238,], +["features.userprofile.shared_UserProfileView_Day_7_en","features.userprofile.shared_UserProfileView_Night_7_en",20238,], +["features.userprofile.shared_UserProfileView_Day_8_en","features.userprofile.shared_UserProfileView_Night_8_en",20238,], +["features.userprofile.shared_UserProfileView_Day_9_en","features.userprofile.shared_UserProfileView_Night_9_en",20238,], ["features.verifysession.impl.ui_VerificationUserProfileContent_Day_0_en","features.verifysession.impl.ui_VerificationUserProfileContent_Night_0_en",0,], ["libraries.designsystem.ruler_VerticalRuler_Day_0_en","libraries.designsystem.ruler_VerticalRuler_Night_0_en",0,], ["libraries.mediaviewer.impl.gallery.ui_VideoItemView_Day_0_en","libraries.mediaviewer.impl.gallery.ui_VideoItemView_Night_0_en",0,], @@ -1480,7 +1480,7 @@ export const screenshots = [ ["features.viewfolder.impl.file_ViewFileView_Day_0_en","features.viewfolder.impl.file_ViewFileView_Night_0_en",0,], ["features.viewfolder.impl.file_ViewFileView_Day_1_en","features.viewfolder.impl.file_ViewFileView_Night_1_en",0,], ["features.viewfolder.impl.file_ViewFileView_Day_2_en","features.viewfolder.impl.file_ViewFileView_Night_2_en",0,], -["features.viewfolder.impl.file_ViewFileView_Day_3_en","features.viewfolder.impl.file_ViewFileView_Night_3_en",20236,], +["features.viewfolder.impl.file_ViewFileView_Day_3_en","features.viewfolder.impl.file_ViewFileView_Night_3_en",20238,], ["features.viewfolder.impl.file_ViewFileView_Day_4_en","features.viewfolder.impl.file_ViewFileView_Night_4_en",0,], ["features.viewfolder.impl.file_ViewFileView_Day_5_en","features.viewfolder.impl.file_ViewFileView_Night_5_en",0,], ["features.viewfolder.impl.folder_ViewFolderView_Day_0_en","features.viewfolder.impl.folder_ViewFolderView_Night_0_en",0,], @@ -1499,6 +1499,6 @@ export const screenshots = [ ["libraries.textcomposer.components_VoiceMessageRecording_Day_0_en","libraries.textcomposer.components_VoiceMessageRecording_Night_0_en",0,], ["libraries.textcomposer.components_VoiceMessage_Day_0_en","libraries.textcomposer.components_VoiceMessage_Night_0_en",0,], ["libraries.designsystem.components.media_WaveformPlaybackView_Day_0_en","libraries.designsystem.components.media_WaveformPlaybackView_Night_0_en",0,], -["features.ftue.impl.welcome_WelcomeView_Day_0_en","features.ftue.impl.welcome_WelcomeView_Night_0_en",20236,], +["features.ftue.impl.welcome_WelcomeView_Day_0_en","features.ftue.impl.welcome_WelcomeView_Night_0_en",20238,], ["libraries.designsystem.ruler_WithRulers_Day_0_en","libraries.designsystem.ruler_WithRulers_Night_0_en",0,], ]; From f2abc1799dcee7dc5dc5fb048bc0b638c328c0a5 Mon Sep 17 00:00:00 2001 From: Jorge Martin Espinosa Date: Mon, 2 Jun 2025 12:05:55 +0200 Subject: [PATCH 20/25] Use Localazy's `langAliases` for Indonesian (#4801) --- tools/localazy/downloadStrings.sh | 8 -------- tools/localazy/generateLocalazyConfig.py | 10 ++++++++-- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/tools/localazy/downloadStrings.sh b/tools/localazy/downloadStrings.sh index ffd7a2eaef..9d855115c3 100755 --- a/tools/localazy/downloadStrings.sh +++ b/tools/localazy/downloadStrings.sh @@ -38,14 +38,6 @@ if [[ $allFiles == 1 ]]; then find . -name 'translations.xml' -exec ./tools/localazy/formatXmlResourcesFile.py {} \; fi -set +e -echo "Moving files from values-id to values-in..." -find . -type d -name 'values-id' -execdir mv {}/translations.xml {}/../values-in/translations.xml \; 2> /dev/null - -echo "Deleting all the folders values-id..." -find . -type d -name 'values-id' -exec rm -rf {} \; 2> /dev/null -set -e - echo "Checking forbidden terms..." find . -name 'localazy.xml' -exec ./tools/localazy/checkForbiddenTerms.py {} \; if [[ $allFiles == 1 ]]; then diff --git a/tools/localazy/generateLocalazyConfig.py b/tools/localazy/generateLocalazyConfig.py index bddaf6bc45..cab23b17ee 100755 --- a/tools/localazy/generateLocalazyConfig.py +++ b/tools/localazy/generateLocalazyConfig.py @@ -65,7 +65,10 @@ for entry in config["modules"]: "excludeKeys": list(map(lambda i: "REGEX:" + i, excludeRegex)), "conditions": [ "!equals: ${langAndroidResNoScript}, en | equals: ${file}, content.json" - ] + ], + "langAliases": { + "id": "in" + } } allActions.append(actionTranslation) allRegexToExcludeFromMainModule.extend(entry["includeRegex"]) @@ -88,7 +91,10 @@ if allFiles: "excludeKeys": list(map(lambda i: "REGEX:" + i, allRegexToExcludeFromMainModule + regexToAlwaysExclude)), "conditions": [ "!equals: ${langAndroidResNoScript}, en | equals: ${file}, content.json" - ] + ], + "langAliases": { + "id": "in" + } } allActions.append(mainActionTranslation) From 708ee3fd1b090a780d08cf5e04e3a08e05305a2a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 2 Jun 2025 12:34:02 +0200 Subject: [PATCH 21/25] fix(deps): update android.gradle.plugin to v8.10.1 (#4795) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 3048a0e6cd..426fbca9a5 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -3,7 +3,7 @@ [versions] # Project -android_gradle_plugin = "8.10.0" +android_gradle_plugin = "8.10.1" kotlin = "2.1.21" kotlinpoet = "2.2.0" ksp = "2.1.21-2.0.1" From 2e2c40b999591c08460ec73826b8fc0c1cf8adbf Mon Sep 17 00:00:00 2001 From: Lucas <55422065+lucasmz-dev@users.noreply.github.com> Date: Mon, 2 Jun 2025 09:17:43 -0300 Subject: [PATCH 22/25] fix: exclude more domains from being backed up by the system (#4773) tries* to fix #3465 --- app/src/main/res/xml/backup_rules.xml | 4 ++++ app/src/main/res/xml/data_extraction_rules.xml | 15 ++++++++++++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/app/src/main/res/xml/backup_rules.xml b/app/src/main/res/xml/backup_rules.xml index d73e1f0c3d..3602e38d2d 100644 --- a/app/src/main/res/xml/backup_rules.xml +++ b/app/src/main/res/xml/backup_rules.xml @@ -9,4 +9,8 @@ --> + + + + diff --git a/app/src/main/res/xml/data_extraction_rules.xml b/app/src/main/res/xml/data_extraction_rules.xml index ae76014f3b..d11b4203fe 100644 --- a/app/src/main/res/xml/data_extraction_rules.xml +++ b/app/src/main/res/xml/data_extraction_rules.xml @@ -9,9 +9,18 @@ --> - + + + + + + - + + + + + - + \ No newline at end of file From 9dbaa2ed400e802e25627eccb167cbd741efe16b Mon Sep 17 00:00:00 2001 From: Jorge Martin Espinosa Date: Mon, 2 Jun 2025 14:28:46 +0200 Subject: [PATCH 23/25] Make sure HeaderFooterPage can contents be scrolled (#4704) Co-authored-by: ElementBot --- .../enter/SecureBackupEnterRecoveryKeyView.kt | 36 ++++++++++++++++++- .../designsystem/atomic/pages/FlowStepPage.kt | 3 ++ .../atomic/pages/HeaderFooterPage.kt | 10 ++++-- ...ytics.impl_AnalyticsOptInView_Day_0_en.png | 4 +-- ...ytics.impl_AnalyticsOptInView_Day_1_en.png | 4 +-- ...ics.impl_AnalyticsOptInView_Night_0_en.png | 4 +-- ...ics.impl_AnalyticsOptInView_Night_1_en.png | 4 +-- ...ations_NotificationsOptInView_Day_0_en.png | 4 +-- ...ions_NotificationsOptInView_Night_0_en.png | 4 +-- ...s.joinroom.impl_JoinRoomView_Day_13_en.png | 4 +-- ...joinroom.impl_JoinRoomView_Night_13_en.png | 4 +-- ...ns.qrcode.scan_QrCodeScanView_Day_0_en.png | 4 +-- ...ns.qrcode.scan_QrCodeScanView_Day_1_en.png | 4 +-- ...ns.qrcode.scan_QrCodeScanView_Day_2_en.png | 4 +-- ...ns.qrcode.scan_QrCodeScanView_Day_3_en.png | 4 +-- ....qrcode.scan_QrCodeScanView_Night_0_en.png | 4 +-- ....qrcode.scan_QrCodeScanView_Night_1_en.png | 4 +-- ....qrcode.scan_QrCodeScanView_Night_2_en.png | 4 +-- ....qrcode.scan_QrCodeScanView_Night_3_en.png | 4 +-- ...et.root_ResetIdentityRootView_Day_0_en.png | 4 +-- ...et.root_ResetIdentityRootView_Day_1_en.png | 4 +-- ....root_ResetIdentityRootView_Night_0_en.png | 4 +-- ....root_ResetIdentityRootView_Night_1_en.png | 4 +-- ...p_SecureBackupSetupViewChange_Day_2_en.png | 4 +-- ...p_SecureBackupSetupViewChange_Day_3_en.png | 4 +-- ...p_SecureBackupSetupViewChange_Day_4_en.png | 4 +-- ...SecureBackupSetupViewChange_Night_2_en.png | 4 +-- ...SecureBackupSetupViewChange_Night_3_en.png | 4 +-- ...SecureBackupSetupViewChange_Night_4_en.png | 4 +-- ...l.setup_SecureBackupSetupView_Day_2_en.png | 4 +-- ...l.setup_SecureBackupSetupView_Day_3_en.png | 4 +-- ...l.setup_SecureBackupSetupView_Day_4_en.png | 4 +-- ...setup_SecureBackupSetupView_Night_2_en.png | 4 +-- ...setup_SecureBackupSetupView_Night_3_en.png | 4 +-- ...setup_SecureBackupSetupView_Night_4_en.png | 4 +-- ....signedout.impl_SignedOutView_Day_0_en.png | 4 +-- ...ignedout.impl_SignedOutView_Night_0_en.png | 4 +-- ...ming_IncomingVerificationView_Day_5_en.png | 4 +-- ...ming_IncomingVerificationView_Day_6_en.png | 4 +-- ...ming_IncomingVerificationView_Day_7_en.png | 4 +-- ...ming_IncomingVerificationView_Day_8_en.png | 4 +-- ...ming_IncomingVerificationView_Day_9_en.png | 4 +-- ...ng_IncomingVerificationView_Night_5_en.png | 4 +-- ...ng_IncomingVerificationView_Night_6_en.png | 4 +-- ...ng_IncomingVerificationView_Night_7_en.png | 4 +-- ...ng_IncomingVerificationView_Night_8_en.png | 4 +-- ...ng_IncomingVerificationView_Night_9_en.png | 4 +-- ...oing_OutgoingVerificationView_Day_4_en.png | 4 +-- ...oing_OutgoingVerificationView_Day_5_en.png | 4 +-- ...oing_OutgoingVerificationView_Day_6_en.png | 4 +-- ...oing_OutgoingVerificationView_Day_9_en.png | 4 +-- ...ng_OutgoingVerificationView_Night_4_en.png | 4 +-- ...ng_OutgoingVerificationView_Night_5_en.png | 4 +-- ...ng_OutgoingVerificationView_Night_6_en.png | 4 +-- ...ng_OutgoingVerificationView_Night_9_en.png | 4 +-- ...tem.atomic.pages_FlowStepPage_Day_0_en.png | 4 +-- ...m.atomic.pages_FlowStepPage_Night_0_en.png | 4 +-- 57 files changed, 153 insertions(+), 112 deletions(-) diff --git a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/enter/SecureBackupEnterRecoveryKeyView.kt b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/enter/SecureBackupEnterRecoveryKeyView.kt index b533763735..ed5a381754 100644 --- a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/enter/SecureBackupEnterRecoveryKeyView.kt +++ b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/enter/SecureBackupEnterRecoveryKeyView.kt @@ -7,11 +7,24 @@ package io.element.android.features.securebackup.impl.enter +import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.layout.ColumnScope +import androidx.compose.foundation.layout.ExperimentalLayoutApi +import androidx.compose.foundation.layout.WindowInsets import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.isImeVisible import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.relocation.BringIntoViewRequester +import androidx.compose.foundation.relocation.bringIntoViewRequester import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberCoroutineScope +import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier +import androidx.compose.ui.focus.onFocusChanged import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp @@ -25,6 +38,9 @@ import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.theme.components.Button import io.element.android.libraries.ui.strings.CommonStrings +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch +import kotlin.time.Duration.Companion.milliseconds @Composable fun SecureBackupEnterRecoveryKeyView( @@ -55,12 +71,30 @@ fun SecureBackupEnterRecoveryKeyView( } } +@OptIn(ExperimentalFoundationApi::class, ExperimentalLayoutApi::class) @Composable private fun Content( state: SecureBackupEnterRecoveryKeyState, ) { + val bringIntoViewRequester = remember { BringIntoViewRequester() } + var isFocused by remember { mutableStateOf(false) } + val isImeVisible = WindowInsets.isImeVisible + val coroutineScope = rememberCoroutineScope() + LaunchedEffect(isImeVisible, isFocused) { + // When the keyboard is shown, we want to scroll the text field into view + if (isImeVisible && isFocused) { + coroutineScope.launch { + // Delay to ensure the keyboard is fully shown + delay(100.milliseconds) + bringIntoViewRequester.bringIntoView() + } + } + } RecoveryKeyView( - modifier = Modifier.padding(top = 52.dp, bottom = 32.dp), + modifier = Modifier + .onFocusChanged { isFocused = it.isFocused } + .bringIntoViewRequester(bringIntoViewRequester) + .padding(top = 52.dp, bottom = 32.dp), state = state.recoveryKeyViewState, onClick = null, onChange = { diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/pages/FlowStepPage.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/pages/FlowStepPage.kt index 4a7c3f2dd5..bf549ecda2 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/pages/FlowStepPage.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/pages/FlowStepPage.kt @@ -13,9 +13,11 @@ import androidx.compose.foundation.layout.ColumnScope import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.TopAppBarDefaults import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.dp import io.element.android.compound.theme.ElementTheme import io.element.android.compound.tokens.generated.CompoundIcons @@ -63,6 +65,7 @@ fun FlowStepPage( } }, title = {}, + colors = TopAppBarDefaults.topAppBarColors(containerColor = Color.Transparent) ) }, header = { diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/pages/HeaderFooterPage.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/pages/HeaderFooterPage.kt index c059cfe880..5100abad64 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/pages/HeaderFooterPage.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/pages/HeaderFooterPage.kt @@ -9,12 +9,14 @@ package io.element.android.libraries.designsystem.atomic.pages import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.IntrinsicSize import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.calculateEndPadding import androidx.compose.foundation.layout.calculateStartPadding import androidx.compose.foundation.layout.consumeWindowInsets import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.imePadding import androidx.compose.foundation.layout.padding import androidx.compose.foundation.rememberScrollState @@ -94,17 +96,19 @@ fun HeaderFooterPage( .run { if (isScrollable) { verticalScroll(rememberScrollState()) + // Make sure the scrollable content takes the full available height + .height(IntrinsicSize.Max) } else { Modifier } } // Apply insets here so if the content is scrollable it can get below the top app bar if needed .padding(contentInsetsPadding) - .weight(1f), + .weight(1f, fill = true), ) { // Header header() - Box(modifier = Modifier.weight(1f)) { + Box { content() } } @@ -112,7 +116,7 @@ fun HeaderFooterPage( // Footer Box( modifier = Modifier - .padding(horizontal = 16.dp) + .padding(start = 16.dp, end = 16.dp, top = 16.dp) .fillMaxWidth() .padding(footerInsetsPadding) ) { diff --git a/tests/uitests/src/test/snapshots/images/features.analytics.impl_AnalyticsOptInView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.analytics.impl_AnalyticsOptInView_Day_0_en.png index e8e0bbf1d8..65e4ae3fcb 100644 --- a/tests/uitests/src/test/snapshots/images/features.analytics.impl_AnalyticsOptInView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.analytics.impl_AnalyticsOptInView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:255709a0c6b3ffe337e5a3ce657e350539d9278a2a1c7994ac40752a0bffecff -size 82449 +oid sha256:236ed0a010eb4ad4ca28b474a269fe919dc2a329132c42f02092a31bdf7d84a1 +size 83154 diff --git a/tests/uitests/src/test/snapshots/images/features.analytics.impl_AnalyticsOptInView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.analytics.impl_AnalyticsOptInView_Day_1_en.png index 4ca3de0a14..7e1db079dc 100644 --- a/tests/uitests/src/test/snapshots/images/features.analytics.impl_AnalyticsOptInView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.analytics.impl_AnalyticsOptInView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:232fcbe898588450577fca29090873626c2df7cc4afba91a87d3956d29f0afbc -size 81150 +oid sha256:39a70a38c06be96a7d9acee023b3d26fb03b374a981185e5c2a2d217fdbed1fb +size 81825 diff --git a/tests/uitests/src/test/snapshots/images/features.analytics.impl_AnalyticsOptInView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.analytics.impl_AnalyticsOptInView_Night_0_en.png index d794cb4425..fcec6752c8 100644 --- a/tests/uitests/src/test/snapshots/images/features.analytics.impl_AnalyticsOptInView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.analytics.impl_AnalyticsOptInView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:82812d497f41b7e34d00cf2fadbde22115200539fcb25660dd9f9c9378093f0e -size 75610 +oid sha256:6b29e98607174bd4f8c64e582c8e012a95565a97601ade537375cf0515585592 +size 76228 diff --git a/tests/uitests/src/test/snapshots/images/features.analytics.impl_AnalyticsOptInView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.analytics.impl_AnalyticsOptInView_Night_1_en.png index c3a8af5c2d..778259739b 100644 --- a/tests/uitests/src/test/snapshots/images/features.analytics.impl_AnalyticsOptInView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.analytics.impl_AnalyticsOptInView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:26f4a151850c4c21ed57d0a1d36ea72aece585ed5ec6d54303edbeaa91d06df9 -size 73959 +oid sha256:f10da703d90ac9bc99c7145eea93598e209f1c674fc918ce69df8875bddbf736 +size 74353 diff --git a/tests/uitests/src/test/snapshots/images/features.ftue.impl.notifications_NotificationsOptInView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.ftue.impl.notifications_NotificationsOptInView_Day_0_en.png index ec56a647c0..94e57d26f7 100644 --- a/tests/uitests/src/test/snapshots/images/features.ftue.impl.notifications_NotificationsOptInView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.ftue.impl.notifications_NotificationsOptInView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3b5294950885cb417983db822b7615dfd0c4988c0eef7eceb466b751c0834020 -size 68101 +oid sha256:e6aa9ee5920f74d5a5fef6e2a0c81ef8e0480a428161a33283c55dfeb17d39ef +size 68963 diff --git a/tests/uitests/src/test/snapshots/images/features.ftue.impl.notifications_NotificationsOptInView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.ftue.impl.notifications_NotificationsOptInView_Night_0_en.png index 3f29a09d02..f68b07b3fa 100644 --- a/tests/uitests/src/test/snapshots/images/features.ftue.impl.notifications_NotificationsOptInView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.ftue.impl.notifications_NotificationsOptInView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c6ea578f8aa88e306f50407c48cc08243e147635bd5e94f13c4f054ff02ed380 -size 59199 +oid sha256:f36c7ded0fb9e543dd367bc7ae676463d36cd3aa449af8eeffe98966a96dd847 +size 59960 diff --git a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_13_en.png b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_13_en.png index 19aa34ce60..6f8e9c095b 100644 --- a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_13_en.png +++ b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_13_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fbdd42f8092b3bf8fc58ea012972a77444bff2200585fc4d9e0765453e98c251 -size 29425 +oid sha256:fc93b58449602518d7fd6e14334bba0793a5692f478367e825b75c6ca9de685a +size 29451 diff --git a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_13_en.png b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_13_en.png index 656133b3fb..1e702f7ec9 100644 --- a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_13_en.png +++ b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_13_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c35203dccee8ae4c1f7257d54ce84394fcc1b433a1dbd3ca66f8989eb776edf1 -size 28789 +oid sha256:8cbdba568da3e23a836524fbde2d431268d6ce27408a3490fa3bf1407a2862e0 +size 28729 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_0_en.png index 77f7df9ebf..dc56c9ef07 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3d98408bf12d027294336036bc931a71e8445ea64fbe24382e28f5c9ab571e2f -size 14771 +oid sha256:ee07c8d10b22fde6ba769ffb9f4165dc361a736f406462971e675fe49f937c4f +size 14601 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_1_en.png index cd1f9e9d8b..876adb14ad 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fe810ba7c5afd8c6453c0798dfd57dbdb32ef3db486a2346b391616c67384ab7 -size 19865 +oid sha256:82d2a63343a1888fea014a660839b258e384dedb5172878f50513543fac908a1 +size 19675 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_2_en.png index 1c308c53d7..a2a2133bd5 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d46119857cf8c5ae5f08306e70ff1da7bbf2439f1823cd0d4dae7543ebf117c3 -size 26383 +oid sha256:6926b4809939097a505ce1864dabcf5ca50461269b89118154b5e692317aec9f +size 26204 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_3_en.png index 15ac598a95..a23153e5c1 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e6ff5f8f48d4976f3765816f81b540d7100599cf536613c47e39e00ab5c87cbb -size 32549 +oid sha256:0cf8d0e215067d3c6bab9f7e7669ca4639b896f7dc418631dd9959fb99452ca7 +size 32385 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_0_en.png index 7c5bc9bc71..758b702ea0 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d133a357d0de55f21240136477f7e1f878195b77e60aa555f8ffb1c39799a5a3 -size 14055 +oid sha256:cb9fc1376b91a4aa5a591100bf98fa15a138d26f5d43ee22c48a61a89943ff9f +size 13974 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_1_en.png index 987a058c54..7c76229aef 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e9c1deea2ce90a44dac812217fa8f49f290bae023146b883dac9ae3040a4242f -size 18969 +oid sha256:bf7a6a0f41ee301fb203c25c4636d7ce96d15e76eb536c7573e7792657dcd459 +size 18892 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_2_en.png index b0a00983e7..ec5323d6d4 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:daf8aeeb87942d65602cb24d4c58a4165a43cacc7c5c98f8032e28551bb71845 -size 25245 +oid sha256:3f1929531fee3dc938cda1f865260c83569cd5980ba5da5b7a0b3b6285085aed +size 25160 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_3_en.png index 6b25807c82..f0985eeea4 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:35e7dd1dd561f3e2a32b55732d81054036703957a93186a24664423bb7343454 -size 31212 +oid sha256:e77dc96ffab18d00cdced2486407f3d70d0213a9f2937672c12e6d920364b17e +size 31129 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.reset.root_ResetIdentityRootView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.reset.root_ResetIdentityRootView_Day_0_en.png index 5b439e89c9..1799aeace0 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.reset.root_ResetIdentityRootView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.reset.root_ResetIdentityRootView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d0a50e8f002b7866579ad058d1d71621e85c00282cca4b5ddb1ecd5d3fb0bfcd -size 57245 +oid sha256:d49a60535fa260b6a920fe1765b0a4e6277a4a513eba5a35f2992f69576bf121 +size 63448 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.reset.root_ResetIdentityRootView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.reset.root_ResetIdentityRootView_Day_1_en.png index c477c9e6fa..9cf51a3a69 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.reset.root_ResetIdentityRootView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.reset.root_ResetIdentityRootView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:91759024a0698ea4d4fd05fada6125fae5f86978d26e86d3cb088f57424772cc -size 49470 +oid sha256:45471081e7c479fec9279dcba2e8a65f283bde610c006f387581280a489dec1c +size 54422 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.reset.root_ResetIdentityRootView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.reset.root_ResetIdentityRootView_Night_0_en.png index 6bc5c9c9b4..1fccc9e974 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.reset.root_ResetIdentityRootView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.reset.root_ResetIdentityRootView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:db0eb360bed04c1169be840fa15429a180b9812b0f38b903639de70cc0eb6369 -size 56370 +oid sha256:b235d43a2d760c978c2fad9ca3cb6d9c84991563b70bb79852da00ddb1a04d6f +size 62362 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.reset.root_ResetIdentityRootView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.reset.root_ResetIdentityRootView_Night_1_en.png index 9557e5e9f4..a283c16bb0 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.reset.root_ResetIdentityRootView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.reset.root_ResetIdentityRootView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:11213aea7ceb0eab52a27ecff95075e3b15508bcfeca04bad88326cbb3989f9f -size 47362 +oid sha256:310bf9cce0143135a94b16704fca319db26607976c2d78bfc2896f85b67c62bb +size 52199 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_2_en.png index 985895ddcd..277f7990b2 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6cdf434a3f63224c6d164f6e153d846b26644b270a63df01808ac9577883d7fe -size 56501 +oid sha256:3d5aec2ca7aa00c9a3b4a21e6589497b784d90676ffe94999efd245916de2f8d +size 54310 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_3_en.png index 985895ddcd..277f7990b2 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6cdf434a3f63224c6d164f6e153d846b26644b270a63df01808ac9577883d7fe -size 56501 +oid sha256:3d5aec2ca7aa00c9a3b4a21e6589497b784d90676ffe94999efd245916de2f8d +size 54310 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_4_en.png index 8ca4fafeb2..9ec14d711f 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:eeb6b4d6b8ae5e34c9621302dc04bde9086d3857f1928d360d16f64c24e8bb3e -size 50287 +oid sha256:56d784b2a9bd8c36845ad0d559ccb0fc38d93b281efa9f50590be375177ecc52 +size 48492 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_2_en.png index 3bf6a1df65..b145bb8019 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:05e2c93413dfef1dfbad559ea4a7321ce3cec076d05d448e28474bde66e3fff4 -size 54646 +oid sha256:fd0e7f92b0a307db669342b7880f14fbc2adc0b70a6cd7445771af95a9386f9e +size 52397 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_3_en.png index 3bf6a1df65..b145bb8019 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:05e2c93413dfef1dfbad559ea4a7321ce3cec076d05d448e28474bde66e3fff4 -size 54646 +oid sha256:fd0e7f92b0a307db669342b7880f14fbc2adc0b70a6cd7445771af95a9386f9e +size 52397 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_4_en.png index b10498328a..a72ef4b673 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:24fa75a0c3fcdc535bc96a3bce8dc2edd9fbcfd9cb3663f7b454394611bef94b -size 47571 +oid sha256:16fc4591af9f0fc19aa2aa6d2e9d44cf87176797a8f9540605ec265744f9fb28 +size 45864 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Day_2_en.png index 985895ddcd..277f7990b2 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6cdf434a3f63224c6d164f6e153d846b26644b270a63df01808ac9577883d7fe -size 56501 +oid sha256:3d5aec2ca7aa00c9a3b4a21e6589497b784d90676ffe94999efd245916de2f8d +size 54310 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Day_3_en.png index 985895ddcd..277f7990b2 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6cdf434a3f63224c6d164f6e153d846b26644b270a63df01808ac9577883d7fe -size 56501 +oid sha256:3d5aec2ca7aa00c9a3b4a21e6589497b784d90676ffe94999efd245916de2f8d +size 54310 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Day_4_en.png index 8ca4fafeb2..9ec14d711f 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:eeb6b4d6b8ae5e34c9621302dc04bde9086d3857f1928d360d16f64c24e8bb3e -size 50287 +oid sha256:56d784b2a9bd8c36845ad0d559ccb0fc38d93b281efa9f50590be375177ecc52 +size 48492 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Night_2_en.png index 3bf6a1df65..b145bb8019 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:05e2c93413dfef1dfbad559ea4a7321ce3cec076d05d448e28474bde66e3fff4 -size 54646 +oid sha256:fd0e7f92b0a307db669342b7880f14fbc2adc0b70a6cd7445771af95a9386f9e +size 52397 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Night_3_en.png index 3bf6a1df65..b145bb8019 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:05e2c93413dfef1dfbad559ea4a7321ce3cec076d05d448e28474bde66e3fff4 -size 54646 +oid sha256:fd0e7f92b0a307db669342b7880f14fbc2adc0b70a6cd7445771af95a9386f9e +size 52397 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Night_4_en.png index b10498328a..a72ef4b673 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:24fa75a0c3fcdc535bc96a3bce8dc2edd9fbcfd9cb3663f7b454394611bef94b -size 47571 +oid sha256:16fc4591af9f0fc19aa2aa6d2e9d44cf87176797a8f9540605ec265744f9fb28 +size 45864 diff --git a/tests/uitests/src/test/snapshots/images/features.signedout.impl_SignedOutView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.signedout.impl_SignedOutView_Day_0_en.png index 4cddd8f758..287773510d 100644 --- a/tests/uitests/src/test/snapshots/images/features.signedout.impl_SignedOutView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.signedout.impl_SignedOutView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ec003b496dd46394a0d7e261ca7d1f29c67539bb342ffc63c70f29429a4c9383 -size 56106 +oid sha256:fbad1b9aeb93d87860738982345be39484cd5fdc8cc6dd2772f5b21580d7f75f +size 55827 diff --git a/tests/uitests/src/test/snapshots/images/features.signedout.impl_SignedOutView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.signedout.impl_SignedOutView_Night_0_en.png index 508765ed60..df29965580 100644 --- a/tests/uitests/src/test/snapshots/images/features.signedout.impl_SignedOutView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.signedout.impl_SignedOutView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:04e95499c071791b6abe8f22c29ec81f21f92b913ae24965f6455c8bcff3ac86 -size 55164 +oid sha256:5e7c5fdb23b2e6406e07cc518f03e6e49acae68f7b91dc2626ea7c34e1875a57 +size 54829 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_5_en.png index 3bd25e8667..6ec6fd79b0 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:89bbdbeef7d2d331e95907a4c1b9d34764c3ea39b8bb63a4f42fb210515de75b -size 46713 +oid sha256:88f616a97acfe8c98705843ebbe5222d8d7068c64345a63594bff10b27b56e0b +size 46485 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_6_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_6_en.png index 115ae57f89..888bb98b6a 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a71a88e65140d150cbe50d116e13119dcb9bd96191832ac482f423f284c55246 -size 47048 +oid sha256:79fe88714a2e3d9a738de0e457220170716adf88e85eeef8e3a460facacac8ee +size 46823 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_7_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_7_en.png index 7bd143c02c..7217061a08 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:531de4a36c2fd9b52e7f29fcde221bd8897178bbfb7cbf5b5640acbee4439d1a -size 40396 +oid sha256:0e42383bf5dda6a4511cb915c40f76fee54670158c848d4ee1b125c57eea290b +size 40166 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_8_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_8_en.png index bfbc350682..5d6ce8a817 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:74b41a474f1c26e668b05c9b9da5313739fc23e2679d7f58d17326499fd8a8f3 -size 40733 +oid sha256:ef4fa260df2194e4deefd4e3d9d57779afcbbc6cd56ddb4d699afa6fbac94cd8 +size 40502 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_9_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_9_en.png index 32d51c2a7c..7a8af23c30 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_9_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9cc1a6ed77d4bdca2154e6a98294a970071f48bbd986bfb175a5ed0f0360d3a2 -size 31534 +oid sha256:a599d61446db401ad156139758917b54f702d765d24f20fce246674e6dd05cc3 +size 31555 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_5_en.png index 85af305006..8382812e13 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fc7264ee36a36ac79f9c52ab24f2cdccecf149aee3b36f1f03121b5a98ac7aa8 -size 45556 +oid sha256:fddc479ceef787049b0e4af3ce61f6efbf67f7dccd81c3d6c17fcc7cea9c1127 +size 45383 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_6_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_6_en.png index ff0e6ef380..a37c7355fd 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:adbb4b7a7297bf7e586d663dc665cedc2f7dba0e841a3f93d09d3be27e3527fd -size 45919 +oid sha256:16bcb5d1d66aa3b5bb8e574e67f47e87c4beee9cc8795c4ac24ea68c57d32dbb +size 45750 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_7_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_7_en.png index c98ce28904..07b3b6b822 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d1f6072fb62c959e9685f915c3985c58b9bcc2c630d6bc9a4370f4b2d88a374c -size 39645 +oid sha256:8f99c623fc13c336ee3138741275a4fd42677d92d8357e37d6b9ae4cb75b22e1 +size 39450 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_8_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_8_en.png index 6e06243a24..c5a310b668 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:82460b85ca35f30990ab76a78e635e6783f8ce39524e3f9fd6ffe5b7caab0a14 -size 40012 +oid sha256:c8be233702d5b478db8358053da7cfc3712028f1b0b31287b839cb2a2dab3866 +size 39831 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_9_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_9_en.png index 5326db7e73..b0e8833345 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_9_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f92d9cf0b0ea928325a8e64ffe32bd0484f9cb4130cd9815a2ea6997e2d5852c -size 30675 +oid sha256:093b5ba8be120cf9f93cd3448aac328c1a8ba191d45e48f514f12879e9d3d5ae +size 30702 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_4_en.png index 3bd25e8667..6ec6fd79b0 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:89bbdbeef7d2d331e95907a4c1b9d34764c3ea39b8bb63a4f42fb210515de75b -size 46713 +oid sha256:88f616a97acfe8c98705843ebbe5222d8d7068c64345a63594bff10b27b56e0b +size 46485 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_5_en.png index 115ae57f89..888bb98b6a 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a71a88e65140d150cbe50d116e13119dcb9bd96191832ac482f423f284c55246 -size 47048 +oid sha256:79fe88714a2e3d9a738de0e457220170716adf88e85eeef8e3a460facacac8ee +size 46823 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_6_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_6_en.png index 7bd143c02c..7217061a08 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:531de4a36c2fd9b52e7f29fcde221bd8897178bbfb7cbf5b5640acbee4439d1a -size 40396 +oid sha256:0e42383bf5dda6a4511cb915c40f76fee54670158c848d4ee1b125c57eea290b +size 40166 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_9_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_9_en.png index 32d51c2a7c..7a8af23c30 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_9_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9cc1a6ed77d4bdca2154e6a98294a970071f48bbd986bfb175a5ed0f0360d3a2 -size 31534 +oid sha256:a599d61446db401ad156139758917b54f702d765d24f20fce246674e6dd05cc3 +size 31555 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_4_en.png index 85af305006..8382812e13 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fc7264ee36a36ac79f9c52ab24f2cdccecf149aee3b36f1f03121b5a98ac7aa8 -size 45556 +oid sha256:fddc479ceef787049b0e4af3ce61f6efbf67f7dccd81c3d6c17fcc7cea9c1127 +size 45383 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_5_en.png index ff0e6ef380..a37c7355fd 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:adbb4b7a7297bf7e586d663dc665cedc2f7dba0e841a3f93d09d3be27e3527fd -size 45919 +oid sha256:16bcb5d1d66aa3b5bb8e574e67f47e87c4beee9cc8795c4ac24ea68c57d32dbb +size 45750 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_6_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_6_en.png index c98ce28904..07b3b6b822 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d1f6072fb62c959e9685f915c3985c58b9bcc2c630d6bc9a4370f4b2d88a374c -size 39645 +oid sha256:8f99c623fc13c336ee3138741275a4fd42677d92d8357e37d6b9ae4cb75b22e1 +size 39450 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_9_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_9_en.png index 5326db7e73..b0e8833345 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_9_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f92d9cf0b0ea928325a8e64ffe32bd0484f9cb4130cd9815a2ea6997e2d5852c -size 30675 +oid sha256:093b5ba8be120cf9f93cd3448aac328c1a8ba191d45e48f514f12879e9d3d5ae +size 30702 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.pages_FlowStepPage_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.pages_FlowStepPage_Day_0_en.png index 71ad38ec42..ca528f64d8 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.pages_FlowStepPage_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.pages_FlowStepPage_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fe7673f9923f190509d7beaac799dab5f40a18aa6272efb15b568a1f61384d69 -size 15553 +oid sha256:57cbf6294c2eed21f53d79adccceb2cc066c391a5ab1df76e39a1a5336318789 +size 15604 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.pages_FlowStepPage_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.pages_FlowStepPage_Night_0_en.png index 97bc5e0f6c..27411ac3b8 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.pages_FlowStepPage_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.pages_FlowStepPage_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f38933d81b950a4e38fb8bb137cc9d7c16d23f774d2994c70e1e5899facbd19d -size 15128 +oid sha256:d28135979475db962fd91c63ed2a7f6d2cf24232b14755f961812a55c0ec4587 +size 15207 From 37344a4f7df2603fe6084f23879ad4fe7020351b Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Mon, 2 Jun 2025 16:11:30 +0200 Subject: [PATCH 24/25] Fix mobile link (#4805) * Fix path of mobile link. Adding a trailing `/` * Reduce brain pressure. --- app/src/main/AndroidManifest.xml | 4 ++-- .../features/login/impl/DefaultLoginIntentResolver.kt | 2 +- .../login/impl/DefaultLoginIntentResolverTest.kt | 10 +++++----- tools/adb/deeplink_mobile.sh | 4 ++-- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6619603f93..6293a9fe57 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -91,7 +91,7 @@ @@ -102,7 +102,7 @@ - +