diff --git a/CHANGES.md b/CHANGES.md
index 4acc8d2c2a..e0fd96e8e9 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,3 +1,61 @@
+Changes in Element X v25.08.0
+=============================
+
+
+
+## What's Changed
+### 🐛 Bugfixes
+* Fix `toPlainText` where `
` tags appear by @jmartinesp in https://github.com/element-hq/element-x-android/pull/5044
+* Remove the scaling added in `Player.Listener.onVideoSizeChanged` by @jmartinesp in https://github.com/element-hq/element-x-android/pull/5055
+* Make sure we clean up the pre-processed and uploaded media by @jmartinesp in https://github.com/element-hq/element-x-android/pull/5039
+* Calculate video output size taking into account portrait mode by @jmartinesp in https://github.com/element-hq/element-x-android/pull/5068
+* Prevent loop when exiting the attachments preview screen by @jmartinesp in https://github.com/element-hq/element-x-android/pull/5078
+* Prevent crash caused by re-release of wakelock in calls by @jmartinesp in https://github.com/element-hq/element-x-android/pull/5077
+* Make sure we display errors when we create a recovery key and it fails by @jmartinesp in https://github.com/element-hq/element-x-android/pull/5079
+* Fix crash when trying to get active notifications by @jmartinesp in https://github.com/element-hq/element-x-android/pull/5085
+* Adapt 'change roles' screens to the new creator/owner role by @jmartinesp in https://github.com/element-hq/element-x-android/pull/5076
+### 🗣 Translations
+* Sync Strings by @ElementBot in https://github.com/element-hq/element-x-android/pull/5021
+* Sync Strings by @ElementBot in https://github.com/element-hq/element-x-android/pull/5054
+* Sync Strings by @ElementBot in https://github.com/element-hq/element-x-android/pull/5083
+### 🧱 Build
+* Disable Element Call Maestro tests for the time being by @jmartinesp in https://github.com/element-hq/element-x-android/pull/5064
+### 📄 Documentation
+* Grammar fixes for docs and comments by @andybalaam in https://github.com/element-hq/element-x-android/pull/5043
+* Note how to switch back to the published SDK after building locally by @andybalaam in https://github.com/element-hq/element-x-android/pull/5042
+### Dependency upgrades
+* Update dependency io.mockk:mockk to v1.14.5 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5037
+* Update dependency androidx.lifecycle:lifecycle-process to v2.9.2 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5036
+* Update dagger to v2.57 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5038
+* Update haze to v1.6.9 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5045
+* Update dependency io.nlopez.compose.rules:detekt to v0.4.24 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5053
+* Update dependency io.nlopez.compose.rules:detekt to v0.4.25 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5058
+* Update coil to v3.3.0 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5063
+* Update dependency io.nlopez.compose.rules:detekt to v0.4.26 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5065
+* Update dependency com.posthog:posthog-android to v3.20.0 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5067
+* Update dependency com.google.firebase:firebase-bom to v34 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5061
+* Update dependency org.matrix.rustcomponents:sdk-android to v25.7.23 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5073
+* Update dependency com.posthog:posthog-android to v3.20.1 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5087
+* Update dependency org.matrix.rustcomponents:sdk-android to v25.7.28 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5088
+* Update dependency org.maplibre.gl:android-sdk to v11.13.0 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5093
+* Update dependency androidx.test:runner to v1.7.0 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5102
+* Update test.core to v1.7.0 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5104
+* Update dependency androidx.test.ext:junit to v1.3.0 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5103
+* Update dependency io.sentry:sentry-android to v8.18.0 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5097
+### Others
+* Iterate on FloatingActionButton shape and colors. by @bmarty in https://github.com/element-hq/element-x-android/pull/5033
+* [a11y] Improve session verification screens by @bmarty in https://github.com/element-hq/element-x-android/pull/5017
+* misc (room id) : add room id regex pattern to match new versions by @ganfra in https://github.com/element-hq/element-x-android/pull/5040
+* Use lower level APIs to draw the message bubbles by @jmartinesp in https://github.com/element-hq/element-x-android/pull/5056
+* misc (store description) : update store description for fastlane by @ganfra in https://github.com/element-hq/element-x-android/pull/5060
+* [a11y] Improve accessibility on avatar when creating a room. by @bmarty in https://github.com/element-hq/element-x-android/pull/5046
+* Add fallback notifications from UTDs to the push history by @jmartinesp in https://github.com/element-hq/element-x-android/pull/5047
+* feature (media send queue) : enable send queue by default by @ganfra in https://github.com/element-hq/element-x-android/pull/5098
+* misc : re-enable share pos by default by @ganfra in https://github.com/element-hq/element-x-android/pull/5108
+
+
+**Full Changelog**: https://github.com/element-hq/element-x-android/compare/v25.07.1...v25.08.0
+
Changes in Element X v25.07.1
=============================
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index f233620cdb..ea45e51bf8 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -318,6 +318,7 @@ licensee {
allow("MIT")
allow("BSD-2-Clause")
allow("BSD-3-Clause")
+ allow("EPL-1.0")
allowUrl("https://opensource.org/licenses/MIT")
allowUrl("https://developer.android.com/studio/terms.html")
allowUrl("https://www.zetetic.net/sqlcipher/license/")
diff --git a/appnav/src/main/kotlin/io/element/android/appnav/LoggedInEventProcessor.kt b/appnav/src/main/kotlin/io/element/android/appnav/LoggedInEventProcessor.kt
index 65980e3427..3f403ea8e0 100644
--- a/appnav/src/main/kotlin/io/element/android/appnav/LoggedInEventProcessor.kt
+++ b/appnav/src/main/kotlin/io/element/android/appnav/LoggedInEventProcessor.kt
@@ -14,6 +14,7 @@ import io.element.android.libraries.matrix.api.timeline.item.event.MembershipCha
import io.element.android.libraries.ui.strings.CommonStrings
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Job
+import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.filter
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
@@ -28,6 +29,7 @@ class LoggedInEventProcessor @Inject constructor(
fun observeEvents(coroutineScope: CoroutineScope) {
observingJob = roomMembershipObserver.updates
.filter { !it.isUserInRoom }
+ .distinctUntilChanged()
.onEach {
when (it.change) {
MembershipChange.LEFT -> displayMessage(CommonStrings.common_current_user_left_room)
diff --git a/appnav/src/main/res/values-fa/translations.xml b/appnav/src/main/res/values-fa/translations.xml
index 3bb3bca291..16bb7fd3e2 100644
--- a/appnav/src/main/res/values-fa/translations.xml
+++ b/appnav/src/main/res/values-fa/translations.xml
@@ -1,4 +1,5 @@
"خروج و ارتقا"
+ "%1$s دیگر از شیوهنامهٔ قدیمی پشتیبانی نمیکند. لطفاً برای ادامهٔ استفاده از کاره، خارج شده و دوباره وارد شوید."
diff --git a/fastlane/metadata/android/en-US/changelogs/202508010.txt b/fastlane/metadata/android/en-US/changelogs/202508010.txt
new file mode 100644
index 0000000000..e96d596b06
--- /dev/null
+++ b/fastlane/metadata/android/en-US/changelogs/202508010.txt
@@ -0,0 +1,4 @@
+Main changes in this version:
+- Fixes for the room v12 changes.
+- Several bug fixes, centered on media and calls.
+Full changelog: https://github.com/element-hq/element-x-android/releases
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 04999c82ab..0164bb3089 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
@@ -33,14 +33,11 @@ import io.element.android.libraries.architecture.Presenter
import io.element.android.libraries.architecture.runCatchingUpdatingState
import io.element.android.libraries.core.coroutine.CoroutineDispatchers
import io.element.android.libraries.di.annotations.AppCoroutineScope
-import io.element.android.libraries.matrix.api.MatrixClient
import io.element.android.libraries.matrix.api.MatrixClientProvider
-import io.element.android.libraries.matrix.api.core.RoomId
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
@@ -64,7 +61,6 @@ class CallScreenPresenter @AssistedInject constructor(
private val activeCallManager: ActiveCallManager,
private val languageTagProvider: LanguageTagProvider,
private val appForegroundStateService: AppForegroundStateService,
- private val activeRoomsHolder: ActiveRoomsHolder,
@AppCoroutineScope
private val appCoroutineScope: CoroutineScope,
) : Presenter {
@@ -75,7 +71,6 @@ class CallScreenPresenter @AssistedInject constructor(
private val isInWidgetMode = callType is CallType.RoomCall
private val userAgent = userAgentProvider.provide()
- private var notifiedCallStart = false
@Composable
override fun present(): CallScreenState {
@@ -248,9 +243,7 @@ class CallScreenPresenter @AssistedInject constructor(
Timber.d("Observing sync state in-call for sessionId: ${roomCallType.sessionId}")
client.syncService().syncState
.collect { state ->
- if (state == SyncState.Running) {
- client.notifyCallStartIfNeeded(callType.roomId)
- } else {
+ if (state != SyncState.Running) {
appForegroundStateService.updateIsInCallState(true)
}
}
@@ -263,32 +256,6 @@ class CallScreenPresenter @AssistedInject constructor(
}
}
- private suspend fun MatrixClient.notifyCallStartIfNeeded(roomId: RoomId) {
- if (notifiedCallStart) return
-
- val activeRoomForSession = activeRoomsHolder.getActiveRoomMatching(sessionId, roomId)
- val sendCallNotificationResult = if (activeRoomForSession != null) {
- Timber.d("Notifying call start for room $roomId. Has room call: ${activeRoomForSession.info().hasRoomCall}")
- activeRoomForSession.sendCallNotificationIfNeeded()
- } else {
- // Instantiate the room from the session and roomId and send the notification
- getJoinedRoom(roomId)?.use { room ->
- Timber.d("Notifying call start for room $roomId. Has room call: ${room.info().hasRoomCall}")
- room.sendCallNotificationIfNeeded()
- } ?: run {
- Timber.w("No room found for session $sessionId and room $roomId, skipping call notification.")
- return
- }
- }
-
- sendCallNotificationResult.fold(
- onSuccess = { notifiedCallStart = true },
- onFailure = { error ->
- Timber.e(error, "Failed to send call notification for room $roomId.")
- }
- )
- }
-
private fun parseMessage(message: String): WidgetMessage? {
return WidgetMessageSerializer.deserialize(message).getOrNull()
}
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 d87826fe46..f5d50ecfe6 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
@@ -13,6 +13,7 @@ import io.element.android.libraries.di.AppScope
import io.element.android.libraries.matrix.api.MatrixClientProvider
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.isDm
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
@@ -44,7 +45,7 @@ class DefaultCallWidgetProvider @Inject constructor(
val baseUrl = customBaseUrl ?: EMBEDDED_CALL_WIDGET_BASE_URL
val isEncrypted = room.info().isEncrypted ?: room.getUpdatedIsEncrypted().getOrThrow()
- val widgetSettings = callWidgetSettingsProvider.provide(baseUrl, encrypted = isEncrypted)
+ val widgetSettings = callWidgetSettingsProvider.provide(baseUrl, encrypted = isEncrypted, direct = room.isDm())
val callUrl = room.generateWidgetWebViewUrl(
widgetSettings = widgetSettings,
clientId = clientId,
diff --git a/features/call/impl/src/main/res/values-fi/translations.xml b/features/call/impl/src/main/res/values-fi/translations.xml
index 3a7db64ae1..16be852296 100644
--- a/features/call/impl/src/main/res/values-fi/translations.xml
+++ b/features/call/impl/src/main/res/values-fi/translations.xml
@@ -3,5 +3,6 @@
"Käynnissä oleva puhelu"
"Palaa puheluun napauttamalla"
"☎️ Puhelu käynnissä"
+ "Element Call ei tue Bluetooth-äänilaitteiden käyttöä tässä Android-versiossa. Valitse toinen äänilaite."
"Saapuva Element Call -puhelu"
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 7709066dd0..15f1334773 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
@@ -26,13 +26,11 @@ 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.FakeJoinedRoom
import io.element.android.libraries.matrix.test.sync.FakeSyncService
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
@@ -82,19 +80,12 @@ import kotlin.time.Duration.Companion.seconds
}
@Test
- fun `present - with CallType RoomCall sets call as active, loads URL, runs WidgetDriver and notifies the other clients a call started`() = runTest {
- val sendCallNotificationIfNeededLambda = lambdaRecorder> { Result.success(true) }
- val syncService = FakeSyncService(SyncState.Running)
- val fakeRoom = FakeJoinedRoom(sendCallNotificationIfNeededResult = sendCallNotificationIfNeededLambda)
- val client = FakeMatrixClient(syncService = syncService).apply {
- givenGetRoomResult(A_ROOM_ID, fakeRoom)
- }
+ fun `present - with CallType RoomCall sets call as active, loads URL and runs WidgetDriver`() = runTest {
val widgetDriver = FakeMatrixWidgetDriver()
val widgetProvider = FakeCallWidgetProvider(widgetDriver)
val analyticsLambda = lambdaRecorder {}
val joinedCallLambda = lambdaRecorder {}
val presenter = createCallScreenPresenter(
- matrixClientsProvider = FakeMatrixClientProvider(getClient = { Result.success(client) }),
callType = CallType.RoomCall(A_SESSION_ID, A_ROOM_ID),
widgetDriver = widgetDriver,
widgetProvider = widgetProvider,
@@ -116,7 +107,6 @@ import kotlin.time.Duration.Companion.seconds
assertThat(widgetProvider.getWidgetCalled).isTrue()
assertThat(widgetDriver.runCalledCount).isEqualTo(1)
analyticsLambda.assertions().isCalledOnce().with(value(MobileScreen.ScreenName.RoomCall))
- sendCallNotificationIfNeededLambda.assertions().isCalledOnce()
// Wait until the WidgetDriver is loaded
skipItems(1)
@@ -399,7 +389,6 @@ 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 {
@@ -420,7 +409,6 @@ import kotlin.time.Duration.Companion.seconds
languageTagProvider = FakeLanguageTagProvider("en-US"),
appForegroundStateService = appForegroundStateService,
appCoroutineScope = backgroundScope,
- activeRoomsHolder = activeRoomsHolder,
)
}
}
diff --git a/features/changeroommemberroles/api/build.gradle.kts b/features/changeroommemberroles/api/build.gradle.kts
new file mode 100644
index 0000000000..9ec13286da
--- /dev/null
+++ b/features/changeroommemberroles/api/build.gradle.kts
@@ -0,0 +1,27 @@
+import extension.setupAnvil
+
+/*
+ * 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")
+ id("kotlin-parcelize")
+}
+
+android {
+ namespace = "io.element.android.features.changeroommemberroles.api"
+}
+
+setupAnvil()
+
+dependencies {
+ implementation(projects.anvilannotations)
+ implementation(projects.libraries.architecture)
+ implementation(projects.libraries.core)
+ implementation(projects.libraries.matrix.api)
+ api(projects.libraries.usersearch.api)
+}
diff --git a/features/changeroommemberroles/api/src/main/kotlin/io/element/android/features/changeroommemberroes/api/ChangeRoomMemberRolesEntryPoint.kt b/features/changeroommemberroles/api/src/main/kotlin/io/element/android/features/changeroommemberroes/api/ChangeRoomMemberRolesEntryPoint.kt
new file mode 100644
index 0000000000..0175cdf247
--- /dev/null
+++ b/features/changeroommemberroles/api/src/main/kotlin/io/element/android/features/changeroommemberroes/api/ChangeRoomMemberRolesEntryPoint.kt
@@ -0,0 +1,36 @@
+/*
+ * 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.changeroommemberroes.api
+
+import com.bumble.appyx.core.modality.BuildContext
+import com.bumble.appyx.core.node.Node
+import io.element.android.libraries.architecture.FeatureEntryPoint
+import io.element.android.libraries.architecture.NodeInputs
+import io.element.android.libraries.matrix.api.core.RoomId
+import io.element.android.libraries.matrix.api.room.JoinedRoom
+
+interface ChangeRoomMemberRolesEntryPoint : FeatureEntryPoint {
+ fun builder(parentNode: Node, buildContext: BuildContext): Builder
+
+ interface Builder {
+ fun room(room: JoinedRoom): Builder
+ fun listType(changeRoomMemberRolesListType: ChangeRoomMemberRolesListType): Builder
+ fun build(): Node
+ }
+
+ interface NodeProxy {
+ val roomId: RoomId
+ suspend fun waitForRoleChanged()
+ }
+}
+
+enum class ChangeRoomMemberRolesListType : NodeInputs {
+ SelectNewOwnersWhenLeaving,
+ Admins,
+ Moderators
+}
diff --git a/features/changeroommemberroles/impl/build.gradle.kts b/features/changeroommemberroles/impl/build.gradle.kts
new file mode 100644
index 0000000000..dfe7690aed
--- /dev/null
+++ b/features/changeroommemberroles/impl/build.gradle.kts
@@ -0,0 +1,51 @@
+import extension.setupAnvil
+
+/*
+ * 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")
+ id("kotlin-parcelize")
+}
+
+android {
+ namespace = "io.element.android.features.changeroommemberroles.impl"
+
+ testOptions {
+ unitTests {
+ isIncludeAndroidResources = true
+ }
+ }
+}
+
+setupAnvil()
+
+dependencies {
+ api(projects.features.changeroommemberroles.api)
+ implementation(projects.appnav)
+ implementation(projects.libraries.architecture)
+ implementation(projects.libraries.core)
+ implementation(projects.libraries.designsystem)
+ implementation(projects.libraries.matrix.api)
+ // For test fixtures used in previews
+ implementation(projects.libraries.previewutils)
+ implementation(projects.libraries.matrixui)
+ implementation(projects.libraries.uiStrings)
+ implementation(projects.services.analytics.api)
+
+ testImplementation(projects.services.analytics.test)
+ testImplementation(libs.test.junit)
+ testImplementation(libs.coroutines.test)
+ testImplementation(libs.molecule.runtime)
+ testImplementation(libs.test.robolectric)
+ testImplementation(libs.test.truth)
+ testImplementation(libs.test.turbine)
+ testImplementation(projects.libraries.matrix.test)
+ testImplementation(projects.tests.testutils)
+ testImplementation(libs.androidx.compose.ui.test.junit)
+ testReleaseImplementation(libs.androidx.compose.ui.test.manifest)
+}
diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/changeroles/ChangeRolesEvent.kt b/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesEvent.kt
similarity index 89%
rename from features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/changeroles/ChangeRolesEvent.kt
rename to features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesEvent.kt
index 45ac7dd7bf..ab8dbc8f22 100644
--- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/changeroles/ChangeRolesEvent.kt
+++ b/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesEvent.kt
@@ -5,7 +5,7 @@
* Please see LICENSE files in the repository root for full details.
*/
-package io.element.android.features.roomdetails.impl.rolesandpermissions.changeroles
+package io.element.android.features.changeroommemberroles.impl
import io.element.android.libraries.matrix.api.user.MatrixUser
diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/changeroles/ChangeRolesNode.kt b/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesNode.kt
similarity index 60%
rename from features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/changeroles/ChangeRolesNode.kt
rename to features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesNode.kt
index b4750a96ee..5b8a839658 100644
--- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/changeroles/ChangeRolesNode.kt
+++ b/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesNode.kt
@@ -1,14 +1,15 @@
/*
- * Copyright 2024 New Vector Ltd.
+ * 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.roomdetails.impl.rolesandpermissions.changeroles
+package io.element.android.features.changeroommemberroles.impl
-import android.os.Parcelable
import androidx.compose.runtime.Composable
+import androidx.compose.runtime.collectAsState
+import androidx.compose.runtime.getValue
import androidx.compose.ui.Modifier
import com.bumble.appyx.core.modality.BuildContext
import com.bumble.appyx.core.node.Node
@@ -16,11 +17,13 @@ import com.bumble.appyx.core.plugin.Plugin
import dagger.assisted.Assisted
import dagger.assisted.AssistedInject
import io.element.android.anvilannotations.ContributesNode
+import io.element.android.features.changeroommemberroes.api.ChangeRoomMemberRolesListType
import io.element.android.libraries.architecture.NodeInputs
+import io.element.android.libraries.architecture.appyx.launchMolecule
import io.element.android.libraries.architecture.inputs
import io.element.android.libraries.di.RoomScope
import io.element.android.libraries.matrix.api.room.RoomMember
-import kotlinx.parcelize.Parcelize
+import kotlinx.coroutines.flow.first
@ContributesNode(RoomScope::class)
class ChangeRolesNode @AssistedInject constructor(
@@ -28,31 +31,30 @@ class ChangeRolesNode @AssistedInject constructor(
@Assisted plugins: List,
presenterFactory: ChangeRolesPresenter.Factory,
) : Node(buildContext, plugins = plugins) {
- sealed interface ListType : Parcelable {
- @Parcelize
- data object Admins : ListType
- @Parcelize
- data object Moderators : ListType
- }
-
- @Parcelize
data class Inputs(
- val listType: ListType,
- ) : NodeInputs, Parcelable
+ val listType: ChangeRoomMemberRolesListType,
+ ) : NodeInputs
private val inputs: Inputs = inputs()
private val presenter = presenterFactory.run {
val role = when (inputs.listType) {
- is ListType.Admins -> RoomMember.Role.Admin
- is ListType.Moderators -> RoomMember.Role.Moderator
+ ChangeRoomMemberRolesListType.Admins -> RoomMember.Role.Admin
+ ChangeRoomMemberRolesListType.Moderators -> RoomMember.Role.Moderator
+ ChangeRoomMemberRolesListType.SelectNewOwnersWhenLeaving -> RoomMember.Role.Owner(isCreator = false)
}
create(role)
}
+ private val stateFlow = launchMolecule { presenter.present() }
+
+ suspend fun waitForRoleChanged() {
+ stateFlow.first { it.savingState.isSuccess() }
+ }
+
@Composable
override fun View(modifier: Modifier) {
- val state = presenter.present()
+ val state by stateFlow.collectAsState()
ChangeRolesView(
modifier = modifier,
state = state,
diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/changeroles/ChangeRolesPresenter.kt b/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesPresenter.kt
similarity index 92%
rename from features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/changeroles/ChangeRolesPresenter.kt
rename to features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesPresenter.kt
index b5e5b63854..ce971464f4 100644
--- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/changeroles/ChangeRolesPresenter.kt
+++ b/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesPresenter.kt
@@ -1,11 +1,11 @@
/*
- * Copyright 2024 New Vector Ltd.
+ * 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.roomdetails.impl.rolesandpermissions.changeroles
+package io.element.android.features.changeroommemberroles.impl
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
@@ -22,9 +22,6 @@ import dagger.assisted.Assisted
import dagger.assisted.AssistedFactory
import dagger.assisted.AssistedInject
import im.vector.app.features.analytics.plan.RoomModeration
-import io.element.android.features.roomdetails.impl.analytics.toAnalyticsMemberRole
-import io.element.android.features.roomdetails.impl.members.PowerLevelRoomMemberComparator
-import io.element.android.features.roomdetails.impl.members.RoomMemberListDataSource
import io.element.android.libraries.architecture.AsyncAction
import io.element.android.libraries.architecture.Presenter
import io.element.android.libraries.core.coroutine.CoroutineDispatchers
@@ -37,6 +34,7 @@ import io.element.android.libraries.matrix.api.room.powerlevels.usersWithRole
import io.element.android.libraries.matrix.api.room.toMatrixUser
import io.element.android.libraries.matrix.api.user.MatrixUser
import io.element.android.libraries.matrix.ui.model.roleOf
+import io.element.android.libraries.matrix.ui.room.PowerLevelRoomMemberComparator
import io.element.android.services.analytics.api.AnalyticsService
import kotlinx.collections.immutable.ImmutableList
import kotlinx.collections.immutable.PersistentList
@@ -136,8 +134,9 @@ class ChangeRolesPresenter @AssistedInject constructor(
val isModifyingAdmins = role == RoomMember.Role.Admin
val hasChanges = selectedUsers != usersWithRole
val isConfirming = saveState.value.isConfirming()
+ val modifyingOwners = role is RoomMember.Role.Owner
- val needsConfirmation = currentUserIsAdmin && isModifyingAdmins && hasChanges && !isConfirming
+ val needsConfirmation = (modifyingOwners || currentUserIsAdmin && isModifyingAdmins) && hasChanges && !isConfirming
when {
needsConfirmation -> {
@@ -229,3 +228,10 @@ class ChangeRolesPresenter @AssistedInject constructor(
}
}
}
+
+internal fun RoomMember.Role.toAnalyticsMemberRole(): RoomModeration.Role = when (this) {
+ is RoomMember.Role.Owner -> RoomModeration.Role.Administrator // TODO - distinguish creator from admin
+ RoomMember.Role.Admin -> RoomModeration.Role.Administrator
+ RoomMember.Role.Moderator -> RoomModeration.Role.Moderator
+ RoomMember.Role.User -> RoomModeration.Role.User
+}
diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/changeroles/ChangeRolesState.kt b/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesState.kt
similarity index 91%
rename from features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/changeroles/ChangeRolesState.kt
rename to features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesState.kt
index 445b5aa347..027ef76e69 100644
--- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/changeroles/ChangeRolesState.kt
+++ b/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesState.kt
@@ -5,14 +5,14 @@
* Please see LICENSE files in the repository root for full details.
*/
-package io.element.android.features.roomdetails.impl.rolesandpermissions.changeroles
+package io.element.android.features.changeroommemberroles.impl
-import io.element.android.features.roomdetails.impl.members.PowerLevelRoomMemberComparator
import io.element.android.libraries.architecture.AsyncAction
import io.element.android.libraries.designsystem.theme.components.SearchBarResultState
import io.element.android.libraries.matrix.api.core.UserId
import io.element.android.libraries.matrix.api.room.RoomMember
import io.element.android.libraries.matrix.api.user.MatrixUser
+import io.element.android.libraries.matrix.ui.room.PowerLevelRoomMemberComparator
import kotlinx.collections.immutable.ImmutableList
import kotlinx.collections.immutable.toImmutableList
diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/changeroles/ChangeRolesStateProvider.kt b/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesStateProvider.kt
similarity index 94%
rename from features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/changeroles/ChangeRolesStateProvider.kt
rename to features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesStateProvider.kt
index 2b62508d97..2041c0f447 100644
--- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/changeroles/ChangeRolesStateProvider.kt
+++ b/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesStateProvider.kt
@@ -5,11 +5,9 @@
* Please see LICENSE files in the repository root for full details.
*/
-package io.element.android.features.roomdetails.impl.rolesandpermissions.changeroles
+package io.element.android.features.changeroommemberroles.impl
import androidx.compose.ui.tooling.preview.PreviewParameterProvider
-import io.element.android.features.roomdetails.impl.members.aRoomMember
-import io.element.android.features.roomdetails.impl.members.aRoomMemberList
import io.element.android.libraries.architecture.AsyncAction
import io.element.android.libraries.designsystem.theme.components.SearchBarResultState
import io.element.android.libraries.matrix.api.core.UserId
@@ -18,6 +16,8 @@ import io.element.android.libraries.matrix.api.room.RoomMembershipState
import io.element.android.libraries.matrix.api.user.MatrixUser
import io.element.android.libraries.matrix.ui.components.aMatrixUser
import io.element.android.libraries.matrix.ui.components.aMatrixUserList
+import io.element.android.libraries.previewutils.room.aRoomMember
+import io.element.android.libraries.previewutils.room.aRoomMemberList
import kotlinx.collections.immutable.ImmutableList
import kotlinx.collections.immutable.persistentListOf
import kotlinx.collections.immutable.toImmutableList
@@ -44,6 +44,7 @@ class ChangeRolesStateProvider : PreviewParameterProvider {
aChangeRolesStateWithSelectedUsers().copy(savingState = AsyncAction.Success(Unit)),
aChangeRolesStateWithSelectedUsers().copy(savingState = AsyncAction.Failure(Exception("boom"))),
aChangeRolesStateWithOwners(),
+ aChangeRolesStateWithOwners().copy(role = RoomMember.Role.Owner(isCreator = false)),
)
}
diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/changeroles/ChangeRolesView.kt b/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesView.kt
similarity index 91%
rename from features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/changeroles/ChangeRolesView.kt
rename to features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesView.kt
index 2fdf1dcf1b..c6b70a82f4 100644
--- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/changeroles/ChangeRolesView.kt
+++ b/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesView.kt
@@ -1,11 +1,11 @@
/*
- * Copyright 2024 New Vector Ltd.
+ * 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.roomdetails.impl.rolesandpermissions.changeroles
+package io.element.android.features.changeroommemberroles.impl
import androidx.activity.compose.BackHandler
import androidx.compose.animation.AnimatedVisibility
@@ -40,7 +40,6 @@ import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.unit.dp
import io.element.android.compound.theme.ElementTheme
-import io.element.android.features.roomdetails.impl.R
import io.element.android.libraries.architecture.AsyncAction
import io.element.android.libraries.designsystem.components.ProgressDialog
import io.element.android.libraries.designsystem.components.async.AsyncActionView
@@ -87,7 +86,6 @@ fun ChangeRolesView(
BackHandler(enabled = !state.isSearchActive) {
state.eventSink(ChangeRolesEvent.Exit)
}
-
Box(modifier = modifier) {
Scaffold(
modifier = Modifier
@@ -97,9 +95,10 @@ fun ChangeRolesView(
AnimatedVisibility(visible = !state.isSearchActive) {
TopAppBar(
titleStr = when (state.role) {
+ is RoomMember.Role.Owner -> stringResource(R.string.screen_room_change_role_owners_title)
RoomMember.Role.Admin -> stringResource(R.string.screen_room_change_role_administrators_title)
RoomMember.Role.Moderator -> stringResource(R.string.screen_room_change_role_moderators_title)
- is RoomMember.Role.Owner, RoomMember.Role.User -> error("This should never be reached")
+ RoomMember.Role.User -> error("This should never be reached")
},
navigationIcon = {
BackButton(onClick = { state.eventSink(ChangeRolesEvent.Exit) })
@@ -188,14 +187,26 @@ fun ChangeRolesView(
when (state.savingState) {
is AsyncAction.Confirming -> {
- if (state.role == RoomMember.Role.Admin) {
- // Confirm adding new admins dialogs
- ConfirmationDialog(
- title = stringResource(R.string.screen_room_change_role_confirm_add_admin_title),
- content = stringResource(R.string.screen_room_change_role_confirm_add_admin_description),
- onSubmitClick = { state.eventSink(ChangeRolesEvent.Save) },
- onDismiss = { state.eventSink(ChangeRolesEvent.ClearError) }
- )
+ when (state.role) {
+ is RoomMember.Role.Owner -> {
+ ConfirmationDialog(
+ title = stringResource(R.string.screen_room_change_role_confirm_change_owners_title),
+ content = stringResource(R.string.screen_room_change_role_confirm_change_owners_description),
+ submitText = stringResource(CommonStrings.action_continue),
+ onSubmitClick = { state.eventSink(ChangeRolesEvent.Save) },
+ onDismiss = { state.eventSink(ChangeRolesEvent.ClearError) },
+ destructiveSubmit = true,
+ )
+ }
+ is RoomMember.Role.Admin -> {
+ ConfirmationDialog(
+ title = stringResource(R.string.screen_room_change_role_confirm_add_admin_title),
+ content = stringResource(R.string.screen_room_change_role_confirm_add_admin_description),
+ onSubmitClick = { state.eventSink(ChangeRolesEvent.Save) },
+ onDismiss = { state.eventSink(ChangeRolesEvent.ClearError) }
+ )
+ }
+ else -> Unit // No confirmation needed for Moderator or User roles
}
}
is AsyncAction.Loading -> {
diff --git a/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRoomMemberRolesRootNode.kt b/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRoomMemberRolesRootNode.kt
new file mode 100644
index 0000000000..881e93e934
--- /dev/null
+++ b/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRoomMemberRolesRootNode.kt
@@ -0,0 +1,82 @@
+/*
+ * 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.changeroommemberroles.impl
+
+import android.os.Parcelable
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import com.bumble.appyx.core.composable.Children
+import com.bumble.appyx.core.modality.BuildContext
+import com.bumble.appyx.core.navigation.model.permanent.PermanentNavModel
+import com.bumble.appyx.core.node.Node
+import com.bumble.appyx.core.node.ParentNode
+import com.bumble.appyx.core.plugin.Plugin
+import dagger.assisted.Assisted
+import dagger.assisted.AssistedInject
+import io.element.android.anvilannotations.ContributesNode
+import io.element.android.appnav.di.RoomComponentFactory
+import io.element.android.features.changeroommemberroes.api.ChangeRoomMemberRolesEntryPoint
+import io.element.android.features.changeroommemberroes.api.ChangeRoomMemberRolesListType
+import io.element.android.libraries.architecture.NodeInputs
+import io.element.android.libraries.architecture.createNode
+import io.element.android.libraries.architecture.inputs
+import io.element.android.libraries.di.DaggerComponentOwner
+import io.element.android.libraries.di.SessionScope
+import io.element.android.libraries.matrix.api.core.RoomId
+import io.element.android.libraries.matrix.api.room.JoinedRoom
+import kotlinx.parcelize.Parcelize
+
+@ContributesNode(SessionScope::class)
+class ChangeRoomMemberRolesRootNode @AssistedInject constructor(
+ @Assisted buildContext: BuildContext,
+ @Assisted plugins: List,
+ roomComponentFactory: RoomComponentFactory,
+) : ParentNode(
+ navModel = PermanentNavModel(
+ navTargets = setOf(NavTarget.Root),
+ savedStateMap = buildContext.savedStateMap,
+ ),
+ buildContext = buildContext,
+ plugins = plugins,
+), DaggerComponentOwner, ChangeRoomMemberRolesEntryPoint.NodeProxy {
+ sealed interface NavTarget : Parcelable {
+ @Parcelize
+ object Root : NavTarget
+ }
+
+ data class Inputs(
+ val joinedRoom: JoinedRoom,
+ val listType: ChangeRoomMemberRolesListType,
+ ) : NodeInputs
+
+ private val inputs = inputs()
+
+ override val daggerComponent = roomComponentFactory.create(inputs.joinedRoom)
+
+ override fun resolve(navTarget: NavTarget, buildContext: BuildContext): Node {
+ return when (navTarget) {
+ NavTarget.Root -> {
+ createNode(
+ buildContext = buildContext,
+ plugins = listOf(ChangeRolesNode.Inputs(listType = inputs.listType)),
+ )
+ }
+ }
+ }
+
+ @Composable
+ override fun View(modifier: Modifier) {
+ Children(modifier = modifier, navModel = navModel)
+ }
+
+ override val roomId: RoomId = inputs.joinedRoom.roomId
+
+ override suspend fun waitForRoleChanged() {
+ waitForChildAttached().waitForRoleChanged()
+ }
+}
diff --git a/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/DefaultChangeRoomMemberRolesEntyPoint.kt b/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/DefaultChangeRoomMemberRolesEntyPoint.kt
new file mode 100644
index 0000000000..4dc26cde8e
--- /dev/null
+++ b/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/DefaultChangeRoomMemberRolesEntyPoint.kt
@@ -0,0 +1,47 @@
+/*
+ * 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.changeroommemberroles.impl
+
+import com.bumble.appyx.core.modality.BuildContext
+import com.bumble.appyx.core.node.Node
+import com.squareup.anvil.annotations.ContributesBinding
+import io.element.android.features.changeroommemberroes.api.ChangeRoomMemberRolesEntryPoint
+import io.element.android.features.changeroommemberroes.api.ChangeRoomMemberRolesListType
+import io.element.android.libraries.architecture.createNode
+import io.element.android.libraries.di.SessionScope
+import io.element.android.libraries.matrix.api.room.JoinedRoom
+import javax.inject.Inject
+
+@ContributesBinding(SessionScope::class)
+class DefaultChangeRoomMemberRolesEntyPoint @Inject constructor() : ChangeRoomMemberRolesEntryPoint {
+ override fun builder(parentNode: Node, buildContext: BuildContext): ChangeRoomMemberRolesEntryPoint.Builder {
+ return object : ChangeRoomMemberRolesEntryPoint.Builder {
+ private lateinit var changeRoomMemberRolesListType: ChangeRoomMemberRolesListType
+ private lateinit var room: JoinedRoom
+
+ override fun room(room: JoinedRoom): ChangeRoomMemberRolesEntryPoint.Builder {
+ this.room = room
+ return this
+ }
+
+ override fun listType(changeRoomMemberRolesListType: ChangeRoomMemberRolesListType): ChangeRoomMemberRolesEntryPoint.Builder {
+ this.changeRoomMemberRolesListType = changeRoomMemberRolesListType
+ return this
+ }
+
+ override fun build(): Node {
+ return parentNode.createNode(
+ buildContext = buildContext,
+ plugins = listOf(
+ ChangeRoomMemberRolesRootNode.Inputs(joinedRoom = room, listType = changeRoomMemberRolesListType),
+ )
+ )
+ }
+ }
+ }
+}
diff --git a/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/RoomMemberListDataSource.kt b/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/RoomMemberListDataSource.kt
new file mode 100644
index 0000000000..184a7058c7
--- /dev/null
+++ b/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/RoomMemberListDataSource.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.features.changeroommemberroles.impl
+
+import io.element.android.libraries.core.bool.orFalse
+import io.element.android.libraries.core.coroutine.CoroutineDispatchers
+import io.element.android.libraries.matrix.api.room.BaseRoom
+import io.element.android.libraries.matrix.api.room.RoomMember
+import io.element.android.libraries.matrix.api.room.roomMembers
+import kotlinx.coroutines.withContext
+import javax.inject.Inject
+
+class RoomMemberListDataSource @Inject constructor(
+ private val room: BaseRoom,
+ private val coroutineDispatchers: CoroutineDispatchers,
+) {
+ suspend fun search(query: String): List = withContext(coroutineDispatchers.io) {
+ val roomMembersState = room.membersStateFlow.value
+ val activeRoomMembers = roomMembersState.roomMembers()
+ ?.filter { it.membership.isActive() }
+ .orEmpty()
+ val filteredMembers = if (query.isBlank()) {
+ activeRoomMembers
+ } else {
+ activeRoomMembers.filter { member ->
+ member.userId.value.contains(query, ignoreCase = true) ||
+ member.displayName?.contains(query, ignoreCase = true).orFalse()
+ }
+ }
+ filteredMembers
+ }
+}
diff --git a/features/changeroommemberroles/impl/src/main/res/values/localazy.xml b/features/changeroommemberroles/impl/src/main/res/values/localazy.xml
new file mode 100644
index 0000000000..6e4918cde2
--- /dev/null
+++ b/features/changeroommemberroles/impl/src/main/res/values/localazy.xml
@@ -0,0 +1,70 @@
+
+
+ "Admins only"
+ "Ban people"
+ "Remove messages"
+ "Everyone"
+ "Invite people and accept requests to join"
+ "Member moderation"
+ "Messages and content"
+ "Admins and moderators"
+ "Remove people and decline requests to join"
+ "Change room avatar"
+ "Room details"
+ "Change room name"
+ "Change room topic"
+ "Send messages"
+ "Edit Admins"
+ "You will not be able to undo this action. You are promoting the user to have the same power level as you."
+ "Add Admin?"
+ "You will not be able to undo this action. You are transferring the ownership to the selected users. Once you leave this will be permanent."
+ "Transfer ownership?"
+ "Demote"
+ "You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the room it will be impossible to regain privileges."
+ "Demote yourself?"
+ "%1$s (Pending)"
+ "(Pending)"
+ "Admins automatically have moderator privileges"
+ "Owners automatically have admin privileges."
+ "Edit Moderators"
+ "Choose Owners"
+ "Admins"
+ "Moderators"
+ "Members"
+ "You have unsaved changes."
+ "Save changes?"
+ "There are no banned users in this room."
+
+ - "%1$d person"
+ - "%1$d people"
+
+ "Ban from room"
+ "Only remove member"
+ "Unban"
+ "They will be able to join this room again if invited."
+ "Unban user"
+ "Banned"
+ "Members"
+ "Pending"
+ "Admin"
+ "Moderator"
+ "Owner"
+ "Room members"
+ "Unbanning %1$s"
+ "Admins"
+ "Admins and owners"
+ "Change my role"
+ "Demote to member"
+ "Demote to moderator"
+ "Member moderation"
+ "Messages and content"
+ "Moderators"
+ "Owners"
+ "Permissions"
+ "Reset permissions"
+ "Once you reset permissions, you will lose the current settings."
+ "Reset permissions?"
+ "Roles"
+ "Room details"
+ "Roles and permissions"
+
diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/changeroles/ChangeRolesPresenterTest.kt b/features/changeroommemberroles/impl/src/test/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesPresenterTest.kt
similarity index 91%
rename from features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/changeroles/ChangeRolesPresenterTest.kt
rename to features/changeroommemberroles/impl/src/test/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesPresenterTest.kt
index e9c48cb209..a5b2da566c 100644
--- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/changeroles/ChangeRolesPresenterTest.kt
+++ b/features/changeroommemberroles/impl/src/test/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesPresenterTest.kt
@@ -1,19 +1,17 @@
/*
- * Copyright 2024 New Vector Ltd.
+ * 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.roomdetails.impl.rolesandpermissions.changeroles
+package io.element.android.features.changeroommemberroles.impl
import app.cash.molecule.RecompositionMode
import app.cash.molecule.moleculeFlow
import app.cash.turbine.test
import com.google.common.truth.Truth.assertThat
import im.vector.app.features.analytics.plan.RoomModeration
-import io.element.android.features.roomdetails.impl.members.aRoomMember
-import io.element.android.features.roomdetails.impl.members.aRoomMemberList
import io.element.android.libraries.architecture.AsyncAction
import io.element.android.libraries.core.coroutine.CoroutineDispatchers
import io.element.android.libraries.designsystem.theme.components.SearchBarResultState
@@ -28,14 +26,18 @@ import io.element.android.libraries.matrix.test.A_USER_ID_3
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.room.aRoomInfo
+import io.element.android.libraries.matrix.test.room.aRoomMember
import io.element.android.libraries.matrix.test.room.defaultRoomPowerLevelValues
+import io.element.android.libraries.previewutils.room.aRoomMemberList
import io.element.android.services.analytics.test.FakeAnalyticsService
import io.element.android.tests.testutils.testCoroutineDispatchers
import kotlinx.collections.immutable.persistentMapOf
import kotlinx.collections.immutable.toPersistentList
+import kotlinx.collections.immutable.toPersistentMap
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runTest
import org.junit.Test
+import kotlin.collections.plus
class ChangeRolesPresenterTest {
@Test
@@ -430,6 +432,44 @@ class ChangeRolesPresenterTest {
}
}
+ @Test
+ fun `present - Save will ask for confirmation before assigning new owners`() = runTest {
+ val analyticsService = FakeAnalyticsService()
+ val room = FakeJoinedRoom(
+ updateUserRoleResult = { Result.success(Unit) },
+ baseRoom = FakeBaseRoom(updateMembersResult = { Result.success(Unit) }),
+ ).apply {
+ givenRoomMembersState(RoomMembersState.Ready(aRoomMemberList()))
+ givenRoomInfo(
+ aRoomInfo(
+ roomCreators = listOf(sessionId),
+ roomPowerLevels = roomPowerLevelsWithRoles(
+ A_USER_ID to RoomMember.Role.Owner(isCreator = false),
+ A_USER_ID_2 to RoomMember.Role.Admin,
+ )
+ )
+ )
+ }
+ val presenter = createChangeRolesPresenter(
+ role = RoomMember.Role.Owner(isCreator = false),
+ room = room,
+ analyticsService = analyticsService
+ )
+ moleculeFlow(RecompositionMode.Immediate) {
+ presenter.present()
+ }.test {
+ skipItems(1)
+ val initialState = awaitItem()
+ assertThat(initialState.selectedUsers).hasSize(1)
+
+ initialState.eventSink(ChangeRolesEvent.UserSelectionToggled(MatrixUser(A_USER_ID_2)))
+
+ awaitItem().eventSink(ChangeRolesEvent.Save)
+
+ assertThat(awaitItem().savingState.isConfirming()).isTrue()
+ }
+ }
+
@Test
fun `present - Save will just save the changes if the current user is a room creator and the selected users are not`() = runTest {
val analyticsService = FakeAnalyticsService()
@@ -510,9 +550,16 @@ class ChangeRolesPresenterTest {
)
}
+ private fun roomPowerLevelsWithRoles(vararg pairs: Pair): RoomPowerLevels {
+ return RoomPowerLevels(
+ values = defaultRoomPowerLevelValues(),
+ users = pairs.associate { (userId, role) -> userId to role.powerLevel }.toPersistentMap()
+ )
+ }
+
private fun TestScope.createChangeRolesPresenter(
role: RoomMember.Role = RoomMember.Role.Admin,
- room: FakeJoinedRoom = FakeJoinedRoom(),
+ room: FakeJoinedRoom = FakeJoinedRoom(baseRoom = FakeBaseRoom(updateMembersResult = {})),
dispatchers: CoroutineDispatchers = testCoroutineDispatchers(),
analyticsService: FakeAnalyticsService = FakeAnalyticsService(),
): ChangeRolesPresenter {
diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/changeroles/ChangeRolesViewTest.kt b/features/changeroommemberroles/impl/src/test/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesViewTest.kt
similarity index 94%
rename from features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/changeroles/ChangeRolesViewTest.kt
rename to features/changeroommemberroles/impl/src/test/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesViewTest.kt
index e5aedece1e..fb1dc38aae 100644
--- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/changeroles/ChangeRolesViewTest.kt
+++ b/features/changeroommemberroles/impl/src/test/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesViewTest.kt
@@ -1,11 +1,11 @@
/*
- * Copyright 2024 New Vector Ltd.
+ * 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.roomdetails.impl.rolesandpermissions.changeroles
+package io.element.android.features.changeroommemberroles.impl
import androidx.activity.ComponentActivity
import androidx.compose.ui.test.junit4.AndroidComposeTestRule
@@ -54,20 +54,6 @@ class ChangeRolesViewTest {
assertThat(exception).isNotNull()
}
- @Test
- fun `passing an 'Owner' role throws an exception`() {
- val exception = runCatchingExceptions {
- rule.setChangeRolesContent(
- state = aChangeRolesState(
- role = RoomMember.Role.Owner(isCreator = true),
- eventSink = EnsureNeverCalledWithParam(),
- ),
- )
- }.exceptionOrNull()
-
- assertThat(exception).isNotNull()
- }
-
@Test
fun `back key - with search active toggles the search`() {
val eventsRecorder = EventsRecorder()
@@ -192,6 +178,23 @@ class ChangeRolesViewTest {
eventsRecorder.assertSingle(ChangeRolesEvent.Save)
}
+ @Test
+ fun `save owners confirmation dialog - continue saves the changes`() {
+ val eventsRecorder = EventsRecorder()
+ rule.setChangeRolesContent(
+ state = aChangeRolesState(
+ role = RoomMember.Role.Owner(isCreator = false),
+ isSearchActive = true,
+ savingState = AsyncAction.ConfirmingNoParams,
+ eventSink = eventsRecorder,
+ ),
+ )
+
+ rule.clickOn(CommonStrings.action_continue)
+
+ eventsRecorder.assertSingle(ChangeRolesEvent.Save)
+ }
+
@Test
fun `save confirmation dialog - cancel removes the dialog`() {
val eventsRecorder = EventsRecorder()
diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/changeroles/MembersByRoleTest.kt b/features/changeroommemberroles/impl/src/test/kotlin/io/element/android/features/changeroommemberroles/impl/MembersByRoleTest.kt
similarity index 98%
rename from features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/changeroles/MembersByRoleTest.kt
rename to features/changeroommemberroles/impl/src/test/kotlin/io/element/android/features/changeroommemberroles/impl/MembersByRoleTest.kt
index 8241f4b781..a2e134f807 100644
--- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/changeroles/MembersByRoleTest.kt
+++ b/features/changeroommemberroles/impl/src/test/kotlin/io/element/android/features/changeroommemberroles/impl/MembersByRoleTest.kt
@@ -5,7 +5,7 @@
* Please see LICENSE files in the repository root for full details.
*/
-package io.element.android.features.roomdetails.impl.rolesandpermissions.changeroles
+package io.element.android.features.changeroommemberroles.impl
import com.google.common.truth.Truth.assertThat
import io.element.android.libraries.matrix.api.room.RoomMember
diff --git a/features/home/impl/build.gradle.kts b/features/home/impl/build.gradle.kts
index 88184bcbcd..972c0817e2 100644
--- a/features/home/impl/build.gradle.kts
+++ b/features/home/impl/build.gradle.kts
@@ -54,6 +54,7 @@ dependencies {
implementation(libs.haze)
implementation(libs.haze.materials)
implementation(projects.features.reportroom.api)
+ implementation(projects.features.changeroommemberroles.api)
api(projects.features.home.api)
testImplementation(libs.androidx.compose.ui.test.junit)
diff --git a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/HomeFlowNode.kt b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/HomeFlowNode.kt
index 4a7e5eb258..54c58d7387 100644
--- a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/HomeFlowNode.kt
+++ b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/HomeFlowNode.kt
@@ -11,7 +11,11 @@ import android.app.Activity
import android.os.Parcelable
import androidx.activity.compose.LocalActivity
import androidx.compose.runtime.Composable
+import androidx.compose.runtime.collectAsState
+import androidx.compose.runtime.getValue
import androidx.compose.ui.Modifier
+import androidx.lifecycle.Lifecycle
+import androidx.lifecycle.coroutineScope
import com.bumble.appyx.core.lifecycle.subscribe
import com.bumble.appyx.core.modality.BuildContext
import com.bumble.appyx.core.node.Node
@@ -19,31 +23,43 @@ import com.bumble.appyx.core.node.node
import com.bumble.appyx.core.plugin.Plugin
import com.bumble.appyx.core.plugin.plugins
import com.bumble.appyx.navmodel.backstack.BackStack
+import com.bumble.appyx.navmodel.backstack.operation.pop
import com.bumble.appyx.navmodel.backstack.operation.push
import dagger.assisted.Assisted
import dagger.assisted.AssistedInject
import im.vector.app.features.analytics.plan.MobileScreen
import io.element.android.anvilannotations.ContributesNode
+import io.element.android.features.changeroommemberroes.api.ChangeRoomMemberRolesEntryPoint
+import io.element.android.features.changeroommemberroes.api.ChangeRoomMemberRolesListType
import io.element.android.features.home.api.HomeEntryPoint
import io.element.android.features.home.impl.components.RoomListMenuAction
import io.element.android.features.home.impl.model.RoomListRoomSummary
+import io.element.android.features.home.impl.roomlist.RoomListEvents
import io.element.android.features.invite.api.InviteData
import io.element.android.features.invite.api.acceptdecline.AcceptDeclineInviteView
import io.element.android.features.invite.api.declineandblock.DeclineInviteAndBlockEntryPoint
+import io.element.android.features.leaveroom.api.LeaveRoomRenderer
import io.element.android.features.logout.api.direct.DirectLogoutView
import io.element.android.features.reportroom.api.ReportRoomEntryPoint
import io.element.android.libraries.architecture.BackstackView
import io.element.android.libraries.architecture.BaseFlowNode
+import io.element.android.libraries.architecture.appyx.launchMolecule
import io.element.android.libraries.deeplink.usecase.InviteFriendsUseCase
import io.element.android.libraries.di.SessionScope
+import io.element.android.libraries.matrix.api.MatrixClient
import io.element.android.libraries.matrix.api.core.RoomId
import io.element.android.services.analytics.api.AnalyticsService
+import kotlinx.coroutines.NonCancellable
+import kotlinx.coroutines.launch
+import kotlinx.coroutines.runBlocking
+import kotlinx.coroutines.withContext
import kotlinx.parcelize.Parcelize
@ContributesNode(SessionScope::class)
class HomeFlowNode @AssistedInject constructor(
@Assisted buildContext: BuildContext,
@Assisted plugins: List,
+ private val matrixClient: MatrixClient,
private val presenter: HomePresenter,
private val inviteFriendsUseCase: InviteFriendsUseCase,
private val analyticsService: AnalyticsService,
@@ -51,6 +67,8 @@ class HomeFlowNode @AssistedInject constructor(
private val directLogoutView: DirectLogoutView,
private val reportRoomEntryPoint: ReportRoomEntryPoint,
private val declineInviteAndBlockUserEntryPoint: DeclineInviteAndBlockEntryPoint,
+ private val changeRoomMemberRolesEntryPoint: ChangeRoomMemberRolesEntryPoint,
+ private val leaveRoomRenderer: LeaveRoomRenderer,
) : BaseFlowNode(
backstack = BackStack(
initialElement = NavTarget.Root,
@@ -59,12 +77,25 @@ class HomeFlowNode @AssistedInject constructor(
buildContext = buildContext,
plugins = plugins
) {
- init {
+ private val stateFlow = launchMolecule { presenter.present() }
+
+ override fun onBuilt() {
+ super.onBuilt()
lifecycle.subscribe(
onResume = {
analyticsService.screen(MobileScreen(screenName = MobileScreen.ScreenName.Home))
}
)
+ whenChildAttached { commonLifecycle: Lifecycle,
+ changeRoomMemberRolesNode: ChangeRoomMemberRolesEntryPoint.NodeProxy ->
+ commonLifecycle.coroutineScope.launch {
+ changeRoomMemberRolesNode.waitForRoleChanged()
+ withContext(NonCancellable) {
+ backstack.pop()
+ onNewOwnersSelected(changeRoomMemberRolesNode.roomId)
+ }
+ }
+ }
}
sealed interface NavTarget : Parcelable {
@@ -76,6 +107,9 @@ class HomeFlowNode @AssistedInject constructor(
@Parcelize
data class DeclineInviteAndBlockUser(val inviteData: InviteData) : NavTarget
+
+ @Parcelize
+ data class SelectNewOwnersWhenLeavingRoom(val roomId: RoomId) : NavTarget
}
private fun onRoomClick(roomId: RoomId) {
@@ -121,11 +155,18 @@ class HomeFlowNode @AssistedInject constructor(
}
}
+ private fun onSelectNewOwnersWhenLeavingRoom(roomId: RoomId) {
+ backstack.push(NavTarget.SelectNewOwnersWhenLeavingRoom(roomId))
+ }
+
+ private fun onNewOwnersSelected(roomId: RoomId) {
+ stateFlow.value.roomListState.eventSink(RoomListEvents.LeaveRoom(roomId, needsConfirmation = false))
+ }
+
fun rootNode(buildContext: BuildContext): Node {
return node(buildContext) { modifier ->
- val state = presenter.present()
+ val state by stateFlow.collectAsState()
val activity = requireNotNull(LocalActivity.current)
-
HomeView(
homeState = state,
onRoomClick = this::onRoomClick,
@@ -138,15 +179,22 @@ class HomeFlowNode @AssistedInject constructor(
onReportRoomClick = this::onReportRoomClick,
onDeclineInviteAndBlockUser = this::onDeclineInviteAndBlockUserClick,
modifier = modifier,
- ) {
- acceptDeclineInviteView.Render(
- state = state.roomListState.acceptDeclineInviteState,
- onAcceptInviteSuccess = this::onRoomClick,
- onDeclineInviteSuccess = { },
- modifier = Modifier
- )
- }
-
+ acceptDeclineInviteView = {
+ acceptDeclineInviteView.Render(
+ state = state.roomListState.acceptDeclineInviteState,
+ onAcceptInviteSuccess = this::onRoomClick,
+ onDeclineInviteSuccess = { },
+ modifier = Modifier
+ )
+ },
+ leaveRoomView = {
+ leaveRoomRenderer.Render(
+ state = state.roomListState.leaveRoomState,
+ onSelectNewOwners = this::onSelectNewOwnersWhenLeavingRoom,
+ modifier = Modifier
+ )
+ }
+ )
directLogoutView.Render(state.directLogoutState)
}
}
@@ -160,6 +208,13 @@ class HomeFlowNode @AssistedInject constructor(
return when (navTarget) {
is NavTarget.ReportRoom -> reportRoomEntryPoint.createNode(this, buildContext, navTarget.roomId)
is NavTarget.DeclineInviteAndBlockUser -> declineInviteAndBlockUserEntryPoint.createNode(this, buildContext, navTarget.inviteData)
+ is NavTarget.SelectNewOwnersWhenLeavingRoom -> {
+ val room = runBlocking { matrixClient.getJoinedRoom(navTarget.roomId) } ?: error("Room ${navTarget.roomId} not found")
+ changeRoomMemberRolesEntryPoint.builder(this, buildContext)
+ .room(room)
+ .listType(ChangeRoomMemberRolesListType.SelectNewOwnersWhenLeaving)
+ .build()
+ }
NavTarget.Root -> rootNode(buildContext)
}
}
diff --git a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/HomeView.kt b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/HomeView.kt
index 30a5c86243..97ba7a62fd 100644
--- a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/HomeView.kt
+++ b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/HomeView.kt
@@ -49,7 +49,6 @@ import io.element.android.features.home.impl.roomlist.RoomListDeclineInviteMenu
import io.element.android.features.home.impl.roomlist.RoomListEvents
import io.element.android.features.home.impl.roomlist.RoomListState
import io.element.android.features.home.impl.search.RoomListSearchView
-import io.element.android.features.leaveroom.api.LeaveRoomView
import io.element.android.features.networkmonitor.api.ui.ConnectivityIndicatorContainer
import io.element.android.libraries.androidutils.throttler.FirstThrottler
import io.element.android.libraries.designsystem.preview.ElementPreview
@@ -78,8 +77,9 @@ fun HomeView(
onMenuActionClick: (RoomListMenuAction) -> Unit,
onReportRoomClick: (roomId: RoomId) -> Unit,
onDeclineInviteAndBlockUser: (roomSummary: RoomListRoomSummary) -> Unit,
- modifier: Modifier = Modifier,
acceptDeclineInviteView: @Composable () -> Unit,
+ modifier: Modifier = Modifier,
+ leaveRoomView: @Composable () -> Unit,
) {
val state: RoomListState = homeState.roomListState
val coroutineScope = rememberCoroutineScope()
@@ -108,7 +108,7 @@ fun HomeView(
)
}
- LeaveRoomView(state = state.leaveRoomState)
+ leaveRoomView()
HomeScaffold(
state = homeState,
@@ -304,5 +304,6 @@ internal fun HomeViewPreview(@PreviewParameter(HomeStateProvider::class) state:
onMenuActionClick = {},
onDeclineInviteAndBlockUser = {},
acceptDeclineInviteView = {},
+ leaveRoomView = {}
)
}
diff --git a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/roomlist/RoomListContextMenu.kt b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/roomlist/RoomListContextMenu.kt
index 2a6cfee502..f729667e53 100644
--- a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/roomlist/RoomListContextMenu.kt
+++ b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/roomlist/RoomListContextMenu.kt
@@ -60,7 +60,7 @@ fun RoomListContextMenu(
},
onLeaveRoomClick = {
eventSink(RoomListEvents.HideContextMenu)
- eventSink(RoomListEvents.LeaveRoom(contextMenu.roomId))
+ eventSink(RoomListEvents.LeaveRoom(contextMenu.roomId, needsConfirmation = true))
},
onFavoriteChange = { isFavorite ->
eventSink(RoomListEvents.SetRoomIsFavorite(contextMenu.roomId, isFavorite))
diff --git a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/roomlist/RoomListEvents.kt b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/roomlist/RoomListEvents.kt
index 4ba37d810b..02df2cac35 100644
--- a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/roomlist/RoomListEvents.kt
+++ b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/roomlist/RoomListEvents.kt
@@ -24,7 +24,7 @@ sealed interface RoomListEvents {
sealed interface ContextMenuEvents : RoomListEvents
data object HideContextMenu : ContextMenuEvents
- data class LeaveRoom(val roomId: RoomId) : ContextMenuEvents
+ data class LeaveRoom(val roomId: RoomId, val needsConfirmation: Boolean) : ContextMenuEvents
data class MarkAsRead(val roomId: RoomId) : ContextMenuEvents
data class MarkAsUnread(val roomId: RoomId) : ContextMenuEvents
data class SetRoomIsFavorite(val roomId: RoomId, val isFavorite: Boolean) : ContextMenuEvents
diff --git a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/roomlist/RoomListPresenter.kt b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/roomlist/RoomListPresenter.kt
index 45e4dd4238..1cab846021 100644
--- a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/roomlist/RoomListPresenter.kt
+++ b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/roomlist/RoomListPresenter.kt
@@ -31,7 +31,7 @@ import io.element.android.features.invite.api.SeenInvitesStore
import io.element.android.features.invite.api.acceptdecline.AcceptDeclineInviteEvents.AcceptInvite
import io.element.android.features.invite.api.acceptdecline.AcceptDeclineInviteEvents.DeclineInvite
import io.element.android.features.invite.api.acceptdecline.AcceptDeclineInviteState
-import io.element.android.features.leaveroom.api.LeaveRoomEvent.ShowConfirmation
+import io.element.android.features.leaveroom.api.LeaveRoomEvent
import io.element.android.features.leaveroom.api.LeaveRoomState
import io.element.android.libraries.architecture.AsyncData
import io.element.android.libraries.architecture.Presenter
@@ -127,7 +127,9 @@ class RoomListPresenter @Inject constructor(
is RoomListEvents.HideContextMenu -> {
contextMenu.value = RoomListState.ContextMenu.Hidden
}
- is RoomListEvents.LeaveRoom -> leaveRoomState.eventSink(ShowConfirmation(event.roomId))
+ is RoomListEvents.LeaveRoom -> {
+ leaveRoomState.eventSink(LeaveRoomEvent.LeaveRoom(event.roomId, needsConfirmation = event.needsConfirmation))
+ }
is RoomListEvents.SetRoomIsFavorite -> coroutineScope.setRoomIsFavorite(event.roomId, event.isFavorite)
is RoomListEvents.MarkAsRead -> coroutineScope.markAsRead(event.roomId)
is RoomListEvents.MarkAsUnread -> coroutineScope.markAsUnread(event.roomId)
diff --git a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/roomlist/RoomListStateProvider.kt b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/roomlist/RoomListStateProvider.kt
index b28ff0cce9..55fc8948f6 100644
--- a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/roomlist/RoomListStateProvider.kt
+++ b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/roomlist/RoomListStateProvider.kt
@@ -18,8 +18,8 @@ import io.element.android.features.home.impl.search.RoomListSearchState
import io.element.android.features.home.impl.search.aRoomListSearchState
import io.element.android.features.invite.api.acceptdecline.AcceptDeclineInviteEvents
import io.element.android.features.invite.api.acceptdecline.AcceptDeclineInviteState
+import io.element.android.features.leaveroom.api.LeaveRoomEvent
import io.element.android.features.leaveroom.api.LeaveRoomState
-import io.element.android.features.leaveroom.api.aLeaveRoomState
import io.element.android.libraries.architecture.AsyncAction
import io.element.android.libraries.designsystem.components.avatar.AvatarData
import io.element.android.libraries.designsystem.components.avatar.AvatarSize
@@ -70,6 +70,12 @@ internal fun aRoomListState(
eventSink = eventSink,
)
+internal fun aLeaveRoomState(
+ eventSink: (LeaveRoomEvent) -> Unit = {}
+) = object : LeaveRoomState {
+ override val eventSink: (LeaveRoomEvent) -> Unit = eventSink
+}
+
internal fun anAcceptDeclineInviteState(
acceptAction: AsyncAction = AsyncAction.Uninitialized,
declineAction: AsyncAction = AsyncAction.Uninitialized,
diff --git a/features/home/impl/src/main/res/values-da/translations.xml b/features/home/impl/src/main/res/values-da/translations.xml
index ae32f7ab66..274b5a9d60 100644
--- a/features/home/impl/src/main/res/values-da/translations.xml
+++ b/features/home/impl/src/main/res/values-da/translations.xml
@@ -12,6 +12,8 @@
"Dit nøglelager er ikke synkroniseret"
"For at sikre, at du aldrig går glip af et vigtigt opkald, skal du ændre dine indstillinger til at tillade underretninger i fuld skærm, når din telefon er låst."
"Gør din opkaldsoplevelse bedre"
+ "Samtaler"
+ "Klynger"
"Er du sikker på, at du vil afvise invitationen til at deltage i %1$s?"
"Afvis invitation"
"Er du sikker på, at du vil afvise denne private samtale med %1$s?"
diff --git a/features/home/impl/src/main/res/values-en-rUS/translations.xml b/features/home/impl/src/main/res/values-en-rUS/translations.xml
index 365a3cd3da..fe1100aa32 100644
--- a/features/home/impl/src/main/res/values-en-rUS/translations.xml
+++ b/features/home/impl/src/main/res/values-en-rUS/translations.xml
@@ -1,5 +1,7 @@
+ "Disable battery optimization for this app, to make sure all notifications are received."
+ "Disable optimization"
"Favorites"
"You can add a chat to your favorites in the chat settings.
For now, you can deselect filters in order to see your other chats"
diff --git a/features/home/impl/src/main/res/values-fa/translations.xml b/features/home/impl/src/main/res/values-fa/translations.xml
index ef436cbe90..f923a35813 100644
--- a/features/home/impl/src/main/res/values-fa/translations.xml
+++ b/features/home/impl/src/main/res/values-fa/translations.xml
@@ -1,10 +1,16 @@
+ "از کار انداختن بهینهسازی باتری برای این کاره برای اطمینان از گرفتن همهٔ آگاهیها."
+ "از کار انداختن بهینه سازی"
+ "آگاهیها نمیرسند؟"
+ "بازگردانی تاریخچهٔ پیامها و هویت رمزنگاشتهتان با کلید بازیابی در صورت از دست دادن همهٔ افزارههای موجودتان."
"برپایی بازیابی"
"برپایی بازیابی"
"ورود کلید بازیابیتان"
"ذخیرهساز کلیدتان از همگام بودن در آمده"
"بهبود تجریهٔ تماستان"
+ "گپها"
+ "فضاها"
"مطمئنید که میخواهید دعوت پیوستن به %1$s را رد کنید؟"
"رد دعوت"
"مطمئنید که میخواهید این گپ خصوصی با %1$s را رد کنید؟"
@@ -34,6 +40,6 @@
"گپها"
"علامتگذاری به عنوان خوانده شده"
"نشان به ناخوانده"
- "به نظر می رسد از دستگاه جدیدی استفاده می کنید. برای دسترسی به پیام های رمزگذاری شده خود، با دستگاه دیگری این دستگاه را تأیید کنید."
+ "گویا از افزارهای جدید استفاده میکنید. تأیید با افزارهای دیگر برای دسترسی به پیامهای رمزنگاری شدهتان."
"تأیید کنید که خودتانید"
diff --git a/features/home/impl/src/main/res/values-fi/translations.xml b/features/home/impl/src/main/res/values-fi/translations.xml
index b4676f6d55..de509cd462 100644
--- a/features/home/impl/src/main/res/values-fi/translations.xml
+++ b/features/home/impl/src/main/res/values-fi/translations.xml
@@ -2,6 +2,7 @@
"Ota tämän sovelluksen akunkäytön optimointi pois käytöstä varmistaaksesi, että kaikki ilmoitukset tulevat perille."
"Ota optimointi pois käytöstä"
+ "Eikö ilmoitukset tule perille?"
"Palauta kryptografinen identiteettisi ja viestihistoriasi palautusavaimella, mikäli menetät pääsyn kaikkiin laitteisiisi."
"Ota palautus käyttöön"
"Ota palautus käyttöön tilisi suojaamiseksi"
@@ -20,6 +21,7 @@
"Tämä on kertaluonteinen prosessi, kiitos odottamisesta."
"Tiliä määritetään."
"Luo uusi keskustelu tai huone"
+ "Tyhjennä suodattimet"
"Aloita lähettämällä viesti jollekin."
"Sinulla ei ole vielä keskusteluja."
"Suosikit"
diff --git a/features/home/impl/src/main/res/values-nl/translations.xml b/features/home/impl/src/main/res/values-nl/translations.xml
index fc207da016..40e0a07481 100644
--- a/features/home/impl/src/main/res/values-nl/translations.xml
+++ b/features/home/impl/src/main/res/values-nl/translations.xml
@@ -1,5 +1,6 @@
+ "Optimalisatie uitschakelen"
"Herstel je cryptografische identiteit en berichtengeschiedenis met een herstelsleutel voor als je al je bestaande apparaten kwijt bent."
"Herstelmogelijkheid instellen"
"Herstel instellen om je account te beschermen"
diff --git a/features/home/impl/src/main/res/values-uk/translations.xml b/features/home/impl/src/main/res/values-uk/translations.xml
index 57d750d029..a16eb058fe 100644
--- a/features/home/impl/src/main/res/values-uk/translations.xml
+++ b/features/home/impl/src/main/res/values-uk/translations.xml
@@ -12,6 +12,8 @@
"Ваше сховище ключів не синхронізовано"
"Щоб ніколи не пропустити важливий виклик, змініть налаштування, щоб увімкнути повноекранні сповіщення, коли телефон заблоковано."
"Покращуйте досвід дзвінків"
+ "Бесіди"
+ "Простори"
"Ви впевнені, що хочете відхилити запрошення приєднатися до %1$s?"
"Відхилити запрошення"
"Ви дійсно хочете відмовитися від приватної бесіди з %1$s?"
@@ -21,6 +23,7 @@
"Це одноразовий процес, дякую за очікування."
"Налаштування облікового запису."
"Створити нову розмову або кімнату"
+ "Очистити фільтри"
"Почніть з обміну повідомленнями з кимось."
"Ще немає бесід."
"Обране"
diff --git a/features/home/impl/src/main/res/values/localazy.xml b/features/home/impl/src/main/res/values/localazy.xml
index f2d2e9c441..4918260281 100644
--- a/features/home/impl/src/main/res/values/localazy.xml
+++ b/features/home/impl/src/main/res/values/localazy.xml
@@ -1,7 +1,7 @@
- "Disable battery optimization for this app, to make sure all notifications are received."
- "Disable optimization"
+ "Disable battery optimisation for this app, to make sure all notifications are received."
+ "Disable optimisation"
"Notifications not arriving?"
"Recover your cryptographic identity and message history with a recovery key if you have lost all your existing devices."
"Set up recovery"
diff --git a/features/home/impl/src/test/kotlin/io/element/android/features/home/impl/roomlist/RoomListContextMenuTest.kt b/features/home/impl/src/test/kotlin/io/element/android/features/home/impl/roomlist/RoomListContextMenuTest.kt
index b336178d22..66753da035 100644
--- a/features/home/impl/src/test/kotlin/io/element/android/features/home/impl/roomlist/RoomListContextMenuTest.kt
+++ b/features/home/impl/src/test/kotlin/io/element/android/features/home/impl/roomlist/RoomListContextMenuTest.kt
@@ -73,7 +73,7 @@ class RoomListContextMenuTest {
eventsRecorder.assertList(
listOf(
RoomListEvents.HideContextMenu,
- RoomListEvents.LeaveRoom(contextMenu.roomId),
+ RoomListEvents.LeaveRoom(contextMenu.roomId, needsConfirmation = true),
)
)
}
diff --git a/features/home/impl/src/test/kotlin/io/element/android/features/home/impl/roomlist/RoomListPresenterTest.kt b/features/home/impl/src/test/kotlin/io/element/android/features/home/impl/roomlist/RoomListPresenterTest.kt
index bc0163585f..11db1b80a5 100644
--- a/features/home/impl/src/test/kotlin/io/element/android/features/home/impl/roomlist/RoomListPresenterTest.kt
+++ b/features/home/impl/src/test/kotlin/io/element/android/features/home/impl/roomlist/RoomListPresenterTest.kt
@@ -27,7 +27,6 @@ import io.element.android.features.invite.api.acceptdecline.AcceptDeclineInviteS
import io.element.android.features.invite.test.InMemorySeenInvitesStore
import io.element.android.features.leaveroom.api.LeaveRoomEvent
import io.element.android.features.leaveroom.api.LeaveRoomState
-import io.element.android.features.leaveroom.api.aLeaveRoomState
import io.element.android.libraries.architecture.Presenter
import io.element.android.libraries.dateformatter.api.DateFormatter
import io.element.android.libraries.dateformatter.test.FakeDateFormatter
@@ -319,8 +318,8 @@ class RoomListPresenterTest {
presenter.present()
}.test {
val initialState = awaitItem()
- initialState.eventSink(RoomListEvents.LeaveRoom(A_ROOM_ID))
- leaveRoomEventsRecorder.assertSingle(LeaveRoomEvent.ShowConfirmation(A_ROOM_ID))
+ initialState.eventSink(RoomListEvents.LeaveRoom(A_ROOM_ID, needsConfirmation = true))
+ leaveRoomEventsRecorder.assertSingle(LeaveRoomEvent.LeaveRoom(A_ROOM_ID, needsConfirmation = true))
cancelAndIgnoreRemainingEvents()
}
}
diff --git a/features/home/impl/src/test/kotlin/io/element/android/features/home/impl/roomlist/RoomListViewTest.kt b/features/home/impl/src/test/kotlin/io/element/android/features/home/impl/roomlist/RoomListViewTest.kt
index 0465926abc..e29b2cf580 100644
--- a/features/home/impl/src/test/kotlin/io/element/android/features/home/impl/roomlist/RoomListViewTest.kt
+++ b/features/home/impl/src/test/kotlin/io/element/android/features/home/impl/roomlist/RoomListViewTest.kt
@@ -289,7 +289,8 @@ private fun AndroidComposeTestRule.setRoomL
onMenuActionClick = onMenuActionClick,
onDeclineInviteAndBlockUser = onDeclineInviteAndBlockUser,
onReportRoomClick = onReportRoomClick,
- acceptDeclineInviteView = { },
+ acceptDeclineInviteView = {},
+ leaveRoomView = {},
)
}
}
diff --git a/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/acceptdecline/AcceptDeclineInvitePresenter.kt b/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/acceptdecline/AcceptDeclineInvitePresenter.kt
index 6dd75761d3..163912392e 100644
--- a/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/acceptdecline/AcceptDeclineInvitePresenter.kt
+++ b/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/acceptdecline/AcceptDeclineInvitePresenter.kt
@@ -56,15 +56,11 @@ class AcceptDeclineInvitePresenter @Inject constructor(
)
}
}
- is InternalAcceptDeclineInviteEvents.CancelDeclineInvite -> {
- declinedAction.value = AsyncAction.Uninitialized
- }
-
- is InternalAcceptDeclineInviteEvents.DismissAcceptError -> {
+ is InternalAcceptDeclineInviteEvents.ClearAcceptActionState -> {
acceptedAction.value = AsyncAction.Uninitialized
}
- is InternalAcceptDeclineInviteEvents.DismissDeclineError -> {
+ is InternalAcceptDeclineInviteEvents.ClearDeclineActionState -> {
declinedAction.value = AsyncAction.Uninitialized
}
}
diff --git a/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/acceptdecline/AcceptDeclineInviteView.kt b/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/acceptdecline/AcceptDeclineInviteView.kt
index 9c672594e0..46cc496508 100644
--- a/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/acceptdecline/AcceptDeclineInviteView.kt
+++ b/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/acceptdecline/AcceptDeclineInviteView.kt
@@ -35,9 +35,12 @@ fun AcceptDeclineInviteView(
Box(modifier = modifier) {
AsyncActionView(
async = state.acceptAction,
- onSuccess = onAcceptInviteSuccess,
+ onSuccess = { roomId ->
+ state.eventSink(InternalAcceptDeclineInviteEvents.ClearAcceptActionState)
+ onAcceptInviteSuccess(roomId)
+ },
onErrorDismiss = {
- state.eventSink(InternalAcceptDeclineInviteEvents.DismissAcceptError)
+ state.eventSink(InternalAcceptDeclineInviteEvents.ClearAcceptActionState)
},
errorTitle = {
stringResource(CommonStrings.common_something_went_wrong)
@@ -52,9 +55,12 @@ fun AcceptDeclineInviteView(
)
AsyncActionView(
async = state.declineAction,
- onSuccess = onDeclineInviteSuccess,
+ onSuccess = { roomId ->
+ state.eventSink(InternalAcceptDeclineInviteEvents.ClearDeclineActionState)
+ onDeclineInviteSuccess(roomId)
+ },
onErrorDismiss = {
- state.eventSink(InternalAcceptDeclineInviteEvents.DismissDeclineError)
+ state.eventSink(InternalAcceptDeclineInviteEvents.ClearDeclineActionState)
},
errorTitle = {
stringResource(CommonStrings.common_something_went_wrong)
@@ -78,7 +84,7 @@ fun AcceptDeclineInviteView(
)
},
onDismissClick = {
- state.eventSink(InternalAcceptDeclineInviteEvents.CancelDeclineInvite)
+ state.eventSink(InternalAcceptDeclineInviteEvents.ClearDeclineActionState)
}
)
}
diff --git a/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/acceptdecline/InternalAcceptDeclineInviteEvents.kt b/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/acceptdecline/InternalAcceptDeclineInviteEvents.kt
index 4423430432..df05b69645 100644
--- a/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/acceptdecline/InternalAcceptDeclineInviteEvents.kt
+++ b/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/acceptdecline/InternalAcceptDeclineInviteEvents.kt
@@ -10,7 +10,6 @@ package io.element.android.features.invite.impl.acceptdecline
import io.element.android.features.invite.api.acceptdecline.AcceptDeclineInviteEvents
sealed interface InternalAcceptDeclineInviteEvents : AcceptDeclineInviteEvents {
- data object CancelDeclineInvite : InternalAcceptDeclineInviteEvents
- data object DismissAcceptError : InternalAcceptDeclineInviteEvents
- data object DismissDeclineError : InternalAcceptDeclineInviteEvents
+ data object ClearAcceptActionState : InternalAcceptDeclineInviteEvents
+ data object ClearDeclineActionState : InternalAcceptDeclineInviteEvents
}
diff --git a/features/invite/impl/src/test/kotlin/io/element/android/features/invite/impl/acceptdecline/AcceptDeclineInvitePresenterTest.kt b/features/invite/impl/src/test/kotlin/io/element/android/features/invite/impl/acceptdecline/AcceptDeclineInvitePresenterTest.kt
index c8a427bea6..6a5c225acb 100644
--- a/features/invite/impl/src/test/kotlin/io/element/android/features/invite/impl/acceptdecline/AcceptDeclineInvitePresenterTest.kt
+++ b/features/invite/impl/src/test/kotlin/io/element/android/features/invite/impl/acceptdecline/AcceptDeclineInvitePresenterTest.kt
@@ -56,7 +56,7 @@ class AcceptDeclineInvitePresenterTest {
awaitItem().also { state ->
assertThat(state.declineAction).isEqualTo(ConfirmingDeclineInvite(inviteData, false))
state.eventSink(
- InternalAcceptDeclineInviteEvents.CancelDeclineInvite
+ InternalAcceptDeclineInviteEvents.ClearDeclineActionState
)
}
awaitItem().also { state ->
@@ -90,7 +90,7 @@ class AcceptDeclineInvitePresenterTest {
awaitItem().also { state ->
assertThat(state.declineAction).isInstanceOf(AsyncAction.Failure::class.java)
state.eventSink(
- InternalAcceptDeclineInviteEvents.DismissDeclineError
+ InternalAcceptDeclineInviteEvents.ClearDeclineActionState
)
}
awaitItem().also { state ->
@@ -154,7 +154,7 @@ class AcceptDeclineInvitePresenterTest {
awaitItem().also { state ->
assertThat(state.acceptAction).isInstanceOf(AsyncAction.Failure::class.java)
state.eventSink(
- InternalAcceptDeclineInviteEvents.DismissAcceptError
+ InternalAcceptDeclineInviteEvents.ClearAcceptActionState
)
}
awaitItem().also { state ->
diff --git a/features/joinroom/impl/src/main/res/values-da/translations.xml b/features/joinroom/impl/src/main/res/values-da/translations.xml
index c27ff74145..ac260472e0 100644
--- a/features/joinroom/impl/src/main/res/values-da/translations.xml
+++ b/features/joinroom/impl/src/main/res/values-da/translations.xml
@@ -18,6 +18,7 @@
"Deltag i rummet"
"Du skal muligvis være inviteret eller være medlem af en klynge for at deltage."
"Send anmodning om at deltage"
+ "Tilladte tegn %1$d af %2$d"
"Besked (valgfrit)"
"Du vil modtage en invitation til at deltage i rummet, hvis din anmodning accepteres."
"Anmodning om at deltage sendt"
diff --git a/features/joinroom/impl/src/main/res/values-fi/translations.xml b/features/joinroom/impl/src/main/res/values-fi/translations.xml
index 2a25587398..9e3c6af16f 100644
--- a/features/joinroom/impl/src/main/res/values-fi/translations.xml
+++ b/features/joinroom/impl/src/main/res/values-fi/translations.xml
@@ -18,6 +18,7 @@
"Liity huoneeseen"
"Saatat tarvita kutsun tai olla tilan jäsen, jotta voit liittyä."
"Lähetä liittymispyyntö"
+ "Sallitut merkit %1$d / %2$d"
"Viesti (valinnainen)"
"Saat kutsun liittyä huoneeseen, jos pyyntösi hyväksytään."
"Liittymispyyntö lähetetty"
diff --git a/features/joinroom/impl/src/main/res/values-fr/translations.xml b/features/joinroom/impl/src/main/res/values-fr/translations.xml
index 0652b0c16d..5c200b62dd 100644
--- a/features/joinroom/impl/src/main/res/values-fr/translations.xml
+++ b/features/joinroom/impl/src/main/res/values-fr/translations.xml
@@ -12,19 +12,20 @@
"Refuser l’invitation et bloquer"
"Refuser et bloquer"
"Rejoindre le salon a échoué."
- "Ce salon est accessible uniquement sur invitation ou il peut y avoir des restrictions d’accès au niveau du Space."
+ "Ce salon est accessible uniquement sur invitation ou il peut y avoir des restrictions d’accès au niveau de l’espace."
"Oublier ce salon"
"Vous avez besoin d’une invitation pour rejoindre ce salon"
"Rejoindre"
- "Il est possible que vous deviez être invité ou être membre d’un Space pour pouvoir rejoindre le salon."
+ "Il est possible que vous deviez être invité ou être membre d’un Espace pour pouvoir rejoindre le salon."
"Demander à joindre"
+ "Caractères autorisés %1$d sur %2$d"
"Message (facultatif)"
"Vous recevrez une invitation à rejoindre le salon si votre demande est acceptée."
"Demande de rejoindre le salon envoyée"
"Impossible d’afficher l’aperçu du salon. Cela peut être dû à des problèmes de réseau ou de serveur."
"Impossible d’afficher l’aperçu de ce salon"
- "Les Spaces ne sont pas encore pris en charge par %1$s. Vous pouvez voir les Spaces sur le Web."
- "Les Spaces ne sont pas encore pris en charge"
+ "Les Espaces ne sont pas encore pris en charge par %1$s. Vous pouvez voir les Espaces sur le Web."
+ "Les Espaces ne sont pas encore pris en charge"
"Cliquez ci-dessous et un administrateur sera prévenu. Une fois votre demande approuvée, pour pourrez rejoindre la discussion."
"Vous devez être un membre du salon pour pouvoir lire l’historique des messages."
"Vous souhaitez rejoindre ce salon ?"
diff --git a/features/joinroom/impl/src/main/res/values-nl/translations.xml b/features/joinroom/impl/src/main/res/values-nl/translations.xml
index f7d19d9fd1..3132629fc0 100644
--- a/features/joinroom/impl/src/main/res/values-nl/translations.xml
+++ b/features/joinroom/impl/src/main/res/values-nl/translations.xml
@@ -1,6 +1,8 @@
+ "Reden: %1$s."
"Verzoek annuleren"
+ "Deze kamer vergeten"
"Toetreden tot de kamer"
"Klop om deel te nemen"
"Bericht (optioneel)"
diff --git a/features/joinroom/impl/src/main/res/values-pl/translations.xml b/features/joinroom/impl/src/main/res/values-pl/translations.xml
index 56f16fc475..21042e2903 100644
--- a/features/joinroom/impl/src/main/res/values-pl/translations.xml
+++ b/features/joinroom/impl/src/main/res/values-pl/translations.xml
@@ -18,6 +18,7 @@
"Dołącz do pokoju"
"Aby dołączyć, musisz uzyskać zaproszenie lub być członkiem danej przestrzeni."
"Wyślij prośbę o dołączenie"
+ "Dozwolone znaki %1$d z %2$d"
"Wiadomość (opcjonalne)"
"Otrzymasz zaproszenie dołączenia do pokoju, jeśli prośba zostanie zaakceptowana."
"Wysłano prośbę o dołączenie"
diff --git a/features/joinroom/impl/src/main/res/values-uk/translations.xml b/features/joinroom/impl/src/main/res/values-uk/translations.xml
index 72a085042f..6bdd39807b 100644
--- a/features/joinroom/impl/src/main/res/values-uk/translations.xml
+++ b/features/joinroom/impl/src/main/res/values-uk/translations.xml
@@ -18,6 +18,7 @@
"Приєднатися до кімнати"
"Можливо, вам знадобиться отримати запрошення або стати учасником простору, щоб приєднатися."
"Постукати, щоб приєднатися"
+ "Дозволені символи %1$d з %2$d"
"Повідомлення (необов\'язково)"
"Ви отримаєте запрошення приєднатися до кімнати, якщо ваш запит буде прийнятий."
"Запит на приєднання надіслано"
diff --git a/features/leaveroom/api/build.gradle.kts b/features/leaveroom/api/build.gradle.kts
index e988d87c23..48d78b6e7e 100644
--- a/features/leaveroom/api/build.gradle.kts
+++ b/features/leaveroom/api/build.gradle.kts
@@ -14,7 +14,5 @@ android {
dependencies {
implementation(projects.libraries.architecture)
- implementation(projects.libraries.designsystem)
- implementation(projects.libraries.uiStrings)
implementation(projects.libraries.matrix.api)
}
diff --git a/features/leaveroom/api/src/main/kotlin/io/element/android/features/leaveroom/api/LeaveRoomEvent.kt b/features/leaveroom/api/src/main/kotlin/io/element/android/features/leaveroom/api/LeaveRoomEvent.kt
index 11f1c5d20c..aaa7753aba 100644
--- a/features/leaveroom/api/src/main/kotlin/io/element/android/features/leaveroom/api/LeaveRoomEvent.kt
+++ b/features/leaveroom/api/src/main/kotlin/io/element/android/features/leaveroom/api/LeaveRoomEvent.kt
@@ -9,9 +9,6 @@ package io.element.android.features.leaveroom.api
import io.element.android.libraries.matrix.api.core.RoomId
-sealed interface LeaveRoomEvent {
- data class ShowConfirmation(val roomId: RoomId) : LeaveRoomEvent
- data object HideConfirmation : LeaveRoomEvent
- data class LeaveRoom(val roomId: RoomId) : LeaveRoomEvent
- data object HideError : LeaveRoomEvent
+interface LeaveRoomEvent {
+ data class LeaveRoom(val roomId: RoomId, val needsConfirmation: Boolean) : LeaveRoomEvent
}
diff --git a/features/leaveroom/api/src/main/kotlin/io/element/android/features/leaveroom/api/LeaveRoomRenderer.kt b/features/leaveroom/api/src/main/kotlin/io/element/android/features/leaveroom/api/LeaveRoomRenderer.kt
new file mode 100644
index 0000000000..8bd6fe830b
--- /dev/null
+++ b/features/leaveroom/api/src/main/kotlin/io/element/android/features/leaveroom/api/LeaveRoomRenderer.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.features.leaveroom.api
+
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import io.element.android.libraries.matrix.api.core.RoomId
+
+interface LeaveRoomRenderer {
+ @Composable
+ fun Render(
+ state: LeaveRoomState,
+ onSelectNewOwners: (RoomId) -> Unit,
+ modifier: Modifier,
+ )
+}
diff --git a/features/leaveroom/api/src/main/kotlin/io/element/android/features/leaveroom/api/LeaveRoomState.kt b/features/leaveroom/api/src/main/kotlin/io/element/android/features/leaveroom/api/LeaveRoomState.kt
index cf8f8da9b6..28cee237a1 100644
--- a/features/leaveroom/api/src/main/kotlin/io/element/android/features/leaveroom/api/LeaveRoomState.kt
+++ b/features/leaveroom/api/src/main/kotlin/io/element/android/features/leaveroom/api/LeaveRoomState.kt
@@ -7,29 +7,6 @@
package io.element.android.features.leaveroom.api
-import io.element.android.libraries.matrix.api.core.RoomId
-
-data class LeaveRoomState(
- val confirmation: Confirmation,
- val progress: Progress,
- val error: Error,
- val eventSink: (LeaveRoomEvent) -> Unit,
-) {
- sealed interface Confirmation {
- data object Hidden : Confirmation
- data class Dm(val roomId: RoomId) : Confirmation
- data class Generic(val roomId: RoomId) : Confirmation
- data class PrivateRoom(val roomId: RoomId) : Confirmation
- data class LastUserInRoom(val roomId: RoomId) : Confirmation
- }
-
- sealed interface Progress {
- data object Hidden : Progress
- data object Shown : Progress
- }
-
- sealed interface Error {
- data object Hidden : Error
- data object Shown : Error
- }
+interface LeaveRoomState {
+ val eventSink: (LeaveRoomEvent) -> Unit
}
diff --git a/features/leaveroom/api/src/main/kotlin/io/element/android/features/leaveroom/api/LeaveRoomStateProvider.kt b/features/leaveroom/api/src/main/kotlin/io/element/android/features/leaveroom/api/LeaveRoomStateProvider.kt
deleted file mode 100644
index e5bcbfcf45..0000000000
--- a/features/leaveroom/api/src/main/kotlin/io/element/android/features/leaveroom/api/LeaveRoomStateProvider.kt
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright 2023, 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.features.leaveroom.api
-
-import androidx.compose.ui.tooling.preview.PreviewParameterProvider
-import io.element.android.libraries.matrix.api.core.RoomId
-
-class LeaveRoomStateProvider : PreviewParameterProvider {
- override val values: Sequence
- get() = sequenceOf(
- aLeaveRoomState(
- confirmation = LeaveRoomState.Confirmation.Hidden,
- progress = LeaveRoomState.Progress.Hidden,
- error = LeaveRoomState.Error.Hidden,
- ),
- aLeaveRoomState(
- confirmation = LeaveRoomState.Confirmation.Generic(roomId = A_ROOM_ID),
- progress = LeaveRoomState.Progress.Hidden,
- error = LeaveRoomState.Error.Hidden,
- ),
- aLeaveRoomState(
- confirmation = LeaveRoomState.Confirmation.PrivateRoom(roomId = A_ROOM_ID),
- progress = LeaveRoomState.Progress.Hidden,
- error = LeaveRoomState.Error.Hidden,
- ),
- aLeaveRoomState(
- confirmation = LeaveRoomState.Confirmation.LastUserInRoom(roomId = A_ROOM_ID),
- progress = LeaveRoomState.Progress.Hidden,
- error = LeaveRoomState.Error.Hidden,
- ),
- aLeaveRoomState(
- confirmation = LeaveRoomState.Confirmation.Hidden,
- progress = LeaveRoomState.Progress.Shown,
- error = LeaveRoomState.Error.Hidden,
- ),
- aLeaveRoomState(
- confirmation = LeaveRoomState.Confirmation.Hidden,
- progress = LeaveRoomState.Progress.Hidden,
- error = LeaveRoomState.Error.Shown,
- ),
- aLeaveRoomState(
- confirmation = LeaveRoomState.Confirmation.Dm(roomId = A_ROOM_ID),
- progress = LeaveRoomState.Progress.Hidden,
- error = LeaveRoomState.Error.Hidden,
- ),
- )
-}
-
-private val A_ROOM_ID = RoomId("!aRoomId:aDomain")
-
-fun aLeaveRoomState(
- confirmation: LeaveRoomState.Confirmation = LeaveRoomState.Confirmation.Hidden,
- progress: LeaveRoomState.Progress = LeaveRoomState.Progress.Hidden,
- error: LeaveRoomState.Error = LeaveRoomState.Error.Hidden,
- eventSink: (LeaveRoomEvent) -> Unit = {},
-) = LeaveRoomState(
- confirmation = confirmation,
- progress = progress,
- error = error,
- eventSink = eventSink,
-)
diff --git a/features/leaveroom/api/src/main/kotlin/io/element/android/features/leaveroom/api/LeaveRoomView.kt b/features/leaveroom/api/src/main/kotlin/io/element/android/features/leaveroom/api/LeaveRoomView.kt
deleted file mode 100644
index 28321d1b99..0000000000
--- a/features/leaveroom/api/src/main/kotlin/io/element/android/features/leaveroom/api/LeaveRoomView.kt
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * Copyright 2023, 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.features.leaveroom.api
-
-import androidx.annotation.StringRes
-import androidx.compose.foundation.layout.Box
-import androidx.compose.foundation.layout.size
-import androidx.compose.runtime.Composable
-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.libraries.designsystem.components.ProgressDialog
-import io.element.android.libraries.designsystem.components.dialogs.ConfirmationDialog
-import io.element.android.libraries.designsystem.components.dialogs.ErrorDialog
-import io.element.android.libraries.designsystem.preview.ElementPreview
-import io.element.android.libraries.designsystem.preview.PreviewsDayNight
-import io.element.android.libraries.matrix.api.core.RoomId
-import io.element.android.libraries.ui.strings.CommonStrings
-
-@Composable
-fun LeaveRoomView(
- state: LeaveRoomState
-) {
- LeaveRoomConfirmationDialog(state)
- LeaveRoomProgressDialog(state)
- LeaveRoomErrorDialog(state)
-}
-
-@Composable
-private fun LeaveRoomConfirmationDialog(
- state: LeaveRoomState,
-) {
- when (state.confirmation) {
- is LeaveRoomState.Confirmation.Hidden -> {}
-
- is LeaveRoomState.Confirmation.Dm -> LeaveRoomConfirmationDialog(
- text = R.string.leave_room_alert_private_subtitle,
- roomId = state.confirmation.roomId,
- isDm = false,
- eventSink = state.eventSink,
- )
-
- is LeaveRoomState.Confirmation.PrivateRoom -> LeaveRoomConfirmationDialog(
- text = R.string.leave_room_alert_private_subtitle,
- roomId = state.confirmation.roomId,
- isDm = false,
- eventSink = state.eventSink,
- )
-
- is LeaveRoomState.Confirmation.LastUserInRoom -> LeaveRoomConfirmationDialog(
- text = R.string.leave_room_alert_empty_subtitle,
- roomId = state.confirmation.roomId,
- isDm = false,
- eventSink = state.eventSink,
- )
-
- is LeaveRoomState.Confirmation.Generic -> LeaveRoomConfirmationDialog(
- text = R.string.leave_room_alert_subtitle,
- roomId = state.confirmation.roomId,
- isDm = false,
- eventSink = state.eventSink,
- )
- }
-}
-
-@Composable
-private fun LeaveRoomConfirmationDialog(
- @StringRes text: Int,
- roomId: RoomId,
- isDm: Boolean,
- eventSink: (LeaveRoomEvent) -> Unit,
-) {
- ConfirmationDialog(
- title = stringResource(if (isDm) CommonStrings.action_leave_conversation else CommonStrings.action_leave_room),
- content = stringResource(text),
- submitText = stringResource(CommonStrings.action_leave),
- onSubmitClick = { eventSink(LeaveRoomEvent.LeaveRoom(roomId)) },
- onDismiss = { eventSink(LeaveRoomEvent.HideConfirmation) },
- )
-}
-
-@Composable
-private fun LeaveRoomProgressDialog(
- state: LeaveRoomState,
-) {
- when (state.progress) {
- is LeaveRoomState.Progress.Hidden -> {}
- is LeaveRoomState.Progress.Shown -> ProgressDialog(
- text = stringResource(CommonStrings.common_leaving_room),
- )
- }
-}
-
-@Composable
-private fun LeaveRoomErrorDialog(
- state: LeaveRoomState,
-) {
- when (state.error) {
- is LeaveRoomState.Error.Hidden -> {}
- is LeaveRoomState.Error.Shown -> ErrorDialog(
- content = stringResource(CommonStrings.error_unknown),
- onSubmit = { state.eventSink(LeaveRoomEvent.HideError) }
- )
- }
-}
-
-@PreviewsDayNight
-@Composable
-internal fun LeaveRoomViewPreview(
- @PreviewParameter(LeaveRoomStateProvider::class) state: LeaveRoomState
-) = ElementPreview {
- Box(
- modifier = Modifier.size(300.dp, 300.dp),
- propagateMinConstraints = true,
- ) {
- LeaveRoomView(state = state)
- }
-}
diff --git a/features/leaveroom/api/src/main/res/values-da/translations.xml b/features/leaveroom/api/src/main/res/values-da/translations.xml
index 5a1364be0c..af49087cf7 100644
--- a/features/leaveroom/api/src/main/res/values-da/translations.xml
+++ b/features/leaveroom/api/src/main/res/values-da/translations.xml
@@ -3,5 +3,8 @@
"Er du sikker på, at du vil forlade denne samtale? Denne samtale er ikke offentlig, og du kan ikke deltage igen uden en invitation."
"Er du sikker på, at du vil forlade dette rum? Du er den eneste person her. Hvis du går, vil ingen kunne tilslutte sig det i fremtiden, heller ikke dig."
"Er du sikker på, at du vil forlade dette rum? Rummet er ikke offentligt, så du vil ikke kunne deltage igen uden en invitation."
+ "Vælg ejere"
+ "Du er den eneste ejer af dette rum. Du skal overføre ejerskabet til en anden, før du forlader rummet."
+ "Overdrag ejerskab"
"Er du sikker på, at du ønsker at forlade rummet?"
diff --git a/features/leaveroom/api/src/main/res/values-et/translations.xml b/features/leaveroom/api/src/main/res/values-et/translations.xml
index e0636a37f8..78fff92fe6 100644
--- a/features/leaveroom/api/src/main/res/values-et/translations.xml
+++ b/features/leaveroom/api/src/main/res/values-et/translations.xml
@@ -3,5 +3,8 @@
"Kas sa oled kindel, et soovid sellest vestlusest lahkuda? See vestlus pole avalik ja uuesti liitumiseks vajad kutset."
"Kas sa oled kindel, et soovid sellest jututoast lahkuda? Sa oled siin viimane osaleja ja peale sinu lahkumist ei saa keegi enam liituda, isegi sina mitte."
"Kas sa oled kindel, et soovid sellest jututoast lahkuda? See jututuba pole avalik ja uuesti liitumiseks vajad kutset."
+ "Vali omanikud"
+ "Sa oled selle jututoa ainus omanik. Enne jututoast lahkumist pead omandi üle andma kellelegi teisele."
+ "Anna omand üle"
"Kas sa oled kindel, et soovid sellest jututoast lahkuda?"
diff --git a/features/leaveroom/api/src/main/res/values-fa/translations.xml b/features/leaveroom/api/src/main/res/values-fa/translations.xml
index 3c5a4cddec..72a275d85c 100644
--- a/features/leaveroom/api/src/main/res/values-fa/translations.xml
+++ b/features/leaveroom/api/src/main/res/values-fa/translations.xml
@@ -1,6 +1,6 @@
- "آیا مطمئن هستید که می خواهید این اتاق را ترک کنید؟ شما تنها کسی هستید که اینجا هستید. اگر ترک کنید، هیچ کس نمی تواند در آینده به آن بپیوندد.از جمله خود شما."
- "آیا مطمئن هستید که می خواهید از این اتاق خارج شوید؟ این اتاق عمومی نیست و نمیتوانید بدون دعوت دوباره بپیوندید."
- "آیا مطمئن هستید که می خواهید اتاق را ترک کنید؟"
+ "مطمئنید که میخواهید این اتاق را ترک کنید؟ تنها فرد اینجا هستید. در صورت ترک، هیچکسی از جمله خودتان در آینده نخواهد توانست به آن بپیوندد."
+ "مطمئنید که میخواهید این اتاق را ترک کنید؟ این اتاق عمومی نبوده قادر نخواهید بود بدون دعوت دوباره بپیوندید."
+ "مطمئنید که میخواهید این اتاق را ترک کنید؟"
diff --git a/features/leaveroom/api/src/main/res/values-fr/translations.xml b/features/leaveroom/api/src/main/res/values-fr/translations.xml
index 2c801ed76a..5f75b7ae55 100644
--- a/features/leaveroom/api/src/main/res/values-fr/translations.xml
+++ b/features/leaveroom/api/src/main/res/values-fr/translations.xml
@@ -3,5 +3,8 @@
"Êtes-vous sûr de vouloir quitter cette discussion ? Vous ne pourrez pas la rejoindre à nouveau sans y être invité."
"Êtes-vous sûr de vouloir quitter ce salon ? Vous êtes la seule personne ici. Si vous partez, personne ne pourra rejoindre le salon à l’avenir, y compris vous."
"Êtes-vous sûr de vouloir quitter ce salon ? Ce salon n’est pas public et vous ne pourrez pas le rejoindre sans invitation."
+ "Choisissez les propriétaires"
+ "Vous êtes le seul propriétaire de ce salon. Vous devez en transférer la propriété à quelqu’un d’autre avant de le quitter."
+ "Transférer la propriété"
"Êtes-vous sûr de vouloir quitter le salon ?"
diff --git a/features/leaveroom/api/src/main/res/values-pl/translations.xml b/features/leaveroom/api/src/main/res/values-pl/translations.xml
index 0fd8769389..440b806311 100644
--- a/features/leaveroom/api/src/main/res/values-pl/translations.xml
+++ b/features/leaveroom/api/src/main/res/values-pl/translations.xml
@@ -3,5 +3,8 @@
"Czy na pewno chcesz opuścić tę konwersację? Konwersacja nie jest publiczna i nie będziesz mógł dołączyć ponownie bez zaproszenia."
"Jesteś pewien, że chcesz opuścić ten pokój? Jesteś tu jedyną osobą. Jeśli wyjdziesz, nikt nie będzie mógł dołączyć, w tym Ty."
"Czy na pewno chcesz opuścić ten pokój? Ten pokój nie jest publiczny i nie będziesz mógł do niego wrócić bez zaproszenia."
+ "Wybierz właścicieli"
+ "Jesteś jedynym właścicielem tego pokoju. Musisz przenieść własność na kogoś innego, zanim go opuścisz."
+ "Przenieś własność"
"Jesteś pewien, że chcesz wyjść z tego pokoju?"
diff --git a/features/leaveroom/api/src/main/res/values-sk/translations.xml b/features/leaveroom/api/src/main/res/values-sk/translations.xml
index 74ff01b541..c9eb9c45ba 100644
--- a/features/leaveroom/api/src/main/res/values-sk/translations.xml
+++ b/features/leaveroom/api/src/main/res/values-sk/translations.xml
@@ -3,5 +3,8 @@
"Ste si istí, že chcete opustiť konverzáciu?"
"Ste si istí, že chcete opustiť túto miestnosť? Ste tu jediná osoba. Ak odídete, nikto sa do nej nebude môcť v budúcnosti pripojiť, vrátane vás."
"Ste si istí, že chcete opustiť túto miestnosť? Táto miestnosť nie je verejná a bez pozvania sa do nej nebudete môcť vrátiť."
+ "Vybrať vlastníkov"
+ "Ste jediným vlastníkom tejto miestnosti. Pred opustením miestnosti musíte previesť vlastníctvo na niekoho iného."
+ "Preniesť vlastníctvo"
"Ste si istí, že chcete opustiť miestnosť?"
diff --git a/features/leaveroom/api/src/main/res/values/localazy.xml b/features/leaveroom/api/src/main/res/values/localazy.xml
index f068e772bb..5f9ab3a619 100644
--- a/features/leaveroom/api/src/main/res/values/localazy.xml
+++ b/features/leaveroom/api/src/main/res/values/localazy.xml
@@ -3,5 +3,8 @@
"Are you sure that you want to leave this conversation? This conversation is not public and you won\'t be able to rejoin without an invite."
"Are you sure that you want to leave this room? You\'re the only person here. If you leave, no one will be able to join in the future, including you."
"Are you sure that you want to leave this room? This room is not public and you won\'t be able to rejoin without an invite."
+ "Choose owners"
+ "You\'re the only owner of this room. You need to transfer ownership to someone else before you leave the room."
+ "Transfer ownership"
"Are you sure that you want to leave the room?"
diff --git a/features/leaveroom/impl/build.gradle.kts b/features/leaveroom/impl/build.gradle.kts
index d346897c75..1a31023f04 100644
--- a/features/leaveroom/impl/build.gradle.kts
+++ b/features/leaveroom/impl/build.gradle.kts
@@ -18,10 +18,12 @@ android {
setupAnvil()
dependencies {
+ api(projects.features.leaveroom.api)
implementation(projects.libraries.core)
implementation(projects.libraries.architecture)
implementation(projects.libraries.matrix.api)
- api(projects.features.leaveroom.api)
+ implementation(projects.libraries.designsystem)
+ implementation(projects.libraries.uiStrings)
testImplementation(libs.test.junit)
testImplementation(libs.coroutines.test)
diff --git a/features/leaveroom/impl/src/main/kotlin/io/element/android/features/leaveroom/impl/InternalLeaveRoomEvent.kt b/features/leaveroom/impl/src/main/kotlin/io/element/android/features/leaveroom/impl/InternalLeaveRoomEvent.kt
new file mode 100644
index 0000000000..80aaddc442
--- /dev/null
+++ b/features/leaveroom/impl/src/main/kotlin/io/element/android/features/leaveroom/impl/InternalLeaveRoomEvent.kt
@@ -0,0 +1,14 @@
+/*
+ * Copyright 2023, 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.features.leaveroom.impl
+
+import io.element.android.features.leaveroom.api.LeaveRoomEvent
+
+sealed interface InternalLeaveRoomEvent : LeaveRoomEvent {
+ data object ResetState : InternalLeaveRoomEvent
+}
diff --git a/features/leaveroom/impl/src/main/kotlin/io/element/android/features/leaveroom/impl/InternalLeaveRoomRenderer.kt b/features/leaveroom/impl/src/main/kotlin/io/element/android/features/leaveroom/impl/InternalLeaveRoomRenderer.kt
new file mode 100644
index 0000000000..254a3af1ad
--- /dev/null
+++ b/features/leaveroom/impl/src/main/kotlin/io/element/android/features/leaveroom/impl/InternalLeaveRoomRenderer.kt
@@ -0,0 +1,29 @@
+/*
+ * 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.leaveroom.impl
+
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import com.squareup.anvil.annotations.ContributesBinding
+import io.element.android.features.leaveroom.api.LeaveRoomRenderer
+import io.element.android.features.leaveroom.api.LeaveRoomState
+import io.element.android.libraries.di.SessionScope
+import io.element.android.libraries.matrix.api.core.RoomId
+import javax.inject.Inject
+
+@ContributesBinding(SessionScope::class)
+class InternalLeaveRoomRenderer @Inject constructor() : LeaveRoomRenderer {
+ @Composable
+ override fun Render(state: LeaveRoomState, onSelectNewOwners: (RoomId) -> Unit, modifier: Modifier) {
+ if (state is InternalLeaveRoomState) {
+ LeaveRoomView(state, onSelectNewOwners)
+ } else {
+ error("Unsupported state type ${state.javaClass}")
+ }
+ }
+}
diff --git a/features/leaveroom/impl/src/main/kotlin/io/element/android/features/leaveroom/impl/InternalLeaveRoomState.kt b/features/leaveroom/impl/src/main/kotlin/io/element/android/features/leaveroom/impl/InternalLeaveRoomState.kt
new file mode 100644
index 0000000000..91d5ac84c4
--- /dev/null
+++ b/features/leaveroom/impl/src/main/kotlin/io/element/android/features/leaveroom/impl/InternalLeaveRoomState.kt
@@ -0,0 +1,28 @@
+/*
+ * 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.leaveroom.impl
+
+import androidx.compose.runtime.Immutable
+import io.element.android.features.leaveroom.api.LeaveRoomEvent
+import io.element.android.features.leaveroom.api.LeaveRoomState
+import io.element.android.libraries.architecture.AsyncAction
+import io.element.android.libraries.matrix.api.core.RoomId
+
+data class InternalLeaveRoomState(
+ val leaveAction: AsyncAction,
+ override val eventSink: (LeaveRoomEvent) -> Unit
+) : LeaveRoomState
+
+@Immutable
+sealed interface Confirmation : AsyncAction.Confirming {
+ data class Dm(val roomId: RoomId) : Confirmation
+ data class Generic(val roomId: RoomId) : Confirmation
+ data class PrivateRoom(val roomId: RoomId) : Confirmation
+ data class LastUserInRoom(val roomId: RoomId) : Confirmation
+ data class LastOwnerInRoom(val roomId: RoomId) : Confirmation
+}
diff --git a/features/leaveroom/impl/src/main/kotlin/io/element/android/features/leaveroom/impl/InternalLeaveRoomStateProvider.kt b/features/leaveroom/impl/src/main/kotlin/io/element/android/features/leaveroom/impl/InternalLeaveRoomStateProvider.kt
new file mode 100644
index 0000000000..9437752c89
--- /dev/null
+++ b/features/leaveroom/impl/src/main/kotlin/io/element/android/features/leaveroom/impl/InternalLeaveRoomStateProvider.kt
@@ -0,0 +1,51 @@
+/*
+ * 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.leaveroom.impl
+
+import androidx.compose.ui.tooling.preview.PreviewParameterProvider
+import io.element.android.features.leaveroom.api.LeaveRoomEvent
+import io.element.android.libraries.architecture.AsyncAction
+import io.element.android.libraries.matrix.api.core.RoomId
+
+class InternalLeaveRoomStateProvider : PreviewParameterProvider {
+ override val values: Sequence
+ get() = sequenceOf(
+ aLeaveRoomState(),
+ aLeaveRoomState(
+ leaveAction = Confirmation.Generic(roomId = A_ROOM_ID),
+ ),
+ aLeaveRoomState(
+ leaveAction = Confirmation.PrivateRoom(roomId = A_ROOM_ID),
+ ),
+ aLeaveRoomState(
+ leaveAction = Confirmation.LastUserInRoom(roomId = A_ROOM_ID),
+ ),
+ aLeaveRoomState(
+ leaveAction = Confirmation.Dm(roomId = A_ROOM_ID),
+ ),
+ aLeaveRoomState(
+ leaveAction = Confirmation.LastOwnerInRoom(roomId = A_ROOM_ID),
+ ),
+ aLeaveRoomState(
+ leaveAction = AsyncAction.Loading,
+ ),
+ aLeaveRoomState(
+ leaveAction = AsyncAction.Failure(RuntimeException("Something went wrong")),
+ ),
+ )
+}
+
+private val A_ROOM_ID = RoomId("!aRoomId:aDomain")
+
+fun aLeaveRoomState(
+ leaveAction: AsyncAction = AsyncAction.Uninitialized,
+ eventSink: (LeaveRoomEvent) -> Unit = {},
+) = InternalLeaveRoomState(
+ leaveAction = leaveAction,
+ eventSink = eventSink,
+)
diff --git a/features/leaveroom/impl/src/main/kotlin/io/element/android/features/leaveroom/impl/LeaveRoomPresenter.kt b/features/leaveroom/impl/src/main/kotlin/io/element/android/features/leaveroom/impl/LeaveRoomPresenter.kt
index 915d65b71f..2f1bab248f 100644
--- a/features/leaveroom/impl/src/main/kotlin/io/element/android/features/leaveroom/impl/LeaveRoomPresenter.kt
+++ b/features/leaveroom/impl/src/main/kotlin/io/element/android/features/leaveroom/impl/LeaveRoomPresenter.kt
@@ -14,15 +14,17 @@ import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import io.element.android.features.leaveroom.api.LeaveRoomEvent
import io.element.android.features.leaveroom.api.LeaveRoomState
-import io.element.android.features.leaveroom.api.LeaveRoomState.Confirmation.Dm
-import io.element.android.features.leaveroom.api.LeaveRoomState.Confirmation.Generic
-import io.element.android.features.leaveroom.api.LeaveRoomState.Confirmation.LastUserInRoom
-import io.element.android.features.leaveroom.api.LeaveRoomState.Confirmation.PrivateRoom
+import io.element.android.libraries.architecture.AsyncAction
import io.element.android.libraries.architecture.Presenter
+import io.element.android.libraries.architecture.runCatchingUpdatingState
import io.element.android.libraries.core.coroutine.CoroutineDispatchers
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.BaseRoom
+import io.element.android.libraries.matrix.api.room.RoomMember
import io.element.android.libraries.matrix.api.room.isDm
+import io.element.android.libraries.matrix.api.room.powerlevels.usersWithRole
+import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.launch
import timber.log.Timber
@@ -35,71 +37,65 @@ class LeaveRoomPresenter @Inject constructor(
@Composable
override fun present(): LeaveRoomState {
val scope = rememberCoroutineScope()
- val confirmation = remember { mutableStateOf(LeaveRoomState.Confirmation.Hidden) }
- val progress = remember { mutableStateOf(LeaveRoomState.Progress.Hidden) }
- val error = remember { mutableStateOf(LeaveRoomState.Error.Hidden) }
-
- return LeaveRoomState(
- confirmation = confirmation.value,
- progress = progress.value,
- error = error.value,
+ val leaveAction = remember { mutableStateOf>(AsyncAction.Uninitialized) }
+ return InternalLeaveRoomState(
+ leaveAction = leaveAction.value,
) { event ->
when (event) {
- is LeaveRoomEvent.ShowConfirmation -> scope.launch(dispatchers.io) {
- showLeaveRoomAlert(
- matrixClient = client,
- roomId = event.roomId,
- confirmation = confirmation,
- )
- }
-
- is LeaveRoomEvent.HideConfirmation -> confirmation.value = LeaveRoomState.Confirmation.Hidden
- is LeaveRoomEvent.LeaveRoom -> scope.launch(dispatchers.io) {
- client.leaveRoom(
- roomId = event.roomId,
- confirmation = confirmation,
- progress = progress,
- error = error,
- )
- }
-
- is LeaveRoomEvent.HideError -> error.value = LeaveRoomState.Error.Hidden
+ is LeaveRoomEvent.LeaveRoom ->
+ if (event.needsConfirmation) {
+ scope.showLeaveRoomAlert(roomId = event.roomId, leaveAction = leaveAction)
+ } else {
+ scope.leaveRoom(roomId = event.roomId, leaveAction = leaveAction)
+ }
+ InternalLeaveRoomEvent.ResetState -> leaveAction.value = AsyncAction.Uninitialized
}
}
}
-}
-private suspend fun showLeaveRoomAlert(
- matrixClient: MatrixClient,
- roomId: RoomId,
- confirmation: MutableState,
-) {
- matrixClient.getRoom(roomId)?.use { room ->
- val roomInfo = room.roomInfoFlow.first()
- confirmation.value = when {
- roomInfo.isDm -> Dm(roomId)
- // If unknown, assume the room is private
- roomInfo.isPublic == null || roomInfo.isPublic == false -> PrivateRoom(roomId)
- roomInfo.joinedMembersCount == 1L -> LastUserInRoom(roomId)
- else -> Generic(roomId)
+ private fun CoroutineScope.showLeaveRoomAlert(
+ roomId: RoomId,
+ leaveAction: MutableState>,
+ ) = launch(dispatchers.io) {
+ client.getRoom(roomId)?.use { room ->
+ val roomInfo = room.roomInfoFlow.first()
+ leaveAction.value = when {
+ roomInfo.isDm -> Confirmation.Dm(roomId)
+ room.isLastOwner() && roomInfo.joinedMembersCount > 1L -> Confirmation.LastOwnerInRoom(roomId)
+ // If unknown, assume the room is private
+ roomInfo.isPublic == null || roomInfo.isPublic == false -> Confirmation.PrivateRoom(roomId)
+ roomInfo.joinedMembersCount == 1L -> Confirmation.LastUserInRoom(roomId)
+ else -> Confirmation.Generic(roomId)
+ }
+ }
+ }
+
+ private fun CoroutineScope.leaveRoom(
+ roomId: RoomId,
+ leaveAction: MutableState>,
+ ) = launch(dispatchers.io) {
+ leaveAction.runCatchingUpdatingState {
+ client.getRoom(roomId)!!.use { room ->
+ room
+ .leave()
+ .onFailure { Timber.e(it, "Error while leaving room ${room.roomId}") }
+ .getOrThrow()
+ }
+ }
+ }
+
+ private suspend fun BaseRoom.isLastOwner(): Boolean {
+ if (roomInfoFlow.value.isDm) {
+ // DMs are not owned by the user, so we can return false
+ return false
+ } else {
+ val hasPrivilegedCreatorRole = roomInfoFlow.value.privilegedCreatorRole
+ if (!hasPrivilegedCreatorRole) return false
+
+ val creators = usersWithRole(RoomMember.Role.Owner(isCreator = true)).first()
+ val superAdmins = usersWithRole(RoomMember.Role.Owner(isCreator = false)).first()
+ val owners = creators + superAdmins
+ return owners.size == 1 && owners.first().userId == sessionId
}
}
}
-
-private suspend fun MatrixClient.leaveRoom(
- roomId: RoomId,
- confirmation: MutableState,
- progress: MutableState,
- error: MutableState,
-) {
- confirmation.value = LeaveRoomState.Confirmation.Hidden
- progress.value = LeaveRoomState.Progress.Shown
- getRoom(roomId)?.use { room ->
- room.leave()
- .onFailure {
- Timber.e(it, "Error while leaving room ${room.roomId}")
- error.value = LeaveRoomState.Error.Shown
- }
- }
- progress.value = LeaveRoomState.Progress.Hidden
-}
diff --git a/features/leaveroom/impl/src/main/kotlin/io/element/android/features/leaveroom/impl/LeaveRoomView.kt b/features/leaveroom/impl/src/main/kotlin/io/element/android/features/leaveroom/impl/LeaveRoomView.kt
new file mode 100644
index 0000000000..87e4537b1a
--- /dev/null
+++ b/features/leaveroom/impl/src/main/kotlin/io/element/android/features/leaveroom/impl/LeaveRoomView.kt
@@ -0,0 +1,149 @@
+/*
+ * Copyright 2023, 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.features.leaveroom.impl
+
+import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.size
+import androidx.compose.runtime.Composable
+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.features.leaveroom.api.LeaveRoomEvent
+import io.element.android.features.leaveroom.api.R
+import io.element.android.libraries.designsystem.components.ProgressDialog
+import io.element.android.libraries.designsystem.components.async.AsyncActionView
+import io.element.android.libraries.designsystem.components.dialogs.ConfirmationDialog
+import io.element.android.libraries.designsystem.preview.ElementPreview
+import io.element.android.libraries.designsystem.preview.PreviewsDayNight
+import io.element.android.libraries.matrix.api.core.RoomId
+import io.element.android.libraries.ui.strings.CommonStrings
+
+@Suppress("LambdaParameterEventTrailing")
+@Composable
+fun LeaveRoomView(
+ state: InternalLeaveRoomState,
+ onSelectNewOwners: (RoomId) -> Unit,
+) {
+ AsyncActionView(
+ state.leaveAction,
+ onSuccess = {
+ state.eventSink(InternalLeaveRoomEvent.ResetState)
+ },
+ onErrorDismiss = {
+ state.eventSink(InternalLeaveRoomEvent.ResetState)
+ },
+ confirmationDialog = { confirmation ->
+ if (confirmation is Confirmation) {
+ LeaveRoomConfirmationDialog(
+ confirmation = confirmation,
+ eventSink = state.eventSink,
+ onSelectNewOwners = onSelectNewOwners,
+ )
+ }
+ },
+ errorTitle = { stringResource(CommonStrings.common_something_went_wrong) },
+ errorMessage = { stringResource(CommonStrings.error_network_or_server_issue) },
+ progressDialog = { LeaveRoomProgressDialog() },
+ )
+}
+
+@Composable
+private fun LeaveRoomConfirmationDialog(
+ confirmation: Confirmation,
+ eventSink: (LeaveRoomEvent) -> Unit,
+ onSelectNewOwners: (RoomId) -> Unit,
+) {
+ val defaultOnSubmitClick = { roomId: RoomId -> { eventSink(LeaveRoomEvent.LeaveRoom(roomId, needsConfirmation = false)) } }
+ val defaultDismissAction = { eventSink(InternalLeaveRoomEvent.ResetState) }
+ when (confirmation) {
+ is Confirmation.Dm -> LeaveRoomConfirmationDialog(
+ text = stringResource(R.string.leave_room_alert_private_subtitle),
+ isDm = false,
+ onSubmitClick = defaultOnSubmitClick(confirmation.roomId),
+ onDismiss = defaultDismissAction,
+ )
+
+ is Confirmation.PrivateRoom -> LeaveRoomConfirmationDialog(
+ text = stringResource(R.string.leave_room_alert_private_subtitle),
+ isDm = false,
+ onSubmitClick = defaultOnSubmitClick(confirmation.roomId),
+ onDismiss = defaultDismissAction,
+ )
+
+ is Confirmation.LastUserInRoom -> LeaveRoomConfirmationDialog(
+ text = stringResource(R.string.leave_room_alert_empty_subtitle),
+ isDm = false,
+ onSubmitClick = defaultOnSubmitClick(confirmation.roomId),
+ onDismiss = defaultDismissAction,
+ )
+
+ is Confirmation.LastOwnerInRoom -> LeaveRoomConfirmationDialog(
+ title = stringResource(R.string.leave_room_alert_select_new_owner_title),
+ text = stringResource(R.string.leave_room_alert_select_new_owner_subtitle),
+ isDm = false,
+ submitText = stringResource(R.string.leave_room_alert_select_new_owner_action),
+ destructiveSubmit = true,
+ onSubmitClick = {
+ onSelectNewOwners(confirmation.roomId)
+ eventSink(InternalLeaveRoomEvent.ResetState)
+ },
+ onDismiss = defaultDismissAction,
+ )
+
+ is Confirmation.Generic -> LeaveRoomConfirmationDialog(
+ text = stringResource(R.string.leave_room_alert_subtitle),
+ isDm = false,
+ onSubmitClick = defaultOnSubmitClick(confirmation.roomId),
+ onDismiss = defaultDismissAction,
+ )
+ }
+}
+
+@Composable
+private fun LeaveRoomConfirmationDialog(
+ isDm: Boolean,
+ text: String,
+ onSubmitClick: () -> Unit,
+ onDismiss: () -> Unit,
+ modifier: Modifier = Modifier,
+ title: String = stringResource(if (isDm) CommonStrings.action_leave_conversation else CommonStrings.action_leave_room),
+ submitText: String = stringResource(CommonStrings.action_leave),
+ destructiveSubmit: Boolean = false,
+) {
+ ConfirmationDialog(
+ title = title,
+ content = text,
+ submitText = submitText,
+ onSubmitClick = onSubmitClick,
+ onDismiss = onDismiss,
+ destructiveSubmit = destructiveSubmit,
+ modifier = modifier,
+ )
+}
+
+@Composable
+private fun LeaveRoomProgressDialog(modifier: Modifier = Modifier) {
+ ProgressDialog(
+ text = stringResource(CommonStrings.common_leaving_room),
+ modifier = modifier,
+ )
+}
+
+@PreviewsDayNight
+@Composable
+internal fun LeaveRoomViewPreview(
+ @PreviewParameter(InternalLeaveRoomStateProvider::class) state: InternalLeaveRoomState
+) = ElementPreview {
+ Box(
+ modifier = Modifier.size(300.dp, 300.dp),
+ propagateMinConstraints = true,
+ ) {
+ LeaveRoomView(state = state, onSelectNewOwners = {})
+ }
+}
diff --git a/features/leaveroom/impl/src/test/kotlin/io/element/android/features/leaveroom/impl/LeaveBaseRoomPresenterTest.kt b/features/leaveroom/impl/src/test/kotlin/io/element/android/features/leaveroom/impl/LeaveBaseRoomPresenterTest.kt
index 108c2ddb53..498edc801a 100644
--- a/features/leaveroom/impl/src/test/kotlin/io/element/android/features/leaveroom/impl/LeaveBaseRoomPresenterTest.kt
+++ b/features/leaveroom/impl/src/test/kotlin/io/element/android/features/leaveroom/impl/LeaveBaseRoomPresenterTest.kt
@@ -12,7 +12,7 @@ import app.cash.molecule.moleculeFlow
import app.cash.turbine.test
import com.google.common.truth.Truth.assertThat
import io.element.android.features.leaveroom.api.LeaveRoomEvent
-import io.element.android.features.leaveroom.api.LeaveRoomState
+import io.element.android.libraries.architecture.AsyncAction
import io.element.android.libraries.matrix.api.MatrixClient
import io.element.android.libraries.matrix.test.A_ROOM_ID
import io.element.android.libraries.matrix.test.FakeMatrixClient
@@ -23,6 +23,8 @@ 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.ExperimentalCoroutinesApi
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.filterIsInstance
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.advanceUntilIdle
import kotlinx.coroutines.test.runTest
@@ -36,15 +38,12 @@ class LeaveBaseRoomPresenterTest {
@Test
fun `present - initial state hides all dialogs`() = runTest {
- val presenter = createLeaveRoomPresenter()
- moleculeFlow(RecompositionMode.Immediate) {
- presenter.present()
- }.test {
- val initialState = awaitItem()
- assertThat(initialState.confirmation).isEqualTo(LeaveRoomState.Confirmation.Hidden)
- assertThat(initialState.progress).isEqualTo(LeaveRoomState.Progress.Hidden)
- assertThat(initialState.error).isEqualTo(LeaveRoomState.Error.Hidden)
- }
+ createLeaveRoomPresenter()
+ .stateFlow()
+ .test {
+ val initialState = awaitItem()
+ assertThat(initialState.leaveAction).isEqualTo(AsyncAction.Uninitialized)
+ }
}
@Test
@@ -59,13 +58,11 @@ class LeaveBaseRoomPresenterTest {
)
}
)
- moleculeFlow(RecompositionMode.Immediate) {
- presenter.present()
- }.test {
+ presenter.stateFlow().test {
val initialState = awaitItem()
- initialState.eventSink(LeaveRoomEvent.ShowConfirmation(A_ROOM_ID))
+ initialState.eventSink(LeaveRoomEvent.LeaveRoom(A_ROOM_ID, needsConfirmation = true))
val confirmationState = awaitItem()
- assertThat(confirmationState.confirmation).isEqualTo(LeaveRoomState.Confirmation.Generic(A_ROOM_ID))
+ assertThat(confirmationState.leaveAction).isEqualTo(Confirmation.Generic(A_ROOM_ID))
}
}
@@ -81,13 +78,11 @@ class LeaveBaseRoomPresenterTest {
)
}
)
- moleculeFlow(RecompositionMode.Immediate) {
- presenter.present()
- }.test {
+ presenter.stateFlow().test {
val initialState = awaitItem()
- initialState.eventSink(LeaveRoomEvent.ShowConfirmation(A_ROOM_ID))
+ initialState.eventSink(LeaveRoomEvent.LeaveRoom(A_ROOM_ID, needsConfirmation = true))
val confirmationState = awaitItem()
- assertThat(confirmationState.confirmation).isEqualTo(LeaveRoomState.Confirmation.PrivateRoom(A_ROOM_ID))
+ assertThat(confirmationState.leaveAction).isEqualTo(Confirmation.PrivateRoom(A_ROOM_ID))
}
}
@@ -103,13 +98,11 @@ class LeaveBaseRoomPresenterTest {
)
}
)
- moleculeFlow(RecompositionMode.Immediate) {
- presenter.present()
- }.test {
+ presenter.stateFlow().test {
val initialState = awaitItem()
- initialState.eventSink(LeaveRoomEvent.ShowConfirmation(A_ROOM_ID))
+ initialState.eventSink(LeaveRoomEvent.LeaveRoom(A_ROOM_ID, needsConfirmation = true))
val confirmationState = awaitItem()
- assertThat(confirmationState.confirmation).isEqualTo(LeaveRoomState.Confirmation.LastUserInRoom(A_ROOM_ID))
+ assertThat(confirmationState.leaveAction).isEqualTo(Confirmation.LastUserInRoom(A_ROOM_ID))
}
}
@@ -125,13 +118,11 @@ class LeaveBaseRoomPresenterTest {
)
}
)
- moleculeFlow(RecompositionMode.Immediate) {
- presenter.present()
- }.test {
+ presenter.stateFlow().test {
val initialState = awaitItem()
- initialState.eventSink(LeaveRoomEvent.ShowConfirmation(A_ROOM_ID))
+ initialState.eventSink(LeaveRoomEvent.LeaveRoom(A_ROOM_ID, needsConfirmation = true))
val confirmationState = awaitItem()
- assertThat(confirmationState.confirmation).isEqualTo(LeaveRoomState.Confirmation.Dm(A_ROOM_ID))
+ assertThat(confirmationState.leaveAction).isEqualTo(Confirmation.Dm(A_ROOM_ID))
}
}
@@ -148,11 +139,9 @@ class LeaveBaseRoomPresenterTest {
)
},
)
- moleculeFlow(RecompositionMode.Immediate) {
- presenter.present()
- }.test {
+ presenter.stateFlow().test {
val initialState = awaitItem()
- initialState.eventSink(LeaveRoomEvent.LeaveRoom(A_ROOM_ID))
+ initialState.eventSink(LeaveRoomEvent.LeaveRoom(A_ROOM_ID, needsConfirmation = false))
advanceUntilIdle()
cancelAndIgnoreRemainingEvents()
assert(leaveRoomLambda)
@@ -173,44 +162,19 @@ class LeaveBaseRoomPresenterTest {
)
}
)
- moleculeFlow(RecompositionMode.Immediate) {
- presenter.present()
- }.test {
+ presenter.stateFlow().test {
val initialState = awaitItem()
- initialState.eventSink(LeaveRoomEvent.LeaveRoom(A_ROOM_ID))
- skipItems(1) // Skip show progress state
+ initialState.eventSink(LeaveRoomEvent.LeaveRoom(A_ROOM_ID, needsConfirmation = false))
+ val progressState = awaitItem()
+ assertThat(progressState.leaveAction).isEqualTo(AsyncAction.Loading)
val errorState = awaitItem()
- assertThat(errorState.error).isEqualTo(LeaveRoomState.Error.Shown)
+ assertThat(errorState.leaveAction).isInstanceOf(AsyncAction.Failure::class.java)
cancelAndIgnoreRemainingEvents()
}
}
@Test
- fun `present - show progress indicator while leaving a room`() = runTest {
- val presenter = createLeaveRoomPresenter(
- client = FakeMatrixClient().apply {
- givenGetRoomResult(
- roomId = A_ROOM_ID,
- result = FakeBaseRoom(
- leaveRoomLambda = { Result.success(Unit) }
- ),
- )
- }
- )
- moleculeFlow(RecompositionMode.Immediate) {
- presenter.present()
- }.test {
- val initialState = awaitItem()
- initialState.eventSink(LeaveRoomEvent.LeaveRoom(A_ROOM_ID))
- val progressState = awaitItem()
- assertThat(progressState.progress).isEqualTo(LeaveRoomState.Progress.Shown)
- val finalState = awaitItem()
- assertThat(finalState.progress).isEqualTo(LeaveRoomState.Progress.Hidden)
- }
- }
-
- @Test
- fun `present - hide error hides the error`() = runTest {
+ fun `present - reset state after error`() = runTest {
val presenter = createLeaveRoomPresenter(
client = FakeMatrixClient().apply {
givenGetRoomResult(
@@ -221,20 +185,23 @@ class LeaveBaseRoomPresenterTest {
)
}
)
- moleculeFlow(RecompositionMode.Immediate) {
- presenter.present()
- }.test {
+ presenter.stateFlow().test {
val initialState = awaitItem()
- initialState.eventSink(LeaveRoomEvent.LeaveRoom(A_ROOM_ID))
+ initialState.eventSink(LeaveRoomEvent.LeaveRoom(A_ROOM_ID, needsConfirmation = false))
skipItems(1) // Skip show progress state
val errorState = awaitItem()
- assertThat(errorState.error).isEqualTo(LeaveRoomState.Error.Shown)
- skipItems(1) // Skip hide progress state
- errorState.eventSink(LeaveRoomEvent.HideError)
+ assertThat(errorState.leaveAction).isInstanceOf(AsyncAction.Failure::class.java)
+ errorState.eventSink(InternalLeaveRoomEvent.ResetState)
val hiddenErrorState = awaitItem()
- assertThat(hiddenErrorState.error).isEqualTo(LeaveRoomState.Error.Hidden)
+ assertThat(hiddenErrorState.leaveAction).isEqualTo(AsyncAction.Uninitialized)
}
}
+
+ private fun LeaveRoomPresenter.stateFlow(): Flow {
+ return moleculeFlow(RecompositionMode.Immediate) {
+ present()
+ }.filterIsInstance(InternalLeaveRoomState::class)
+ }
}
private fun TestScope.createLeaveRoomPresenter(
diff --git a/features/lockscreen/impl/src/main/res/values-fa/translations.xml b/features/lockscreen/impl/src/main/res/values-fa/translations.xml
index 2d224ea302..8e57ec8d68 100644
--- a/features/lockscreen/impl/src/main/res/values-fa/translations.xml
+++ b/features/lockscreen/impl/src/main/res/values-fa/translations.xml
@@ -12,10 +12,10 @@
"برداشتن پین؟"
"اجازه به %1$s"
"ترجیح میدهم از پین استفاده کنم"
- "زمیانتان را ذخیره کرده و از %1$s برای قفلگشایی هربارهٔ کاره استفاده کنید"
+ "زمانتان را ذخیره کرده و از %1$s برای قفلگشایی هربارهٔ کاره استفاده کنید"
"گزینش پین"
"تأیید پین"
- "قفل %1$s برای افزودن امنیت بیشتر به گفتگوهایتان.
+ "قفل کردن %1$s برای افزودن امنیت بیشتر به گفتگوهایتان.
چیزی به یاد ماندنی انتخاب کنید. اگر این پین را فراموش کنید، از برنامه خارج خواهید شد."
"به دلیل امنیتی نمیتوانید این پین را برگزینید"
@@ -24,14 +24,6 @@
"پینها مطابق نیستند"
"برای ادامه باید دوباره وارد شده و پینی جدید ایجاد کنید"
"دارید خارج میشوید"
-
- - "شما %1$d تلاش برای باز کردن قفل دارید"
- - "شما %1$d تلاش برای باز کردن قفل دارید"
-
-
- - "پین اشتباه است. شما %1$d شانس دیگر دارید"
- - "پین اشتباه است. شما %1$d شانس دیگر دارید"
-
"استفاده از زیستسنجی"
"استفاده از پین"
"خارج شدن…"
diff --git a/features/login/impl/src/main/res/values-da/translations.xml b/features/login/impl/src/main/res/values-da/translations.xml
index 7dee0462d5..af64068d32 100644
--- a/features/login/impl/src/main/res/values-da/translations.xml
+++ b/features/login/impl/src/main/res/values-da/translations.xml
@@ -13,6 +13,8 @@
"Anden"
"Brug en anden kontoudbyder, f.eks. din egen private server eller en arbejdskonto."
"Skift kontoudbyder"
+ "Element Pro-appen er påkrævet på %1$s Download den venligst fra din app store."
+ "Element Pro kræves"
"Vi kunne ikke nå denne hjemmeserver. Kontroller, at du har indtastet hjemmeserverens URL korrekt. Hvis URL-adressen er korrekt, skal du kontakte administratoren på din hjemmeserver for at få yderligere hjælp."
"Serveren er ikke tilgængelig på grund af et problem i .well-known-filen:
%1$s"
diff --git a/features/login/impl/src/main/res/values-fa/translations.xml b/features/login/impl/src/main/res/values-fa/translations.xml
index 625b03db4b..eab8d6ca36 100644
--- a/features/login/impl/src/main/res/values-fa/translations.xml
+++ b/features/login/impl/src/main/res/values-fa/translations.xml
@@ -13,7 +13,7 @@
"دیگر"
"استفاده از فراهم کنندهٔ حسابی دیگر چون کارساز خصوصی خوتان یا حسابی کاری."
"تغییر فراهم کنندهٔ حساب"
- "ما نتوانستیم به این سرور خانگی برسیم. لطفاً بررسی کنید که URL سرور اصلی را به درستی وارد کرده اید. اگر URL صحیح است، برای کمک بیشتر با مدیر سرور خانگی خود تماس بگیرید."
+ "ما نتوانستیم به این کارساز خانگی برسیم. لطفاً بررسی کنید که URL کارساز اصلی را به درستی وارد کرده اید. اگر URL صحیح است، برای کمک بیشتر با مدیر کارساز خانگی خود تماس بگیرید."
"نشانی کارساز خانگی"
"ورود نشانی دامنه."
"نشانی کارسازتان چیست؟"
@@ -22,12 +22,14 @@
"این حساب از کار افتاده است."
"نام کاربری یا گذرواژه نامعتبر است"
"این یک شناسه کاربری معتبر نیست. قالب صحیح: «@user:homeserver.or"
- "سرور اصلی انتخاب شده از رمز عبور یا ورود OIDC پشتیبانی نمی کند. لطفا با مدیر خود تماس بگیرید یا یک سرور خانگی دیگر را انتخاب کنید."
+ "کارساز اصلی انتخاب شده از رمز عبور یا ورود OIDC پشتیبانی نمی کند. لطفا با مدیر خود تماس بگیرید یا یک کارساز خانگی دیگر را انتخاب کنید."
"جزییاتتان را وارد کنید"
"ماتریکس شبکهای بار برای ارتباطات نامتمرکز و امن است."
"خوش برگشتید!"
"ورود به %1$s"
+ "نگارش %1$s"
"ورود دستی"
+ "ورود به %1$s"
"ورود با کد QR"
"ایجاد حساب"
"به سریعترین %1$s خوش آمدید. بازطرّاحی شده برای سرعت و سادگی."
@@ -74,7 +76,7 @@
"ممکن است فراهم کنندهٔ حسابتان کد زیر را برای تأیید ورود بخواهد."
"کد تأییدتان"
"تغییر فراهم کنندهٔ حساب"
- "یک سرور خصوصی برای کارمندان Element."
+ "کارساز خصوصی برای کارمندان المنت."
"ماتریکس شبکهای بار برای ارتباطات نامتمرکز و امن است."
"جایی که گفتوگوهایتان خواهند زیست — درست مثل استفادهتان از فراهم کنندهٔ رایانامهای برای نگه داشتن رایانامههایتان."
"دارید به %1$s وارد میشوید"
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 a05dc55216..1c2b75ae82 100644
--- a/features/login/impl/src/main/res/values-fi/translations.xml
+++ b/features/login/impl/src/main/res/values-fi/translations.xml
@@ -13,6 +13,8 @@
"Muu"
"Käytä toista palveluntarjoajaa, kuten omaa yksityistä palvelintasi tai työpaikkaasi."
"Vaihda palveluntarjoajaa"
+ "Element Pro -sovellus on pakollinen %1$s -palvelimella. Lataa se sovelluskaupasta."
+ "Element Pro vaaditaan"
"Kotipalvelimeen ei saatu yhteyttä. Varmista, että olet syöttänyt osoitteen oikein. Jos osoite on oikein, ota yhteyttä palvelimesi ylläpitäjään."
"Palvelin ei ole saatavilla .well-known tiedostossa olevan ongelman vuoksi:
%1$s"
@@ -34,6 +36,7 @@
"Matrix on avoin verkko turvallista, hajautettua viestintää varten."
"Tervetuloa takaisin!"
"Kirjaudu sisään %1$s -palvelimelle"
+ "Versio %1$s"
"Kirjaudu sisään manuaalisesti"
"Kirjaudu sisään %1$s -palvelimelle"
"Kirjaudu sisään QR-koodilla"
diff --git a/features/login/impl/src/main/res/values-nl/translations.xml b/features/login/impl/src/main/res/values-nl/translations.xml
index 1c8515df22..03847a7ae9 100644
--- a/features/login/impl/src/main/res/values-nl/translations.xml
+++ b/features/login/impl/src/main/res/values-nl/translations.xml
@@ -14,7 +14,7 @@
"Gebruik een andere accountprovider, zoals je eigen privéserver of een zakelijke account."
"Wijzig accountprovider"
"We konden deze homeserver niet bereiken. Controleer of je de homeserver-URL juist hebt ingevoerd. Als de URL juist is, neem dan contact op met de beheerder van je homeserver voor verdere hulp."
- "Sliding sync is niet beschikbaar vanwege een probleem in het well-known bestand:
+ "Server is niet beschikbaar vanwege een probleem in het well-known bestand:
%1$s"
"Homeserver-URL"
"Wat is het adres van je server?"
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 47e0933d05..c81a3e34f2 100644
--- a/features/login/impl/src/main/res/values-uk/translations.xml
+++ b/features/login/impl/src/main/res/values-uk/translations.xml
@@ -13,6 +13,8 @@
"Інше"
"Використати іншого провайдера облікових записів, наприклад, власний приватний сервер або робочий обліковий запис."
"Змінити провайдера облікового запису"
+ "Необхідно встановити застосунок Element Pro на %1$s. Завантажте його з магазину."
+ "Потрібен Element Pro"
"Не вдалося під\'єднатися до цього домашнього сервера. Перевірте правильність введеної URL-адреси домашнього сервера. Якщо URL-адреса правильна, зверніться по додаткову допомогу до адміністратора домашнього сервера."
"Сервер недоступний через помилку у файлі well-known:
%1$s"
@@ -34,6 +36,7 @@
"Matrix — це відкрита мережа для безпечної, децентралізованої комунікації."
"З поверненням!"
"Увійти в %1$s"
+ "Версія %1$s"
"Увійти вручну"
"Увійти в %1$s"
"Увійти за допомогою QR-коду"
diff --git a/features/messages/impl/src/main/res/values-fa/translations.xml b/features/messages/impl/src/main/res/values-fa/translations.xml
index 58201d9537..589748f59c 100644
--- a/features/messages/impl/src/main/res/values-fa/translations.xml
+++ b/features/messages/impl/src/main/res/values-fa/translations.xml
@@ -10,7 +10,7 @@
"نمادها"
"انسداد کاربر"
"اگر میخواهید همه پیامهای فعلی و آینده را از این کاربر را پنهان کنید، علامت بزنید"
- "این پیام به مدیر سرور خانگی شما گزارش خواهد شد. آنها قادر به خواندن پیام های رمزگذاری شده نخواهند بود."
+ "این پیام به مدیر کارساز خانگی شما گزارش خواهد شد. آنها قادر به خواندن پیام های رمزگذاری شده نخواهند بود."
"دلیل گزارش این محتوا"
"دوربین"
"عکس گرفتن"
@@ -36,9 +36,5 @@
"نمایش کمتر"
"نمایش بیشتر"
"جدید"
-
- - "%1$dتغییر اتاق"
- - "%1$dتغییر اتاق"
-
"%1$s و %2$s"
diff --git a/features/messages/impl/src/main/res/values-fi/translations.xml b/features/messages/impl/src/main/res/values-fi/translations.xml
index 912e610b60..3c09463742 100644
--- a/features/messages/impl/src/main/res/values-fi/translations.xml
+++ b/features/messages/impl/src/main/res/values-fi/translations.xml
@@ -28,15 +28,25 @@
"Kaikki"
"Lähetä uudelleen"
"Viestisi lähettäminen epäonnistui"
- "Lisää emoji"
+ "Lisää reaktio"
"Tämä on huoneen %1$s alku."
"Tämä on tämän keskustelun alku."
"Puhelu, jota ei tueta. Kysy, voiko soittaja käyttää uutta Element X -sovellusta."
"Näytä vähemmän"
"Viesti kopioitu"
"Sinulla ei ole oikeutta kirjoittaa tässä huoneessa"
+
+ - "%1$d jäsen reagoi %2$s"
+ - "%1$d jäsentä reagoivat %2$s"
+
+
+ - "Sinä ja %1$d jäsen reagoitte %2$s"
+ - "Sinä ja %1$d jäsentä reagoitte %2$s"
+
+ "Reagoit seuraavasti: %1$s"
"Näytä vähemmän"
"Näytä lisää"
+ "Näytä reaktioiden yhteenveto"
"Uusi"
- "%1$d muutos huoneeseen"
diff --git a/features/poll/api/src/main/res/values-da/translations.xml b/features/poll/api/src/main/res/values-da/translations.xml
index 1024970e20..58517b3ec4 100644
--- a/features/poll/api/src/main/res/values-da/translations.xml
+++ b/features/poll/api/src/main/res/values-da/translations.xml
@@ -4,5 +4,6 @@
- "%1$d% af de samlede stemmer"
- "%1$d procent af det samlede antal stemmer"
+ "Fjerner tidligere valg"
"Dette er det vindende svar"
diff --git a/features/poll/api/src/main/res/values-fa/translations.xml b/features/poll/api/src/main/res/values-fa/translations.xml
new file mode 100644
index 0000000000..af9620c7e8
--- /dev/null
+++ b/features/poll/api/src/main/res/values-fa/translations.xml
@@ -0,0 +1,5 @@
+
+
+ "گزینش پیشین را برخواهد داشت"
+ "این پاسخ برنده است"
+
diff --git a/features/poll/api/src/main/res/values-fi/translations.xml b/features/poll/api/src/main/res/values-fi/translations.xml
new file mode 100644
index 0000000000..1dbda4ad72
--- /dev/null
+++ b/features/poll/api/src/main/res/values-fi/translations.xml
@@ -0,0 +1,9 @@
+
+
+
+ - "%1$d prosentti kaikista äänistä"
+ - "%1$d prosenttia kaikista äänistä"
+
+ "Poistaa edellisen valinnan"
+ "Tämä on voittava vastaus"
+
diff --git a/features/poll/api/src/main/res/values-uk/translations.xml b/features/poll/api/src/main/res/values-uk/translations.xml
index bbb1618deb..20d094ab07 100644
--- a/features/poll/api/src/main/res/values-uk/translations.xml
+++ b/features/poll/api/src/main/res/values-uk/translations.xml
@@ -5,5 +5,6 @@
- "%1$d відсотки від усіх голосів"
- "%1$d відсотків від усіх голосів"
+ "Попередній вибір буде прибрано"
"Ця відповідь перемогла"
diff --git a/features/poll/impl/src/main/res/values-fi/translations.xml b/features/poll/impl/src/main/res/values-fi/translations.xml
index f8017704b6..02071bb3a3 100644
--- a/features/poll/impl/src/main/res/values-fi/translations.xml
+++ b/features/poll/impl/src/main/res/values-fi/translations.xml
@@ -5,6 +5,7 @@
"Piilota äänet"
"Vaihtoehto %1$d"
"Muutoksiasi ei ole tallennettu. Haluatko varmasti palata takaisin?"
+ "Poista vaihtoehto %1$s"
"Kysymys tai aihe"
"Mistä kyselyssä on kyse?"
"Luo kysely"
diff --git a/features/preferences/impl/src/main/res/values-fa/translations.xml b/features/preferences/impl/src/main/res/values-fa/translations.xml
index bf02b8a0f1..1ca2ad38db 100644
--- a/features/preferences/impl/src/main/res/values-fa/translations.xml
+++ b/features/preferences/impl/src/main/res/values-fa/translations.xml
@@ -7,6 +7,7 @@
"نشانی پایهٔ تماس المنتی سفارشی"
"تنظمی نشانی پایهای سفارشی برای تماس المنتی."
"URL نامعتبر، لطفا مطمئن شوید که پروتکل (http/https) و آدرس صحیح را درج کرده اید."
+ "نهفتن چهرکها در درخواستهای دعوت اتاق"
"نهفتن رسانه در خط زمانی"
"بهینه سازی کیفیت رسانه"
"نظارت و امنیت"
@@ -17,6 +18,7 @@
"نهفتن همیشگی"
"نمایش همیشگی"
"در اتاقهای خصوصی"
+ "رسانههای نهفته همواره خواهند توانست با زدن رویشان نمایان شوند"
"نمایش رسانه در خط زمانی"
"هیچ کاربر مسدودی ندارید"
"رفع انسداد"
@@ -56,6 +58,7 @@
"تنظیمات سامانه"
"آگاهیهای سامانهای خاموش شدند"
"آگاهیها"
+ "تاریخچهٔ فرستادن"
"رفعاشکال"
"رفعاشکال آگاهیها"
diff --git a/features/rageshake/impl/src/main/res/values-fa/translations.xml b/features/rageshake/impl/src/main/res/values-fa/translations.xml
index 020ca83ecb..ba5ab756db 100644
--- a/features/rageshake/impl/src/main/res/values-fa/translations.xml
+++ b/features/rageshake/impl/src/main/res/values-fa/translations.xml
@@ -4,13 +4,13 @@
"اگر پرسش دیگری دارید، میتوانید با من در تماس باشید."
"تماس با من"
"ویرایش نماگرفت"
- "لطفا مشکل را توصیف کنید. چيکار کردي؟ انتظار داشتید چه اتفاقی بیفتد؟ واقعا چه اتفاقی افتاد لطفا تا جایی که می توانید جزئیات را وارد کنید."
+ "لطفاً مشکل را شرح دهید. چهکار کردید؟ انتظار داشتید چه بشود؟ ولی چه شد؟ لطفاًتا جای ممکن وارد جزییات شوید."
"شرح مشکل…"
"ترجیحاً توضیحات را به زبان انگلیسی بنویسید."
"ارسال رخدادنگارهای خطا"
"اجازه به گزارشها"
"ارسال تصویر صفحه"
- "گزارش ها در پیام شما گنجانده می شوند تا مطمئن شوید همه چیز به درستی کار می کند. برای ارسال پیام بدون گزارش، این تنظیم را خاموش کنید."
+ "برای اطمینان از درست کار کردن همهچیز گزارشها در پیامتان قرار خواهد گرفت. برای فرستادن پیام بدون گزارشها این تنظیم را خاموش کنید."
"%1$sآخرین باری که استفاده شد، از کار افتاد. آیا مایلید گزارش خرابی را با ما به اشتراک بگذارید؟"
"دیدن گزارشها"
diff --git a/features/rageshake/impl/src/main/res/values-fi/translations.xml b/features/rageshake/impl/src/main/res/values-fi/translations.xml
index dbfeb6d23e..38f30d4289 100644
--- a/features/rageshake/impl/src/main/res/values-fi/translations.xml
+++ b/features/rageshake/impl/src/main/res/values-fi/translations.xml
@@ -10,6 +10,7 @@
"Kuvaus on liian lyhyt. Kerro tarkemmin mitä tapahtui, kiitos!"
"Lähetä kaatumislokit"
"Lähetä lokitiedostot"
+ "Lokitiedostosi ovat liian suuria, joten niitä ei voida sisällyttää tähän raporttiin. Lähetä ne meille toisella tavalla."
"Lähetä kuvakaappaus"
"Lähetä lokitiedostot viestisi kanssa, jotta voimme varmistaa, että kaikki toimii oikein. Jos haluat lähettää viestisi ilman lokeja, jätä tämä asetus valitsematta."
"%1$s kaatui edellisellä käyttökerralla. Haluatko jakaa virheraportin kanssamme?"
diff --git a/features/roomdetails/impl/build.gradle.kts b/features/roomdetails/impl/build.gradle.kts
index 4e87946ba4..ad45eda8fc 100644
--- a/features/roomdetails/impl/build.gradle.kts
+++ b/features/roomdetails/impl/build.gradle.kts
@@ -55,6 +55,7 @@ dependencies {
implementation(projects.features.verifysession.api)
implementation(projects.features.reportroom.api)
implementation(projects.features.roommembermoderation.api)
+ implementation(projects.features.changeroommemberroles.api)
testImplementation(libs.test.junit)
testImplementation(libs.coroutines.test)
diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsEvent.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsEvent.kt
index 93c93c345a..09c4119ac1 100644
--- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsEvent.kt
+++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsEvent.kt
@@ -8,7 +8,7 @@
package io.element.android.features.roomdetails.impl
sealed interface RoomDetailsEvent {
- data object LeaveRoom : RoomDetailsEvent
+ data class LeaveRoom(val needsConfirmation: Boolean) : RoomDetailsEvent
data object MuteNotification : RoomDetailsEvent
data object UnmuteNotification : RoomDetailsEvent
data class CopyToClipboard(val text: String) : RoomDetailsEvent
diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsFlowNode.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsFlowNode.kt
index 986d86ea41..122311040e 100644
--- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsFlowNode.kt
+++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsFlowNode.kt
@@ -11,6 +11,8 @@ import android.os.Parcelable
import androidx.compose.runtime.Composable
import androidx.compose.runtime.mutableStateOf
import androidx.compose.ui.Modifier
+import androidx.lifecycle.Lifecycle
+import androidx.lifecycle.coroutineScope
import com.bumble.appyx.core.modality.BuildContext
import com.bumble.appyx.core.node.Node
import com.bumble.appyx.core.plugin.Plugin
@@ -25,6 +27,8 @@ import io.element.android.anvilannotations.ContributesNode
import io.element.android.appconfig.LearnMoreConfig
import io.element.android.features.call.api.CallType
import io.element.android.features.call.api.ElementCallEntryPoint
+import io.element.android.features.changeroommemberroes.api.ChangeRoomMemberRolesEntryPoint
+import io.element.android.features.changeroommemberroes.api.ChangeRoomMemberRolesListType
import io.element.android.features.knockrequests.api.list.KnockRequestsListEntryPoint
import io.element.android.features.messages.api.MessagesEntryPoint
import io.element.android.features.poll.api.history.PollHistoryEntryPoint
@@ -51,12 +55,15 @@ 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.core.toRoomIdOrAlias
import io.element.android.libraries.matrix.api.permalink.PermalinkData
-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.verification.VerificationRequest
import io.element.android.libraries.mediaviewer.api.MediaGalleryEntryPoint
import io.element.android.libraries.mediaviewer.api.MediaViewerEntryPoint
import io.element.android.services.analytics.api.AnalyticsService
import io.element.android.services.analyticsproviders.api.trackers.captureInteraction
+import kotlinx.coroutines.NonCancellable
+import kotlinx.coroutines.launch
+import kotlinx.coroutines.withContext
import kotlinx.parcelize.Parcelize
@ContributesNode(RoomScope::class)
@@ -65,7 +72,7 @@ class RoomDetailsFlowNode @AssistedInject constructor(
@Assisted plugins: List,
private val pollHistoryEntryPoint: PollHistoryEntryPoint,
private val elementCallEntryPoint: ElementCallEntryPoint,
- private val room: BaseRoom,
+ private val room: JoinedRoom,
private val analyticsService: AnalyticsService,
private val messagesEntryPoint: MessagesEntryPoint,
private val knockRequestsListEntryPoint: KnockRequestsListEntryPoint,
@@ -73,6 +80,7 @@ class RoomDetailsFlowNode @AssistedInject constructor(
private val mediaGalleryEntryPoint: MediaGalleryEntryPoint,
private val outgoingVerificationEntryPoint: OutgoingVerificationEntryPoint,
private val reportRoomEntryPoint: ReportRoomEntryPoint,
+ private val changeRoomMemberRolesEntryPoint: ChangeRoomMemberRolesEntryPoint,
) : BaseFlowNode(
backstack = BackStack(
initialElement = plugins.filterIsInstance().first().initialElement.toNavTarget(),
@@ -132,6 +140,24 @@ class RoomDetailsFlowNode @AssistedInject constructor(
@Parcelize
data object ReportRoom : NavTarget
+
+ @Parcelize
+ data object SelectNewOwnersWhenLeaving : NavTarget
+ }
+
+ override fun onBuilt() {
+ super.onBuilt()
+ whenChildrenAttached { commonLifecycle: Lifecycle,
+ roomDetailsNode: RoomDetailsNode,
+ changeRoomMemberRolesNode: ChangeRoomMemberRolesEntryPoint.NodeProxy ->
+ commonLifecycle.coroutineScope.launch {
+ changeRoomMemberRolesNode.waitForRoleChanged()
+ withContext(NonCancellable) {
+ backstack.pop()
+ roomDetailsNode.onNewOwnersSelected()
+ }
+ }
+ }
}
override fun resolve(navTarget: NavTarget, buildContext: BuildContext): Node {
@@ -198,6 +224,10 @@ class RoomDetailsFlowNode @AssistedInject constructor(
override fun openReportRoom() {
backstack.push(NavTarget.ReportRoom)
}
+
+ override fun onSelectNewOwnersWhenLeaving() {
+ backstack.push(NavTarget.SelectNewOwnersWhenLeaving)
+ }
}
createNode(buildContext, listOf(roomDetailsCallback))
}
@@ -330,7 +360,7 @@ class RoomDetailsFlowNode @AssistedInject constructor(
is NavTarget.VerifyUser -> {
val params = OutgoingVerificationEntryPoint.Params(
showDeviceVerifiedScreen = true,
- verificationRequest = VerificationRequest.Outgoing.User(userId = navTarget.userId,)
+ verificationRequest = VerificationRequest.Outgoing.User(userId = navTarget.userId)
)
outgoingVerificationEntryPoint.nodeBuilder(this, buildContext)
.params(params)
@@ -352,6 +382,13 @@ class RoomDetailsFlowNode @AssistedInject constructor(
is NavTarget.ReportRoom -> {
reportRoomEntryPoint.createNode(this, buildContext, room.roomId)
}
+
+ is NavTarget.SelectNewOwnersWhenLeaving -> {
+ changeRoomMemberRolesEntryPoint.builder(this, buildContext)
+ .room(room)
+ .listType(ChangeRoomMemberRolesListType.SelectNewOwnersWhenLeaving)
+ .build()
+ }
}
}
diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsNode.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsNode.kt
index 1c76f561e2..d9df8cbc1c 100644
--- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsNode.kt
+++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsNode.kt
@@ -9,6 +9,8 @@ package io.element.android.features.roomdetails.impl
import android.content.Context
import androidx.compose.runtime.Composable
+import androidx.compose.runtime.collectAsState
+import androidx.compose.runtime.getValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.lifecycle.lifecycleScope
@@ -21,7 +23,9 @@ import dagger.assisted.Assisted
import dagger.assisted.AssistedInject
import im.vector.app.features.analytics.plan.MobileScreen
import io.element.android.anvilannotations.ContributesNode
+import io.element.android.features.leaveroom.api.LeaveRoomRenderer
import io.element.android.libraries.androidutils.system.startSharePlainTextIntent
+import io.element.android.libraries.architecture.appyx.launchMolecule
import io.element.android.libraries.di.RoomScope
import io.element.android.libraries.matrix.api.core.UserId
import io.element.android.libraries.matrix.api.room.BaseRoom
@@ -38,6 +42,7 @@ class RoomDetailsNode @AssistedInject constructor(
private val presenter: RoomDetailsPresenter,
private val room: BaseRoom,
private val analyticsService: AnalyticsService,
+ private val leaveRoomRenderer: LeaveRoomRenderer,
) : Node(buildContext, plugins = plugins) {
interface Callback : Plugin {
fun openRoomMemberList()
@@ -54,9 +59,10 @@ class RoomDetailsNode @AssistedInject constructor(
fun openDmUserProfile(userId: UserId)
fun onJoinCall()
fun openReportRoom()
+ fun onSelectNewOwnersWhenLeaving()
}
- private val callbacks = plugins()
+ private val callback = plugins().first()
init {
lifecycle.subscribe(
@@ -67,27 +73,27 @@ class RoomDetailsNode @AssistedInject constructor(
}
private fun openRoomMemberList() {
- callbacks.forEach { it.openRoomMemberList() }
+ callback.openRoomMemberList()
}
private fun openRoomNotificationSettings() {
- callbacks.forEach { it.openRoomNotificationSettings() }
+ callback.openRoomNotificationSettings()
}
private fun invitePeople() {
- callbacks.forEach { it.openInviteMembers() }
+ callback.openInviteMembers()
}
private fun openPollHistory() {
- callbacks.forEach { it.openPollHistory() }
+ callback.openPollHistory()
}
private fun openMediaGallery() {
- callbacks.forEach { it.openMediaGallery() }
+ callback.openMediaGallery()
}
private fun onJoinCall() {
- callbacks.forEach { it.onJoinCall() }
+ callback.onJoinCall()
}
private fun CoroutineScope.onShareRoom(context: Context) = launch {
@@ -106,41 +112,51 @@ class RoomDetailsNode @AssistedInject constructor(
}
private fun onEditRoomDetails() {
- callbacks.forEach { it.editRoomDetails() }
+ callback.editRoomDetails()
}
private fun openAvatarPreview(name: String, url: String) {
- callbacks.forEach { it.openAvatarPreview(name, url) }
+ callback.openAvatarPreview(name, url)
}
private fun openAdminSettings() {
- callbacks.forEach { it.openAdminSettings() }
+ callback.openAdminSettings()
}
private fun openPinnedMessages() {
- callbacks.forEach { it.openPinnedMessagesList() }
+ callback.openPinnedMessagesList()
}
private fun openKnockRequestsLists() {
- callbacks.forEach { it.openKnockRequestsList() }
+ callback.openKnockRequestsList()
}
private fun openSecurityAndPrivacy() {
- callbacks.forEach { it.openSecurityAndPrivacy() }
+ callback.openSecurityAndPrivacy()
}
private fun onProfileClick(userId: UserId) {
- callbacks.forEach { it.openDmUserProfile(userId) }
+ callback.openDmUserProfile(userId)
}
private fun onReportRoomClick() {
- callbacks.forEach { it.openReportRoom() }
+ callback.openReportRoom()
+ }
+
+ private fun onSelectNewOwnersWhenLeaving() {
+ return callback.onSelectNewOwnersWhenLeaving()
+ }
+
+ private val stateFlow = launchMolecule { presenter.present() }
+
+ fun onNewOwnersSelected() {
+ stateFlow.value.eventSink(RoomDetailsEvent.LeaveRoom(needsConfirmation = false))
}
@Composable
override fun View(modifier: Modifier) {
val context = LocalContext.current
- val state = presenter.present()
+ val state by stateFlow.collectAsState()
fun onShareRoom() {
lifecycleScope.onShareRoom(context)
@@ -172,6 +188,13 @@ class RoomDetailsNode @AssistedInject constructor(
onSecurityAndPrivacyClick = ::openSecurityAndPrivacy,
onProfileClick = ::onProfileClick,
onReportRoomClick = ::onReportRoomClick,
+ leaveRoomView = {
+ leaveRoomRenderer.Render(
+ state = state.leaveRoomState,
+ onSelectNewOwners = { onSelectNewOwnersWhenLeaving() },
+ modifier = Modifier
+ )
+ }
)
}
}
diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsPresenter.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsPresenter.kt
index d35d1a313b..3356c899d0 100644
--- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsPresenter.kt
+++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsPresenter.kt
@@ -149,8 +149,9 @@ class RoomDetailsPresenter @Inject constructor(
fun handleEvents(event: RoomDetailsEvent) {
when (event) {
- RoomDetailsEvent.LeaveRoom ->
- leaveRoomState.eventSink(LeaveRoomEvent.ShowConfirmation(room.roomId))
+ is RoomDetailsEvent.LeaveRoom -> {
+ leaveRoomState.eventSink(LeaveRoomEvent.LeaveRoom(room.roomId, needsConfirmation = event.needsConfirmation))
+ }
RoomDetailsEvent.MuteNotification -> {
scope.launch(dispatchers.io) {
client.notificationSettingsService().muteRoom(room.roomId)
diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsStateProvider.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsStateProvider.kt
index 097cb2e219..9631be01c2 100644
--- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsStateProvider.kt
+++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsStateProvider.kt
@@ -8,8 +8,8 @@
package io.element.android.features.roomdetails.impl
import androidx.compose.ui.tooling.preview.PreviewParameterProvider
+import io.element.android.features.leaveroom.api.LeaveRoomEvent
import io.element.android.features.leaveroom.api.LeaveRoomState
-import io.element.android.features.leaveroom.api.aLeaveRoomState
import io.element.android.features.roomcall.api.RoomCallState
import io.element.android.features.roomcall.api.aStandByCallState
import io.element.android.features.roomdetails.impl.members.aRoomMember
@@ -156,6 +156,12 @@ fun aRoomDetailsState(
eventSink = eventSink,
)
+internal fun aLeaveRoomState(
+ eventSink: (LeaveRoomEvent) -> Unit = {}
+) = object : LeaveRoomState {
+ override val eventSink: (LeaveRoomEvent) -> Unit = eventSink
+}
+
fun aRoomNotificationSettings(
mode: RoomNotificationMode = RoomNotificationMode.MUTE,
isDefault: Boolean = false,
diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsView.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsView.kt
index 4ffe29a8bf..fe14fd983c 100644
--- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsView.kt
+++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsView.kt
@@ -38,7 +38,6 @@ import androidx.compose.ui.unit.dp
import im.vector.app.features.analytics.plan.Interaction
import io.element.android.compound.theme.ElementTheme
import io.element.android.compound.tokens.generated.CompoundIcons
-import io.element.android.features.leaveroom.api.LeaveRoomView
import io.element.android.features.roomcall.api.hasPermissionToJoin
import io.element.android.features.userprofile.api.UserProfileVerificationState
import io.element.android.features.userprofile.shared.blockuser.BlockUserDialogs
@@ -112,6 +111,7 @@ fun RoomDetailsView(
onProfileClick: (UserId) -> Unit,
onReportRoomClick: () -> Unit,
modifier: Modifier = Modifier,
+ leaveRoomView: @Composable () -> Unit,
) {
val snackbarHostState = rememberSnackbarHostState(snackbarMessage = state.snackbarMessage)
Scaffold(
@@ -131,7 +131,7 @@ fun RoomDetailsView(
.verticalScroll(rememberScrollState())
.consumeWindowInsets(padding)
) {
- LeaveRoomView(state = state.leaveRoomState)
+ leaveRoomView()
when (state.roomType) {
RoomDetailsType.Room -> {
@@ -262,7 +262,7 @@ fun RoomDetailsView(
OtherActionsSection(
canReportRoom = state.canReportRoom,
onReportRoomClick = onReportRoomClick,
- onLeaveRoomClick = { state.eventSink(RoomDetailsEvent.LeaveRoom) }
+ onLeaveRoomClick = { state.eventSink(RoomDetailsEvent.LeaveRoom(needsConfirmation = true)) }
)
if (state.showDebugInfo) {
@@ -776,5 +776,6 @@ private fun ContentToPreview(state: RoomDetailsState) {
onSecurityAndPrivacyClick = {},
onProfileClick = {},
onReportRoomClick = {},
+ leaveRoomView = {},
)
}
diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/RoomMemberListPresenter.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/RoomMemberListPresenter.kt
index 56268e6952..fac98da36f 100644
--- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/RoomMemberListPresenter.kt
+++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/RoomMemberListPresenter.kt
@@ -38,8 +38,10 @@ import kotlinx.collections.immutable.ImmutableMap
import kotlinx.collections.immutable.persistentMapOf
import kotlinx.collections.immutable.toImmutableList
import kotlinx.collections.immutable.toPersistentMap
+import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.flow.launchIn
+import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.withContext
import javax.inject.Inject
@@ -64,6 +66,11 @@ class RoomMemberListPresenter @Inject constructor(
val syncUpdateFlow = room.syncUpdateFlow.collectAsState()
val canInvite by room.canInviteAsState(syncUpdateFlow.value)
val roomModerationState = roomMembersModerationPresenter.present()
+ val activeRoomMemberCount by produceState(0L) {
+ room.roomInfoFlow.map { it.activeMembersCount }
+ .distinctUntilChanged()
+ .collect { value = it }
+ }
val roomMemberIdentityStates by produceState(persistentMapOf()) {
room.roomMemberIdentityStateChange(waitForEncryption = true)
@@ -73,8 +80,8 @@ class RoomMemberListPresenter @Inject constructor(
.launchIn(this)
}
- // Ensure we load the latest data when entering this screen
- LaunchedEffect(Unit) {
+ // Update the room members when the screen is loaded or the active member count changes
+ LaunchedEffect(activeRoomMemberCount) {
room.updateMembers()
}
diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/RolesAndPermissionsFlowNode.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/RolesAndPermissionsFlowNode.kt
index 256c9c80da..dbe1eec70a 100644
--- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/RolesAndPermissionsFlowNode.kt
+++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/RolesAndPermissionsFlowNode.kt
@@ -10,27 +10,34 @@ package io.element.android.features.roomdetails.impl.rolesandpermissions
import android.os.Parcelable
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
+import androidx.lifecycle.coroutineScope
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.navmodel.backstack.BackStack
+import com.bumble.appyx.navmodel.backstack.operation.pop
import com.bumble.appyx.navmodel.backstack.operation.push
import dagger.assisted.Assisted
import dagger.assisted.AssistedInject
import io.element.android.anvilannotations.ContributesNode
-import io.element.android.features.roomdetails.impl.rolesandpermissions.changeroles.ChangeRolesNode
+import io.element.android.features.changeroommemberroes.api.ChangeRoomMemberRolesEntryPoint
+import io.element.android.features.changeroommemberroes.api.ChangeRoomMemberRolesListType
import io.element.android.features.roomdetails.impl.rolesandpermissions.permissions.ChangeRoomPermissionsNode
import io.element.android.features.roomdetails.impl.rolesandpermissions.permissions.ChangeRoomPermissionsSection
import io.element.android.libraries.architecture.BackstackView
import io.element.android.libraries.architecture.BaseFlowNode
import io.element.android.libraries.architecture.createNode
import io.element.android.libraries.di.RoomScope
+import io.element.android.libraries.matrix.api.room.JoinedRoom
+import kotlinx.coroutines.launch
import kotlinx.parcelize.Parcelize
@ContributesNode(RoomScope::class)
class RolesAndPermissionsFlowNode @AssistedInject constructor(
@Assisted buildContext: BuildContext,
@Assisted plugins: List,
+ private val changeRoomMemberRolesEntryPoint: ChangeRoomMemberRolesEntryPoint,
+ private val joinedRoom: JoinedRoom,
) : BaseFlowNode(
backstack = BackStack(
initialElement = NavTarget.AdminSettings,
@@ -53,6 +60,16 @@ class RolesAndPermissionsFlowNode @AssistedInject constructor(
data class ChangeRoomPermissions(val section: ChangeRoomPermissionsSection) : NavTarget
}
+ override fun onBuilt() {
+ super.onBuilt()
+ whenChildAttached { lifecycle, node: ChangeRoomMemberRolesEntryPoint.NodeProxy ->
+ lifecycle.coroutineScope.launch {
+ node.waitForRoleChanged()
+ backstack.pop()
+ }
+ }
+ }
+
override fun resolve(navTarget: NavTarget, buildContext: BuildContext): Node {
return when (navTarget) {
is NavTarget.AdminSettings -> {
@@ -83,18 +100,16 @@ class RolesAndPermissionsFlowNode @AssistedInject constructor(
)
}
is NavTarget.AdminList -> {
- val inputs = ChangeRolesNode.Inputs(ChangeRolesNode.ListType.Admins)
- createNode(
- buildContext = buildContext,
- plugins = listOf(inputs),
- )
+ changeRoomMemberRolesEntryPoint.builder(this, buildContext)
+ .room(joinedRoom)
+ .listType(ChangeRoomMemberRolesListType.Admins)
+ .build()
}
is NavTarget.ModeratorList -> {
- val inputs = ChangeRolesNode.Inputs(ChangeRolesNode.ListType.Moderators)
- createNode(
- buildContext = buildContext,
- plugins = listOf(inputs),
- )
+ changeRoomMemberRolesEntryPoint.builder(this, buildContext)
+ .room(joinedRoom)
+ .listType(ChangeRoomMemberRolesListType.Moderators)
+ .build()
}
is NavTarget.ChangeRoomPermissions -> {
val inputs = ChangeRoomPermissionsNode.Inputs(navTarget.section)
diff --git a/features/roomdetails/impl/src/main/res/values-da/translations.xml b/features/roomdetails/impl/src/main/res/values-da/translations.xml
index 4ee3a8439a..e989977145 100644
--- a/features/roomdetails/impl/src/main/res/values-da/translations.xml
+++ b/features/roomdetails/impl/src/main/res/values-da/translations.xml
@@ -22,13 +22,17 @@
"Redigér admins"
"Du kan ikke fortryde denne handling. Du forfremmer brugeren til at have samme magtniveau som dig."
"Tilføj Admin?"
+ "Du kan ikke fortryde denne handling. Du overfører ejerskabet til de valgte brugere. Når du forlader siden, vil dette være permanent."
+ "Overdrag ejerskab?"
"Nedgradering"
"Du vil ikke være i stand til at fortryde denne ændring, da du degraderer dig selv. Hvis du er den sidste privilegerede bruger i rummet, vil det være umuligt at genvinde privilegier."
"Nedgrader dig selv?"
"%1$s (Afventer)"
"(Afventer)"
"Administratorer har automatisk moderatorrettigheder"
+ "Ejere har automatisk administratorrettigheder."
"Redigér moderatorer"
+ "Vælg ejere"
"Administratorer"
"Moderatorer"
"Medlemmer"
@@ -81,6 +85,7 @@
"Afventer"
"Admin"
"Moderator"
+ "Ejeren"
"Medlemmer af rummet"
"Ophæver spærring af %1$s"
"Tillad brugerdefineret indstilling"
@@ -98,12 +103,14 @@
"Kun omtaler og nøgleord"
"Giv mig besked i dette rum for"
"Administratorer"
+ "Administratorer og ejere"
"Skift min rolle"
"Nedgrader til medlem"
"Nedgradering til moderator"
"Moderation af medlemmer"
"Beskeder og indhold"
"Moderatorer"
+ "Ejere"
"Tilladelser"
"Nulstil tilladelser"
"Når du nulstiller tilladelserne, mister du de nuværende indstillinger."
diff --git a/features/roomdetails/impl/src/main/res/values-et/translations.xml b/features/roomdetails/impl/src/main/res/values-et/translations.xml
index 9fb14d85ec..efc6ee8e6d 100644
--- a/features/roomdetails/impl/src/main/res/values-et/translations.xml
+++ b/features/roomdetails/impl/src/main/res/values-et/translations.xml
@@ -22,13 +22,17 @@
"Muuda peakasutajaid"
"Kuna sa annad teisele kasutajale sinu õigustega võrreldes samad õigused, siis sa ei saa seda muudatust hiljem tagasi pöörata."
"Lisame peakasutaja?"
+ "Seda tegevust ei saa tagasi pöörata. Järgnevaga annad jututoa omandi üle valitud kasutajatele. Kui lahkus, siis muutub see muudatus püsivaks."
+ "Kas soovid omandi üle anda?"
"Vähenda õigusi"
"Kui sa võtad endalt kõik õigused ära ja oled viimane peakasutaja selles jututoas, siis sa ei saa seda muudatust hiljem tagasi pöörata."
"Kas vähendad enda õigusi?"
"%1$s (ootel)"
"(ootel)"
"Peakasutajatel on automaatselt ka moderaatori õigused"
+ "Omanikel on automaatselt ka peakasutaja õigused."
"Muuda moderaatoreid"
+ "Vali omanikud"
"Peakasutajad"
"Moderaatorid"
"Liikmed"
@@ -81,6 +85,7 @@
"Ootel"
"Peakasutaja"
"Moderaator"
+ "Omanik"
"Jututoas osalejad"
"Eemaldame suhtluskeelu kasutajalt %1$s"
"Kasuta kohandatud seadistusi"
@@ -98,12 +103,14 @@
"Mainimiste ja võtmesõnade alusel"
"Selles jututoas teavita mind"
"Peakasutajad"
+ "Peakasutajad ja omanikud"
"Muuda minu rolli"
"Muuda tavaliikmeks"
"Muuda moderaatoriks"
"Jututoas osalejate modereerimine"
"Sõnumid ja sisu"
"Moderaatorid"
+ "Omanikud"
"Õigused"
"Lähtesta õigused"
"Kui lähtestad õigused, siis praegune õiguste kombinatsioon läheb kaotsi."
diff --git a/features/roomdetails/impl/src/main/res/values-fa/translations.xml b/features/roomdetails/impl/src/main/res/values-fa/translations.xml
index 279e636c5b..7941f60609 100644
--- a/features/roomdetails/impl/src/main/res/values-fa/translations.xml
+++ b/features/roomdetails/impl/src/main/res/values-fa/translations.xml
@@ -37,7 +37,7 @@
"از پیش عضو است"
"از پیش دعوت شده"
"رمز شده"
- "رمزنگارش نشده"
+ "رمزنگاری نشده"
"اتاق عمومی"
"ویرایش اتاق"
"خطایی ناشناخته رخ داد و اطّلاعات قابل تغییر نبودند."
@@ -50,6 +50,7 @@
"دعوت افراد"
"ترک گفتوگو"
"ترک اتاق"
+ "رسانهها و پروندهها"
"سفارشی"
"پیشگزیده"
"آگاهیها"
@@ -64,10 +65,6 @@
"اطّلاعات اتاق"
"موضوع"
"بهروز کردن اتاق…"
-
- - "%1$d نفر"
- - "%1$d نفر"
-
"برداشت و تحریم عضو"
"تنها برداشتن عضو"
"رفع انسداد"
@@ -78,10 +75,11 @@
"منتظر"
"مدیر"
"ناظمر"
+ "مالک"
"اعضای اتاق"
"رفع تحریم %1$s"
"اجازه به تنظیمت شخصی"
- "روشن کردن این گزینه تنظیمات پیش فرض شما را لغو می کند"
+ "روشن کردنش تنظیمات پیشگزیدهتان را پایمال میکند"
"آگاهی من در این گپ برای"
"میتوانید در %1$sتان تغییرش دهید."
"تنظیمات جهانی"
@@ -112,7 +110,7 @@
"رمزگذاری فعال شود؟"
"پس از به کار افتادن، رمزنگاری قابل از کار انداختن نیست."
"رمزنگاری"
- "هرکسی می تواند یافته و بپیوندد"
+ "هرکسی میتواند یافته و بپیوندد"
"هرکسی"
"افراد فقط در صورت دعوت میتوانند بپیوندند"
"فقط دعوتی"
diff --git a/features/roomdetails/impl/src/main/res/values-fi/translations.xml b/features/roomdetails/impl/src/main/res/values-fi/translations.xml
index 82314e3b68..efa349d2ed 100644
--- a/features/roomdetails/impl/src/main/res/values-fi/translations.xml
+++ b/features/roomdetails/impl/src/main/res/values-fi/translations.xml
@@ -28,6 +28,7 @@
"%1$s (Kutsuttu)"
"(Kutsuttu)"
"Ylläpitäjillä on automaattisesti valvojan oikeudet"
+ "Omistajilla on automaattisesti ylläpitäjän oikeudet."
"Muokkaa valvojia"
"Ylläpitäjät"
"Valvojat"
@@ -81,6 +82,7 @@
"Kutsuttu"
"Ylläpitäjä"
"Valvoja"
+ "Omistaja"
"Huoneen jäsenet"
"Poistetaan käyttäjän %1$s porttikieltoa"
"Salli mukautettu asetus"
@@ -98,12 +100,14 @@
"Vain maininnoista ja avainsanoista"
"Ilmoita minulle tässä huoneessa"
"Ylläpitäjät"
+ "Ylläpitäjät ja omistajat"
"Vaihda rooliani"
"Alenna jäseneksi"
"Alenna valvojaksi"
"Jäsenten valvonta"
"Viestit ja sisältö"
"Valvojat"
+ "Omistajat"
"Oikeudet"
"Nollaa oikeudet"
"Kun nollaat käyttöoikeudet, menetät nykyiset asetukset."
diff --git a/features/roomdetails/impl/src/main/res/values-fr/translations.xml b/features/roomdetails/impl/src/main/res/values-fr/translations.xml
index 559c020986..f5b876c9f7 100644
--- a/features/roomdetails/impl/src/main/res/values-fr/translations.xml
+++ b/features/roomdetails/impl/src/main/res/values-fr/translations.xml
@@ -22,13 +22,17 @@
"Modifier les administrateurs"
"Vous ne pourrez pas annuler cette action. Vous êtes en train de promouvoir l’utilisateur pour qu’il ait le même niveau que vous."
"Ajouter un administrateur ?"
+ "Vous ne pourrez pas annuler cette action. Vous transférez la propriété aux utilisateurs sélectionnés. Une fois que vous serez parti, l’action sera définitive."
+ "Transférer la propriété?"
"Rétrograder"
"Vous ne pourrez pas annuler ce changement car vous vous rétrogradez, si vous êtes le dernier utilisateur privilégié du salon il sera impossible de retrouver les privilèges."
"Vous rétrograder ?"
"%1$s (En attente)"
"(En attente)"
"Les administrateurs ont automatiquement les privilèges des modérateurs"
+ "Les propriétaires disposent automatiquement des privilèges des administrateurs."
"Modifier les modérateurs"
+ "Choisissez les propriétaires"
"Administrateurs"
"Modérateurs"
"Membres"
@@ -81,6 +85,7 @@
"En attente"
"Administrateur"
"Modérateur"
+ "Propriétaire"
"Membres du salon"
"Débannissement de %1$s"
"Autoriser les paramètres personnalisés"
@@ -98,12 +103,14 @@
"Mentions et mots clés uniquement"
"Dans ce salon, prévenez-moi pour"
"Administrateurs"
+ "Administrateurs et propriétaires"
"Changer mon rôle"
"Devenir simple membre"
"Devenir simple modérateur"
"Administration des membres"
"Messages et contenus"
"Modérateurs"
+ "Propriétaires"
"Autorisations"
"Réinitialisation des autorisations"
"La réinitialisation des autorisations entraîne la perte des réglages actuels."
@@ -127,8 +134,8 @@ Nous ne recommandons pas d’activer le chiffrement pour les salons que tout le
"Le salon ne peut être joint que par les personnes invitées"
"Sur invitation uniquement"
"Accès au salon"
- "Les Spaces ne sont pas encore supportés"
- "Membres du Space"
+ "Les Espaces ne sont pas encore supportés"
+ "Membres de l’espace"
"Vous aurez besoin de l’adresse du salon pour le rendre visible dans le répertoire des salons."
"Adresse du salon"
"Autoriser le salon à apparaître dans les résultats de recherche dans le répertoire %1$s des salons publics"
diff --git a/features/roomdetails/impl/src/main/res/values-hu/translations.xml b/features/roomdetails/impl/src/main/res/values-hu/translations.xml
index 775379ad32..3cb7796de8 100644
--- a/features/roomdetails/impl/src/main/res/values-hu/translations.xml
+++ b/features/roomdetails/impl/src/main/res/values-hu/translations.xml
@@ -81,6 +81,7 @@
"Függőben"
"Adminisztrátor"
"Moderátor"
+ "Tulajdonos"
"Szoba tagjai"
"%1$s tiltásának feloldása"
"Egyéni beállítás engedélyezése"
diff --git a/features/roomdetails/impl/src/main/res/values-pl/translations.xml b/features/roomdetails/impl/src/main/res/values-pl/translations.xml
index d13337096d..c708ac220a 100644
--- a/features/roomdetails/impl/src/main/res/values-pl/translations.xml
+++ b/features/roomdetails/impl/src/main/res/values-pl/translations.xml
@@ -22,13 +22,17 @@
"Edytuj administratorów"
"Tej akcji nie będzie można cofnąć. Promujesz użytkownika, który będzie posiadał takie same uprawnienia jak Ty."
"Dodać administratora?"
+ "Tej akcji nie będzie można cofnąć. Przenosisz prawa własności na wybranych użytkowników. Po opuszczeniu tej strony zmiana będzie nieodwracalna."
+ "Przenieść własność?"
"Zdegraduj"
"Nie będzie można cofnąć tej zmiany, jeśli się zdegradujesz. Jeśli jesteś ostatnim uprzywilejowanym użytkownikiem w pokoju, nie będziesz w stanie odzyskać uprawnień."
"Zdegradować siebie?"
"%1$s (Oczekujące)"
"(Oczekujący)"
"Administratorzy automatycznie mają uprawnienia moderatora"
+ "Właściciele automatycznie mają uprawnienia administratora."
"Edytuj moderatorów"
+ "Wybierz właścicieli"
"Administratorzy"
"Moderatorzy"
"Członków"
@@ -82,6 +86,7 @@
"Oczekujące"
"Administrator"
"Moderator"
+ "Właściciel"
"Członkowie pokoju"
"Odbanowanie %1$s"
"Zezwalaj na ustawienia niestandardowe"
@@ -99,12 +104,14 @@
"Tylko wzmianki i słowa kluczowe"
"W tym pokoju, powiadamiaj mnie przez"
"Administratorzy"
+ "Administratorzy i właściciele"
"Zmień moją rolę"
"Zdegraduj do członka"
"Zdegraduj do moderatora"
"Moderacja członków"
"Wiadomości i zawartość"
"Moderatorzy"
+ "Właściciele"
"Uprawnienia"
"Resetuj uprawnienia"
"Po zresetowaniu uprawnień utracisz bieżące ustawienia."
diff --git a/features/roomdetails/impl/src/main/res/values-sk/translations.xml b/features/roomdetails/impl/src/main/res/values-sk/translations.xml
index e75b53cf29..b8e9e0c30a 100644
--- a/features/roomdetails/impl/src/main/res/values-sk/translations.xml
+++ b/features/roomdetails/impl/src/main/res/values-sk/translations.xml
@@ -22,13 +22,17 @@
"Upraviť správcov"
"Túto akciu nebudete môcť vrátiť späť. Zvyšujete úroveň používateľa na rovnakú úroveň výkonu ako máte vy."
"Pridať správcu?"
+ "Túto akciu nebude možné vrátiť späť. Prenášate vlastníctvo na vybraných používateľov. Po opustení bude táto akcia trvalá."
+ "Previesť vlastníctvo?"
"Znížiť"
"Túto zmenu nebudete môcť vrátiť späť, pretože znižujete svoju úroveň. Ak ste posledným privilegovaným používateľom v miestnosti, nebude možné získať znova oprávnenia."
"Znížiť svoju úroveň?"
"%1$s (Čaká sa)"
"(Čaká sa)"
"Správcovia majú automaticky oprávnenia moderátora"
+ "Vlastníci majú automaticky správcovské oprávnenia."
"Upraviť moderátorov"
+ "Vybrať vlastníkov"
"Správcovia"
"Moderátori"
"Členovia"
@@ -100,12 +104,14 @@
"Iba zmienky a kľúčové slová"
"V tejto miestnosti ma upozorniť na"
"Správcovia"
+ "Správcovia a vlastníci"
"Zmeniť moje oprávnenia"
"Znížiť úroveň na člena"
"Znížiť úroveň na moderátora"
"Moderovanie členov"
"Správy a obsah"
"Moderátori"
+ "Vlastníci"
"Oprávnenia"
"Obnoviť povolenia"
"Po obnovení oprávnení prídete o aktuálne nastavenia."
diff --git a/features/roomdetails/impl/src/main/res/values-uk/translations.xml b/features/roomdetails/impl/src/main/res/values-uk/translations.xml
index 3f8d33e720..e3de1aaa1f 100644
--- a/features/roomdetails/impl/src/main/res/values-uk/translations.xml
+++ b/features/roomdetails/impl/src/main/res/values-uk/translations.xml
@@ -28,6 +28,7 @@
"%1$s (Очікується)"
"(Очікується)"
"Адміністратори автоматично мають повноваження модератора"
+ "Власники автоматично отримують права адміністратора."
"Керувати модераторами"
"Адміністратори"
"Модератори"
@@ -82,6 +83,7 @@
"На розгляді"
"Адміністратор"
"Модератор"
+ "Власник"
"Учасники кімнати"
"Розблокування %1$s"
"Дозволити користувальницькі налаштування"
@@ -99,12 +101,14 @@
"Тільки згадки та ключові слова"
"У цій кімнаті сповіщати мене про"
"Адміністратори"
+ "Адміністратори та власники"
"Змінити мою роль"
"Понизити до учасника"
"Понизити до модератора"
"Модерація учасників"
"Повідомлення та зміст"
"Модератори"
+ "Власники"
"Дозволи"
"Скинути дозволи"
"Після скидання дозволів ви втратите поточні налаштування."
diff --git a/features/roomdetails/impl/src/main/res/values/localazy.xml b/features/roomdetails/impl/src/main/res/values/localazy.xml
index ebd421f958..d0c389ded5 100644
--- a/features/roomdetails/impl/src/main/res/values/localazy.xml
+++ b/features/roomdetails/impl/src/main/res/values/localazy.xml
@@ -22,6 +22,8 @@
"Edit Admins"
"You will not be able to undo this action. You are promoting the user to have the same power level as you."
"Add Admin?"
+ "You will not be able to undo this action. You are transferring the ownership to the selected users. Once you leave this will be permanent."
+ "Transfer ownership?"
"Demote"
"You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the room it will be impossible to regain privileges."
"Demote yourself?"
@@ -30,6 +32,7 @@
"Admins automatically have moderator privileges"
"Owners automatically have admin privileges."
"Edit Moderators"
+ "Choose Owners"
"Admins"
"Moderators"
"Members"
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 6c8f29d873..7dd954011e 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
@@ -12,7 +12,6 @@ import com.google.common.truth.Truth.assertThat
import im.vector.app.features.analytics.plan.Interaction
import io.element.android.features.leaveroom.api.LeaveRoomEvent
import io.element.android.features.leaveroom.api.LeaveRoomState
-import io.element.android.features.leaveroom.api.aLeaveRoomState
import io.element.android.features.roomcall.api.aStandByCallState
import io.element.android.features.roomdetails.impl.members.aRoomMember
import io.element.android.features.roomdetails.impl.members.details.RoomMemberDetailsPresenter
@@ -548,8 +547,8 @@ class RoomDetailsPresenterTest {
dispatchers = testCoroutineDispatchers()
)
presenter.testWithLifecycleOwner(lifecycleOwner = fakeLifecycleOwner) {
- awaitItem().eventSink(RoomDetailsEvent.LeaveRoom)
- leaveRoomEventRecorder.assertSingle(LeaveRoomEvent.ShowConfirmation(room.roomId))
+ awaitItem().eventSink(RoomDetailsEvent.LeaveRoom(needsConfirmation = true))
+ leaveRoomEventRecorder.assertSingle(LeaveRoomEvent.LeaveRoom(room.roomId, needsConfirmation = true))
cancelAndIgnoreRemainingEvents()
}
}
diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsViewTest.kt b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsViewTest.kt
index 2f4eebcad1..3861a20422 100644
--- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsViewTest.kt
+++ b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsViewTest.kt
@@ -280,7 +280,7 @@ class RoomDetailsViewTest {
),
)
rule.clickOn(R.string.screen_room_details_leave_room_title)
- eventsRecorder.assertSingle(RoomDetailsEvent.LeaveRoom)
+ eventsRecorder.assertSingle(RoomDetailsEvent.LeaveRoom(needsConfirmation = true))
}
@Config(qualifiers = "h1500dp")
@@ -368,6 +368,7 @@ private fun AndroidComposeTestRule.setRoomD
onSecurityAndPrivacyClick = onSecurityAndPrivacyClick,
onProfileClick = onProfileClick,
onReportRoomClick = onReportRoomClick,
+ leaveRoomView = {},
)
}
}
diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/members/RoomMemberListPresenterTest.kt b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/members/RoomMemberListPresenterTest.kt
index aff05a55e6..0491c5d437 100644
--- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/members/RoomMemberListPresenterTest.kt
+++ b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/members/RoomMemberListPresenterTest.kt
@@ -23,12 +23,20 @@ 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.room.aRoomInfo
import io.element.android.tests.testutils.WarmUpRule
+import io.element.android.tests.testutils.lambda.lambdaRecorder
import io.element.android.tests.testutils.testCoroutineDispatchers
+import kotlinx.collections.immutable.persistentListOf
import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.launch
+import kotlinx.coroutines.sync.Mutex
+import kotlinx.coroutines.sync.withLock
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runTest
+import kotlinx.coroutines.time.withTimeout
+import kotlinx.coroutines.withTimeout
import org.junit.Rule
import org.junit.Test
+import kotlin.time.Duration.Companion.seconds
@ExperimentalCoroutinesApi
class RoomMemberListPresenterTest {
@@ -67,6 +75,59 @@ class RoomMemberListPresenterTest {
}
}
+ @Test
+ fun `member loading is done automatically when RoomInfo's activeMemberCount changes`() = runTest {
+ val reloadMembersMutex = Mutex()
+ val updateMembersLambda = lambdaRecorder {
+ if (reloadMembersMutex.isLocked) {
+ reloadMembersMutex.unlock()
+ }
+ }
+ val room = FakeJoinedRoom(
+ baseRoom = FakeBaseRoom(
+ updateMembersResult = updateMembersLambda,
+ canInviteResult = { Result.success(true) }
+ ).apply {
+ // Needed to avoid discarding the loaded members as a partial and invalid result
+ givenRoomInfo(aRoomInfo(joinedMembersCount = 2))
+ }
+ )
+ val presenter = createPresenter(joinedRoom = room)
+ moleculeFlow(RecompositionMode.Immediate) {
+ presenter.present()
+ }.test {
+ skipItems(1)
+ val initialState = awaitItem()
+ assertThat(initialState.roomMembers.isLoading()).isTrue()
+ room.givenRoomMembersState(RoomMembersState.Ready(aRoomMemberList()))
+ // Skip item while the new members state is processed
+ skipItems(1)
+ val loadedMembersState = awaitItem()
+ assertThat(loadedMembersState.roomMembers.isLoading()).isFalse()
+ assertThat(loadedMembersState.roomMembers.dataOrNull()?.joined).isNotEmpty()
+
+ // Assert no events are emitted only with that change
+ expectNoEvents()
+
+ // This will only progress if the `Room.updateMembers()` function is called, triggered by the RoomInfo change
+ withTimeout(10.seconds) {
+ reloadMembersMutex.withLock {
+ launch { room.givenRoomInfo(aRoomInfo(activeMembersCount = 0L)) }
+ }
+ }
+
+ // Wait for the update to be processed
+ skipItems(1)
+
+ // Update the room members state as `Room.updateMembers()` would have done with the actual implementation
+ room.givenRoomMembersState(RoomMembersState.Ready(persistentListOf()))
+ // Wait for another update
+ skipItems(1)
+ // The members should be reloaded now
+ assertThat(awaitItem().roomMembers.dataOrNull()?.joined).isEmpty()
+ }
+ }
+
@Test
fun `open search`() = runTest {
val presenter = createPresenter(
diff --git a/features/roommembermoderation/impl/src/main/res/values-fa/translations.xml b/features/roommembermoderation/impl/src/main/res/values-fa/translations.xml
index a51b49b232..a5b7e75950 100644
--- a/features/roommembermoderation/impl/src/main/res/values-fa/translations.xml
+++ b/features/roommembermoderation/impl/src/main/res/values-fa/translations.xml
@@ -12,4 +12,6 @@
"برداشتن از اتاق"
"برداشتن عضو و تحریم پیوستن در آینده؟"
"برداشتن %1$s…"
+ "رفع انسداد"
+ "رفع تحریم %1$s"
diff --git a/features/securebackup/impl/src/main/res/values-fa/translations.xml b/features/securebackup/impl/src/main/res/values-fa/translations.xml
index 095dcbc139..8d30613518 100644
--- a/features/securebackup/impl/src/main/res/values-fa/translations.xml
+++ b/features/securebackup/impl/src/main/res/values-fa/translations.xml
@@ -5,6 +5,7 @@
"ذخیرهٔ کلیدهای پیامها و هویت رمزنگاریتان به صورت امن روی کارساز. این کار میگذارد تاریخچهٔ پیامهایتان را روی هر افزارهٔ جدیدی ببینید. %1$s."
"ذخیرهساز کلید"
"بارگذاری کلیدها از ین افزاره"
+ "اجازهٔ ذخیرهٔ کلید"
"تغییر کلید بازیابی"
"ورود کلید بازیابی"
"ذخیرهساز کلیدتان از همگام بودن در آمده."
@@ -25,11 +26,11 @@
"نمیتوانید تأیید کنید؟ لازم است هویتتان را بازنشانی کنید."
"خاموش کردن"
"اگر از سیستم همه دستگاه ها خارج شده باشید، پیام های رمزگذاری شده خود را از دست خواهید داد."
- "آیا مطمئن هستید که می خواهید پشتیبان گیری را خاموش کنید؟"
- "حذف فضای ذخیره سازی کلید، هویت رمزنگاری و کلیدهای پیام شما را از سرور حذف می کند و ویژگی های امنیتی زیر را خاموش می کند:"
+ "مطمئنید که میخواهید پشتیبان گیری را خاموش کنید؟"
+ "حذف فضای ذخیره سازی کلید، هویت رمزنگاری و کلیدهای پیام شما را از کارساز حذف می کند و ویژگی های امنیتی زیر را خاموش می کند:"
"سابقه پیام رمزگذاری شده در دستگاه های جدید نخواهید داشت"
"اگر از %1$s در همه جا خارج شده باشید، دسترسی به پیام های رمزگذاری شده خود را از دست خواهید داد"
- "آیا مطمئن هستید که می خواهید فضای ذخیره سازی کلید را خاموش کرده و آن را حذف کنید؟"
+ "مطمئنید که میخواهید فضای ذخیره سازی کلید را خاموش کرده و آن را حذف کنید؟"
"گرفتن کلید بازیابی جدید در صورت فراموشی کلید کنونی. پس از تغییر دادن کلید بازیابیتان، کلید پیشین دیگر کار نخواهد کرد."
"تولید کلید بازیابی جدید"
"با کسی همرسانیش نکنید!"
diff --git a/features/signedout/impl/src/main/res/values-fa/translations.xml b/features/signedout/impl/src/main/res/values-fa/translations.xml
index a2336114f0..db3c1dfe16 100644
--- a/features/signedout/impl/src/main/res/values-fa/translations.xml
+++ b/features/signedout/impl/src/main/res/values-fa/translations.xml
@@ -2,7 +2,7 @@
"گذرواژهتان را در نشستی دیگر تغییر دادهاید"
"این نشست را از نشستی دیگر حذف کردهاید"
- "مدیر سرور شما دسترسی شما را لغو کرده است."
+ "مدیر کارسازتان دسترسیتان را نامعتبر کرده است"
"ممکن است به یکی از دلایل ذکر شده در زیر از سیستم خارج شده باشید. لطفا برای ادامه استفاده از %s دوباره وارد شوید."
"خارج شدهاید"
diff --git a/features/verifysession/impl/src/main/res/values-fa/translations.xml b/features/verifysession/impl/src/main/res/values-fa/translations.xml
index 949f4ab27c..4395789a51 100644
--- a/features/verifysession/impl/src/main/res/values-fa/translations.xml
+++ b/features/verifysession/impl/src/main/res/values-fa/translations.xml
@@ -14,7 +14,7 @@
"تأیید کنید که ایموجی های زیر با ایموجی های نشان داده شده در جلسه دیگر شما مطابقت دارند."
"مقایسهٔ شکلکها"
"مقایسهٔ اعداد"
- "نشست جدید شما اکنون تأیید شدهاست. این نشست به پیامهای رمزگذاری شدهی شما دسترسی داشته و سایر کاربران نیز این نشست را قابل اعتماد می دانند."
+ "اکنون نشست جدیدتان تأیید شده. این نشست به پیامهای رمزنگارش شدهتان دسترسی داشته و دیگر کاربران مطمئن میبینندش."
"ورود کلید بازیابی"
"برای دسترسی به تاریخچه پیامهای رمزگذاریشدهتان، ثابت کنید که خودتان هستید."
"گشودن نشستی موجود"
diff --git a/gradle.properties b/gradle.properties
index 513fcac955..7f6fe32a88 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -31,6 +31,7 @@ org.gradle.parallel=true
# Caching
org.gradle.caching=true
org.gradle.configuration-cache=true
+org.gradle.configuration-cache.parallel=true
kotlin.incremental=true
# Dummy values for signing secrets / nightly
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 04809a57a8..33834ed2f5 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -16,7 +16,7 @@ constraintlayout = "2.2.1"
constraintlayout_compose = "1.1.1"
lifecycle = "2.9.2"
activity = "1.10.1"
-media3 = "1.7.1"
+media3 = "1.8.0"
camera = "1.4.2"
# Compose
@@ -176,7 +176,7 @@ jsoup = "org.jsoup:jsoup:1.21.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.7.28"
+matrix_sdk = "org.matrix.rustcomponents:sdk-android:25.8.5"
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" }
@@ -215,7 +215,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.13.1"
+element_call_embedded = "io.element.android:element-call-embedded:0.14.1"
# Auto services
google_autoservice = { module = "com.google.auto.service:auto-service", version.ref = "autoservice" }
diff --git a/libraries/architecture/build.gradle.kts b/libraries/architecture/build.gradle.kts
index 8db06089f3..c50cf39122 100644
--- a/libraries/architecture/build.gradle.kts
+++ b/libraries/architecture/build.gradle.kts
@@ -19,6 +19,7 @@ dependencies {
api(libs.dagger)
api(libs.appyx.core)
api(libs.androidx.lifecycle.runtime)
+ api(libs.molecule.runtime)
testImplementation(libs.test.junit)
testImplementation(libs.coroutines.test)
diff --git a/libraries/architecture/src/main/kotlin/io/element/android/libraries/architecture/appyx/NodeExt.kt b/libraries/architecture/src/main/kotlin/io/element/android/libraries/architecture/appyx/NodeExt.kt
new file mode 100644
index 0000000000..3874ec2080
--- /dev/null
+++ b/libraries/architecture/src/main/kotlin/io/element/android/libraries/architecture/appyx/NodeExt.kt
@@ -0,0 +1,34 @@
+/*
+ * 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(InternalComposeApi::class)
+
+package io.element.android.libraries.architecture.appyx
+
+import androidx.compose.runtime.Composable
+import androidx.compose.runtime.InternalComposeApi
+import androidx.compose.runtime.currentComposer
+import androidx.lifecycle.compose.LocalLifecycleOwner
+import androidx.lifecycle.lifecycleScope
+import app.cash.molecule.AndroidUiDispatcher
+import app.cash.molecule.RecompositionMode
+import app.cash.molecule.launchMolecule
+import com.bumble.appyx.core.node.Node
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.flow.StateFlow
+
+fun Node.launchMolecule(body: @Composable () -> State): StateFlow {
+ val scope = CoroutineScope(lifecycleScope.coroutineContext + AndroidUiDispatcher.Main)
+ return scope.launchMolecule(mode = RecompositionMode.ContextClock) {
+ currentComposer.startProviders(
+ values = arrayOf(LocalLifecycleOwner provides this),
+ )
+ val state = body()
+ currentComposer.endProviders()
+ state
+ }
+}
diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/JoinedRoom.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/JoinedRoom.kt
index e6d17e27a5..fae6b04a93 100644
--- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/JoinedRoom.kt
+++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/JoinedRoom.kt
@@ -156,11 +156,6 @@ interface JoinedRoom : BaseRoom {
*/
fun getWidgetDriver(widgetSettings: MatrixWidgetSettings): Result
- /**
- * Send an Element Call started notification if needed.
- */
- suspend fun sendCallNotificationIfNeeded(): Result
-
suspend fun setSendQueueEnabled(enabled: Boolean)
/**
diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/powerlevels/MatrixRoomMembersWithRole.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/powerlevels/MatrixRoomMembersWithRole.kt
index 52a2dd691d..30719626a8 100644
--- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/powerlevels/MatrixRoomMembersWithRole.kt
+++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/powerlevels/MatrixRoomMembersWithRole.kt
@@ -9,21 +9,33 @@ package io.element.android.libraries.matrix.api.room.powerlevels
import io.element.android.libraries.matrix.api.room.BaseRoom
import io.element.android.libraries.matrix.api.room.RoomMember
+import io.element.android.libraries.matrix.api.room.RoomMembersState
import io.element.android.libraries.matrix.api.room.activeRoomMembers
import kotlinx.collections.immutable.ImmutableList
import kotlinx.collections.immutable.toPersistentList
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.distinctUntilChanged
+import kotlinx.coroutines.flow.filter
import kotlinx.coroutines.flow.map
+import kotlinx.coroutines.flow.onStart
/**
* Return a flow of the list of active room members who have the given role.
*/
fun BaseRoom.usersWithRole(role: RoomMember.Role): Flow> {
+ // Ensure the room members flow is ready
+ val readyMembersFlow = membersStateFlow
+ .onStart {
+ if (membersStateFlow.value is RoomMembersState.Unknown) {
+ updateMembers()
+ }
+ }
+ .filter { it is RoomMembersState.Ready }
+
return roomInfoFlow
.map { roomInfo -> roomInfo.usersWithRole(role) }
- .combine(membersStateFlow) { powerLevels, membersState ->
+ .combine(readyMembersFlow) { powerLevels, membersState ->
membersState.activeRoomMembers()
.filter { powerLevels.contains(it.userId) }
.toPersistentList()
diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/widget/CallWidgetSettingsProvider.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/widget/CallWidgetSettingsProvider.kt
index c87316a1dc..7a735bbf92 100644
--- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/widget/CallWidgetSettingsProvider.kt
+++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/widget/CallWidgetSettingsProvider.kt
@@ -14,5 +14,6 @@ interface CallWidgetSettingsProvider {
baseUrl: String,
widgetId: String = UUID.randomUUID().toString(),
encrypted: Boolean,
+ direct: Boolean,
): MatrixWidgetSettings
}
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 a7dc2523ad..889c583c4e 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
@@ -428,12 +428,6 @@ class JoinedRustRoom(
}
}
- override suspend fun sendCallNotificationIfNeeded(): Result = withContext(roomDispatcher) {
- runCatchingExceptions {
- innerRoom.sendCallNotificationIfNeeded()
- }
- }
-
override suspend fun setSendQueueEnabled(enabled: Boolean) {
withContext(roomDispatcher) {
Timber.d("setSendQueuesEnabled: $enabled")
diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/roomlist/RoomListFactory.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/roomlist/RoomListFactory.kt
index 53b8127ab8..15ba644fcf 100644
--- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/roomlist/RoomListFactory.kt
+++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/roomlist/RoomListFactory.kt
@@ -29,6 +29,7 @@ import org.matrix.rustcomponents.sdk.RoomList as InnerRoomList
private val ROOM_LIST_RUST_FILTERS = listOf(
RoomListEntriesDynamicFilterKind.NonLeft,
+ RoomListEntriesDynamicFilterKind.NonSpace,
RoomListEntriesDynamicFilterKind.DeduplicateVersions
)
diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/MatrixTimelineDiffProcessor.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/MatrixTimelineDiffProcessor.kt
index 2088b6bc1d..eb27f2d667 100644
--- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/MatrixTimelineDiffProcessor.kt
+++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/MatrixTimelineDiffProcessor.kt
@@ -14,7 +14,6 @@ import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.sync.Mutex
import kotlinx.coroutines.sync.withLock
-import org.matrix.rustcomponents.sdk.TimelineChange
import org.matrix.rustcomponents.sdk.TimelineDiff
import org.matrix.rustcomponents.sdk.TimelineItem
import timber.log.Timber
@@ -49,13 +48,13 @@ internal class MatrixTimelineDiffProcessor(
}
private fun MutableList.applyDiff(diff: TimelineDiff) {
- when (diff.change()) {
- TimelineChange.APPEND -> {
- val items = diff.append()?.map { it.asMatrixTimelineItem() } ?: return
+ when (diff) {
+ is TimelineDiff.Append -> {
+ val items = diff.values.map { it.asMatrixTimelineItem() }
addAll(items)
}
- TimelineChange.PUSH_BACK -> {
- val item = diff.pushBack()?.asMatrixTimelineItem() ?: return
+ is TimelineDiff.PushBack -> {
+ val item = diff.value.asMatrixTimelineItem()
if (item is MatrixTimelineItem.Event && item.event.content is RoomMembershipContent) {
// TODO - This is a temporary solution to notify the room screen about membership changes
// Ideally, this should be implemented by the Rust SDK
@@ -63,41 +62,37 @@ internal class MatrixTimelineDiffProcessor(
}
add(item)
}
- TimelineChange.PUSH_FRONT -> {
- val item = diff.pushFront()?.asMatrixTimelineItem() ?: return
+ is TimelineDiff.PushFront -> {
+ val item = diff.value.asMatrixTimelineItem()
add(0, item)
}
- TimelineChange.SET -> {
- val updateAtData = diff.set() ?: return
- val item = updateAtData.item.asMatrixTimelineItem()
- set(updateAtData.index.toInt(), item)
+ is TimelineDiff.Set -> {
+ val item = diff.value.asMatrixTimelineItem()
+ set(diff.index.toInt(), item)
}
- TimelineChange.INSERT -> {
- val insertAtData = diff.insert() ?: return
- val item = insertAtData.item.asMatrixTimelineItem()
- add(insertAtData.index.toInt(), item)
+ is TimelineDiff.Insert -> {
+ val item = diff.value.asMatrixTimelineItem()
+ add(diff.index.toInt(), item)
}
- TimelineChange.REMOVE -> {
- val removeAtData = diff.remove() ?: return
- removeAt(removeAtData.toInt())
+ is TimelineDiff.Remove -> {
+ removeAt(diff.index.toInt())
}
- TimelineChange.RESET -> {
+ is TimelineDiff.Reset -> {
clear()
- val items = diff.reset()?.map { it.asMatrixTimelineItem() } ?: return
+ val items = diff.values.map { it.asMatrixTimelineItem() }
addAll(items)
}
- TimelineChange.POP_FRONT -> {
+ TimelineDiff.PopFront -> {
removeFirstOrNull()
}
- TimelineChange.POP_BACK -> {
+ TimelineDiff.PopBack -> {
removeLastOrNull()
}
- TimelineChange.CLEAR -> {
+ TimelineDiff.Clear -> {
clear()
}
- TimelineChange.TRUNCATE -> {
- val index = diff.truncate() ?: return
- subList(index.toInt(), size).clear()
+ is TimelineDiff.Truncate -> {
+ subList(diff.length.toInt(), size).clear()
}
}
}
diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/TimelineDiffExt.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/TimelineDiffExt.kt
index 6e79faae32..2da28399f6 100644
--- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/TimelineDiffExt.kt
+++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/TimelineDiffExt.kt
@@ -7,7 +7,6 @@
package io.element.android.libraries.matrix.impl.timeline
-import org.matrix.rustcomponents.sdk.TimelineChange
import org.matrix.rustcomponents.sdk.TimelineDiff
import org.matrix.rustcomponents.sdk.TimelineItem
import uniffi.matrix_sdk_ui.EventItemOrigin
@@ -17,25 +16,13 @@ import uniffi.matrix_sdk_ui.EventItemOrigin
* If there is multiple events in the diff, uses the first one as it should be a good indicator.
*/
internal fun TimelineDiff.eventOrigin(): EventItemOrigin? {
- return when (change()) {
- TimelineChange.APPEND -> {
- append()?.firstOrNull()?.eventOrigin()
- }
- TimelineChange.PUSH_BACK -> {
- pushBack()?.eventOrigin()
- }
- TimelineChange.PUSH_FRONT -> {
- pushFront()?.eventOrigin()
- }
- TimelineChange.SET -> {
- set()?.item?.eventOrigin()
- }
- TimelineChange.INSERT -> {
- insert()?.item?.eventOrigin()
- }
- TimelineChange.RESET -> {
- reset()?.firstOrNull()?.eventOrigin()
- }
+ return when (this) {
+ is TimelineDiff.Append -> values.firstOrNull()?.eventOrigin()
+ is TimelineDiff.PushBack -> value.eventOrigin()
+ is TimelineDiff.PushFront -> value.eventOrigin()
+ is TimelineDiff.Set -> value.eventOrigin()
+ is TimelineDiff.Insert -> value.eventOrigin()
+ is TimelineDiff.Reset -> values.firstOrNull()?.eventOrigin()
else -> null
}
}
diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/widget/DefaultCallWidgetSettingsProvider.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/widget/DefaultCallWidgetSettingsProvider.kt
index 90b3c16906..863dd6f0a2 100644
--- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/widget/DefaultCallWidgetSettingsProvider.kt
+++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/widget/DefaultCallWidgetSettingsProvider.kt
@@ -19,6 +19,7 @@ import kotlinx.coroutines.flow.first
import org.matrix.rustcomponents.sdk.newVirtualElementCallWidget
import uniffi.matrix_sdk.EncryptionSystem
import uniffi.matrix_sdk.HeaderStyle
+import uniffi.matrix_sdk.NotificationType
import uniffi.matrix_sdk.VirtualElementCallWidgetOptions
import javax.inject.Inject
import uniffi.matrix_sdk.Intent as CallIntent
@@ -29,7 +30,7 @@ class DefaultCallWidgetSettingsProvider @Inject constructor(
private val callAnalyticsCredentialsProvider: CallAnalyticCredentialsProvider,
private val analyticsService: AnalyticsService,
) : CallWidgetSettingsProvider {
- override suspend fun provide(baseUrl: String, widgetId: String, encrypted: Boolean): MatrixWidgetSettings {
+ override suspend fun provide(baseUrl: String, widgetId: String, encrypted: Boolean, direct: Boolean): MatrixWidgetSettings {
val isAnalyticsEnabled = analyticsService.userConsentFlow.first()
val options = VirtualElementCallWidgetOptions(
elementCallUrl = baseUrl,
@@ -53,6 +54,7 @@ class DefaultCallWidgetSettingsProvider @Inject constructor(
hideHeader = true,
controlledMediaDevices = true,
header = HeaderStyle.APP_BAR,
+ sendNotificationType = if (direct) NotificationType.RING else NotificationType.NOTIFICATION,
)
val rustWidgetSettings = newVirtualElementCallWidget(options)
return MatrixWidgetSettings.fromRustWidgetSettings(rustWidgetSettings)
diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiTimelineDiff.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiTimelineDiff.kt
deleted file mode 100644
index 605d2d6815..0000000000
--- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiTimelineDiff.kt
+++ /dev/null
@@ -1,30 +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 org.matrix.rustcomponents.sdk.InsertData
-import org.matrix.rustcomponents.sdk.NoPointer
-import org.matrix.rustcomponents.sdk.SetData
-import org.matrix.rustcomponents.sdk.TimelineChange
-import org.matrix.rustcomponents.sdk.TimelineDiff
-import org.matrix.rustcomponents.sdk.TimelineItem
-
-class FakeFfiTimelineDiff(
- private val change: TimelineChange,
- private val item: TimelineItem? = FakeFfiTimelineItem()
-) : TimelineDiff(NoPointer) {
- override fun change() = change
- override fun append(): List? = item?.let { listOf(it) }
- override fun insert(): InsertData? = item?.let { InsertData(1u, it) }
- override fun pushBack(): TimelineItem? = item
- override fun pushFront(): TimelineItem? = item
- override fun remove(): UInt? = 1u
- override fun reset(): List? = item?.let { listOf(it) }
- override fun set(): SetData? = item?.let { SetData(1u, it) }
- override fun truncate(): UInt? = 1u
-}
diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/timeline/MatrixTimelineDiffProcessorTest.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/timeline/MatrixTimelineDiffProcessorTest.kt
index a4029417cf..b82c8dfbfb 100644
--- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/timeline/MatrixTimelineDiffProcessorTest.kt
+++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/timeline/MatrixTimelineDiffProcessorTest.kt
@@ -9,7 +9,7 @@ package io.element.android.libraries.matrix.impl.timeline
import com.google.common.truth.Truth.assertThat
import io.element.android.libraries.matrix.api.timeline.MatrixTimelineItem
-import io.element.android.libraries.matrix.impl.fixtures.fakes.FakeFfiTimelineDiff
+import io.element.android.libraries.matrix.impl.fixtures.fakes.FakeFfiTimelineItem
import io.element.android.libraries.matrix.impl.timeline.item.event.EventTimelineItemMapper
import io.element.android.libraries.matrix.impl.timeline.item.event.TimelineEventContentMapper
import io.element.android.libraries.matrix.impl.timeline.item.virtual.VirtualTimelineItemMapper
@@ -21,7 +21,7 @@ import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runTest
import org.junit.Test
-import org.matrix.rustcomponents.sdk.TimelineChange
+import org.matrix.rustcomponents.sdk.TimelineDiff
class MatrixTimelineDiffProcessorTest {
private val timelineItems = MutableStateFlow>(emptyList())
@@ -33,7 +33,7 @@ class MatrixTimelineDiffProcessorTest {
fun `Append adds new entries at the end of the list`() = runTest {
timelineItems.value = listOf(anEvent)
val processor = createMatrixTimelineDiffProcessor(timelineItems)
- processor.postDiffs(listOf(FakeFfiTimelineDiff(change = TimelineChange.APPEND)))
+ processor.postDiffs(listOf(TimelineDiff.Append(listOf(FakeFfiTimelineItem()))))
assertThat(timelineItems.value.count()).isEqualTo(2)
assertThat(timelineItems.value).containsExactly(
anEvent,
@@ -45,7 +45,7 @@ class MatrixTimelineDiffProcessorTest {
fun `PushBack adds a new entry at the end of the list`() = runTest {
timelineItems.value = listOf(anEvent)
val processor = createMatrixTimelineDiffProcessor(timelineItems)
- processor.postDiffs(listOf(FakeFfiTimelineDiff(change = TimelineChange.PUSH_BACK)))
+ processor.postDiffs(listOf(TimelineDiff.PushBack(FakeFfiTimelineItem())))
assertThat(timelineItems.value.count()).isEqualTo(2)
assertThat(timelineItems.value).containsExactly(
anEvent,
@@ -57,7 +57,7 @@ class MatrixTimelineDiffProcessorTest {
fun `PushFront inserts a new entry at the start of the list`() = runTest {
timelineItems.value = listOf(anEvent)
val processor = createMatrixTimelineDiffProcessor(timelineItems)
- processor.postDiffs(listOf(FakeFfiTimelineDiff(change = TimelineChange.PUSH_FRONT)))
+ processor.postDiffs(listOf(TimelineDiff.PushFront(FakeFfiTimelineItem())))
assertThat(timelineItems.value.count()).isEqualTo(2)
assertThat(timelineItems.value).containsExactly(
MatrixTimelineItem.Other,
@@ -69,7 +69,7 @@ class MatrixTimelineDiffProcessorTest {
fun `Set replaces an entry at some index`() = runTest {
timelineItems.value = listOf(anEvent, anEvent2)
val processor = createMatrixTimelineDiffProcessor(timelineItems)
- processor.postDiffs(listOf(FakeFfiTimelineDiff(change = TimelineChange.SET)))
+ processor.postDiffs(listOf(TimelineDiff.Set(1u, FakeFfiTimelineItem())))
assertThat(timelineItems.value.count()).isEqualTo(2)
assertThat(timelineItems.value).containsExactly(
anEvent,
@@ -81,7 +81,7 @@ class MatrixTimelineDiffProcessorTest {
fun `Insert inserts a new entry at the provided index`() = runTest {
timelineItems.value = listOf(anEvent, anEvent2)
val processor = createMatrixTimelineDiffProcessor(timelineItems)
- processor.postDiffs(listOf(FakeFfiTimelineDiff(change = TimelineChange.INSERT)))
+ processor.postDiffs(listOf(TimelineDiff.Insert(1u, FakeFfiTimelineItem())))
assertThat(timelineItems.value.count()).isEqualTo(3)
assertThat(timelineItems.value).containsExactly(
anEvent,
@@ -94,7 +94,7 @@ class MatrixTimelineDiffProcessorTest {
fun `Remove removes an entry at some index`() = runTest {
timelineItems.value = listOf(anEvent, MatrixTimelineItem.Other, anEvent2)
val processor = createMatrixTimelineDiffProcessor(timelineItems)
- processor.postDiffs(listOf(FakeFfiTimelineDiff(change = TimelineChange.REMOVE)))
+ processor.postDiffs(listOf(TimelineDiff.Remove(1u)))
assertThat(timelineItems.value.count()).isEqualTo(2)
assertThat(timelineItems.value).containsExactly(
anEvent,
@@ -106,7 +106,7 @@ class MatrixTimelineDiffProcessorTest {
fun `PopBack removes an entry at the end of the list`() = runTest {
timelineItems.value = listOf(anEvent, anEvent2)
val processor = createMatrixTimelineDiffProcessor(timelineItems)
- processor.postDiffs(listOf(FakeFfiTimelineDiff(change = TimelineChange.POP_BACK)))
+ processor.postDiffs(listOf(TimelineDiff.PopBack))
assertThat(timelineItems.value.count()).isEqualTo(1)
assertThat(timelineItems.value).containsExactly(
anEvent,
@@ -117,7 +117,7 @@ class MatrixTimelineDiffProcessorTest {
fun `PopFront removes an entry at the start of the list`() = runTest {
timelineItems.value = listOf(anEvent, anEvent2)
val processor = createMatrixTimelineDiffProcessor(timelineItems)
- processor.postDiffs(listOf(FakeFfiTimelineDiff(change = TimelineChange.POP_FRONT)))
+ processor.postDiffs(listOf(TimelineDiff.PopFront))
assertThat(timelineItems.value.count()).isEqualTo(1)
assertThat(timelineItems.value).containsExactly(
anEvent2,
@@ -128,7 +128,7 @@ class MatrixTimelineDiffProcessorTest {
fun `Clear removes all the entries`() = runTest {
timelineItems.value = listOf(anEvent, anEvent2)
val processor = createMatrixTimelineDiffProcessor(timelineItems)
- processor.postDiffs(listOf(FakeFfiTimelineDiff(change = TimelineChange.CLEAR)))
+ processor.postDiffs(listOf(TimelineDiff.Clear))
assertThat(timelineItems.value).isEmpty()
}
@@ -136,7 +136,7 @@ class MatrixTimelineDiffProcessorTest {
fun `Truncate removes all entries after the provided length`() = runTest {
timelineItems.value = listOf(anEvent, MatrixTimelineItem.Other, anEvent2)
val processor = createMatrixTimelineDiffProcessor(timelineItems)
- processor.postDiffs(listOf(FakeFfiTimelineDiff(change = TimelineChange.TRUNCATE)))
+ processor.postDiffs(listOf(TimelineDiff.Truncate(1u)))
assertThat(timelineItems.value.count()).isEqualTo(1)
assertThat(timelineItems.value).containsExactly(
anEvent,
@@ -147,7 +147,7 @@ class MatrixTimelineDiffProcessorTest {
fun `Reset removes all entries and add the provided ones`() = runTest {
timelineItems.value = listOf(anEvent, MatrixTimelineItem.Other, anEvent2)
val processor = createMatrixTimelineDiffProcessor(timelineItems)
- processor.postDiffs(listOf(FakeFfiTimelineDiff(change = TimelineChange.RESET)))
+ processor.postDiffs(listOf(TimelineDiff.Reset(listOf(FakeFfiTimelineItem()))))
assertThat(timelineItems.value.count()).isEqualTo(1)
assertThat(timelineItems.value).containsExactly(
MatrixTimelineItem.Other,
diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/timeline/RustTimelineTest.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/timeline/RustTimelineTest.kt
index 8fcb352075..3fea130ece 100644
--- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/timeline/RustTimelineTest.kt
+++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/timeline/RustTimelineTest.kt
@@ -18,7 +18,6 @@ import io.element.android.libraries.matrix.api.timeline.Timeline
import io.element.android.libraries.matrix.api.timeline.item.virtual.VirtualTimelineItem
import io.element.android.libraries.matrix.impl.fixtures.fakes.FakeFfiRoomListService
import io.element.android.libraries.matrix.impl.fixtures.fakes.FakeFfiTimeline
-import io.element.android.libraries.matrix.impl.fixtures.fakes.FakeFfiTimelineDiff
import io.element.android.libraries.matrix.impl.room.RoomContentForwarder
import io.element.android.libraries.matrix.test.room.FakeJoinedRoom
import io.element.android.libraries.matrix.test.room.aRoomInfo
@@ -33,7 +32,7 @@ import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Test
-import org.matrix.rustcomponents.sdk.TimelineChange
+import org.matrix.rustcomponents.sdk.TimelineDiff
import uniffi.matrix_sdk.RoomPaginationStatus
import org.matrix.rustcomponents.sdk.Timeline as InnerTimeline
@@ -51,10 +50,7 @@ class RustTimelineTest {
runCurrent()
inner.emitDiff(
listOf(
- FakeFfiTimelineDiff(
- item = null,
- change = TimelineChange.RESET,
- )
+ TimelineDiff.Reset(emptyList())
)
)
with(awaitItem()) {
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 03c1567c95..1df51dc5c2 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
@@ -12,7 +12,6 @@ import com.google.common.truth.Truth.assertThat
import io.element.android.libraries.matrix.api.timeline.MatrixTimelineItem
import io.element.android.libraries.matrix.impl.fixtures.factories.aRustEventTimelineItem
import io.element.android.libraries.matrix.impl.fixtures.fakes.FakeFfiTimeline
-import io.element.android.libraries.matrix.impl.fixtures.fakes.FakeFfiTimelineDiff
import io.element.android.libraries.matrix.impl.fixtures.fakes.FakeFfiTimelineItem
import io.element.android.tests.testutils.lambda.lambdaError
import io.element.android.tests.testutils.lambda.lambdaRecorder
@@ -24,7 +23,7 @@ import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.matrix.rustcomponents.sdk.Timeline
-import org.matrix.rustcomponents.sdk.TimelineChange
+import org.matrix.rustcomponents.sdk.TimelineDiff
import uniffi.matrix_sdk_ui.EventItemOrigin
@OptIn(ExperimentalCoroutinesApi::class)
@@ -42,7 +41,7 @@ class TimelineItemsSubscriberTest {
timelineItemsSubscriber.subscribeIfNeeded()
// Wait for the listener to be set.
runCurrent()
- timeline.emitDiff(listOf(FakeFfiTimelineDiff(item = null, change = TimelineChange.RESET)))
+ timeline.emitDiff(listOf(TimelineDiff.Reset(emptyList())))
val final = awaitItem()
assertThat(final).isEmpty()
timelineItemsSubscriber.unsubscribeIfNeeded()
@@ -62,7 +61,7 @@ class TimelineItemsSubscriberTest {
timelineItemsSubscriber.subscribeIfNeeded()
// Wait for the listener to be set.
runCurrent()
- timeline.emitDiff(listOf(FakeFfiTimelineDiff(item = FakeFfiTimelineItem(), change = TimelineChange.RESET)))
+ timeline.emitDiff(listOf(TimelineDiff.Reset(listOf(FakeFfiTimelineItem()))))
val final = awaitItem()
assertThat(final).isNotEmpty()
timelineItemsSubscriber.unsubscribeIfNeeded()
@@ -86,11 +85,10 @@ class TimelineItemsSubscriberTest {
runCurrent()
timeline.emitDiff(
listOf(
- FakeFfiTimelineDiff(
- item = FakeFfiTimelineItem(
+ TimelineDiff.Reset(
+ listOf(FakeFfiTimelineItem(
asEventResult = aRustEventTimelineItem(origin = EventItemOrigin.SYNC),
- ),
- change = TimelineChange.RESET,
+ ))
)
)
)
diff --git a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/FakeJoinedRoom.kt b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/FakeJoinedRoom.kt
index c98c886129..4681937b42 100644
--- a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/FakeJoinedRoom.kt
+++ b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/FakeJoinedRoom.kt
@@ -55,7 +55,6 @@ class FakeJoinedRoom(
private val roomNotificationSettingsService: FakeNotificationSettingsService = FakeNotificationSettingsService(),
private var createTimelineResult: (CreateTimelineParams) -> Result = { lambdaError() },
private val editMessageLambda: (EventId, String, String?, List) -> Result = { _, _, _, _ -> lambdaError() },
- private val sendCallNotificationIfNeededResult: () -> Result = { lambdaError() },
private val progressCallbackValues: List> = emptyList(),
private val generateWidgetWebViewUrlResult: (MatrixWidgetSettings, String, String?, String?) -> Result = { _, _, _, _ -> lambdaError() },
private val getWidgetDriverResult: (MatrixWidgetSettings) -> Result = { lambdaError() },
@@ -207,10 +206,6 @@ class FakeJoinedRoom(
return getWidgetDriverResult(widgetSettings)
}
- override suspend fun sendCallNotificationIfNeeded(): Result = simulateLongTask {
- sendCallNotificationIfNeededResult()
- }
-
override suspend fun setSendQueueEnabled(enabled: Boolean) = simulateLongTask {
setSendQueueEnabledResult(enabled)
}
diff --git a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/RoomMemberFixture.kt b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/RoomMemberFixture.kt
index 4c620dfd5a..e2644cdf4d 100644
--- a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/RoomMemberFixture.kt
+++ b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/RoomMemberFixture.kt
@@ -10,6 +10,7 @@ package io.element.android.libraries.matrix.test.room
import io.element.android.libraries.matrix.api.core.UserId
import io.element.android.libraries.matrix.api.room.RoomMember
import io.element.android.libraries.matrix.api.room.RoomMembershipState
+import kotlinx.collections.immutable.persistentListOf
fun aRoomMember(
userId: UserId = UserId("@alice:server.org"),
@@ -34,3 +35,31 @@ fun aRoomMember(
role = role,
membershipChangeReason = membershipChangeReason,
)
+
+fun aRoomMemberList() = persistentListOf(
+ anAlice(),
+ aBob(),
+ aRoomMember(UserId("@carol:server.org"), "Carol"),
+ aRoomMember(UserId("@david:server.org"), "David"),
+ aRoomMember(UserId("@eve:server.org"), "Eve"),
+ aRoomMember(UserId("@justin:server.org"), "Justin"),
+ aRoomMember(UserId("@mallory:server.org"), "Mallory"),
+ aRoomMember(UserId("@susie:server.org"), "Susie"),
+ aVictor(),
+ aWalter(),
+)
+
+fun anAlice() = aRoomMember(UserId("@alice:server.org"), "Alice", role = RoomMember.Role.Admin)
+fun aBob() = aRoomMember(UserId("@bob:server.org"), "Bob", role = RoomMember.Role.Moderator)
+
+fun aVictor() = aRoomMember(
+ UserId("@victor:server.org"),
+ "Victor",
+ membership = RoomMembershipState.INVITE
+)
+
+fun aWalter() = aRoomMember(
+ UserId("@walter:server.org"),
+ "Walter",
+ membership = RoomMembershipState.INVITE
+)
diff --git a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/widget/FakeCallWidgetSettingsProvider.kt b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/widget/FakeCallWidgetSettingsProvider.kt
index 1b1c65abe3..d052a3d9b8 100644
--- a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/widget/FakeCallWidgetSettingsProvider.kt
+++ b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/widget/FakeCallWidgetSettingsProvider.kt
@@ -11,12 +11,12 @@ import io.element.android.libraries.matrix.api.widget.CallWidgetSettingsProvider
import io.element.android.libraries.matrix.api.widget.MatrixWidgetSettings
class FakeCallWidgetSettingsProvider(
- private val provideFn: (String, String) -> MatrixWidgetSettings = { _, _ -> MatrixWidgetSettings("id", true, "url") }
+ private val provideFn: (String, String, Boolean, Boolean) -> MatrixWidgetSettings = { _, _, _, _ -> MatrixWidgetSettings("id", true, "url") }
) : CallWidgetSettingsProvider {
val providedBaseUrls = mutableListOf()
- override suspend fun provide(baseUrl: String, widgetId: String, encrypted: Boolean): MatrixWidgetSettings {
+ override suspend fun provide(baseUrl: String, widgetId: String, encrypted: Boolean, direct: Boolean): MatrixWidgetSettings {
providedBaseUrls += baseUrl
- return provideFn(baseUrl, widgetId)
+ return provideFn(baseUrl, widgetId, encrypted, direct)
}
}
diff --git a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/room/PowerLevelRoomMemberComparator.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/room/PowerLevelRoomMemberComparator.kt
new file mode 100644
index 0000000000..cd0f8ad591
--- /dev/null
+++ b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/room/PowerLevelRoomMemberComparator.kt
@@ -0,0 +1,28 @@
+/*
+ * 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.matrix.ui.room
+
+import io.element.android.libraries.matrix.api.room.RoomMember
+import java.text.Collator
+
+// Comparator used to sort room members by power level (descending) and then by name (ascending)
+class PowerLevelRoomMemberComparator : Comparator {
+ // Used to simplify and compare unicode and ASCII chars (á == a)
+ private val collator = Collator.getInstance().apply {
+ decomposition = Collator.CANONICAL_DECOMPOSITION
+ }
+ override fun compare(o1: RoomMember, o2: RoomMember): Int {
+ return when {
+ o1.powerLevel > o2.powerLevel -> return -1
+ o1.powerLevel < o2.powerLevel -> return 1
+ else -> {
+ collator.compare(o1.sortingName(), o2.sortingName())
+ }
+ }
+ }
+}
diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/local/player/ExoPlayerForPreview.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/local/player/ExoPlayerForPreview.kt
index a098a53174..19d90bf109 100644
--- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/local/player/ExoPlayerForPreview.kt
+++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/local/player/ExoPlayerForPreview.kt
@@ -42,6 +42,7 @@ import androidx.media3.exoplayer.ExoPlaybackException
import androidx.media3.exoplayer.ExoPlayer
import androidx.media3.exoplayer.PlayerMessage
import androidx.media3.exoplayer.Renderer
+import androidx.media3.exoplayer.ScrubbingModeParameters
import androidx.media3.exoplayer.SeekParameters
import androidx.media3.exoplayer.analytics.AnalyticsCollector
import androidx.media3.exoplayer.analytics.AnalyticsListener
@@ -108,15 +109,10 @@ class ExoPlayerForPreview(
override fun getSeekForwardIncrement(): Long = throw NotImplementedError()
override fun seekForward() {}
override fun hasPreviousMediaItem(): Boolean = throw NotImplementedError()
- override fun seekToPreviousWindow() {}
override fun seekToPreviousMediaItem() {}
override fun getMaxSeekToPreviousPosition(): Long = throw NotImplementedError()
override fun seekToPrevious() {}
- override fun hasNext(): Boolean = throw NotImplementedError()
- override fun hasNextWindow(): Boolean = throw NotImplementedError()
override fun hasNextMediaItem(): Boolean = throw NotImplementedError()
- override fun next() {}
- override fun seekToNextWindow() {}
override fun seekToNextMediaItem() {}
override fun seekToNext() {}
override fun setPlaybackParameters(playbackParameters: PlaybackParameters) {}
@@ -211,6 +207,7 @@ class ExoPlayerForPreview(
override fun addMediaSources(mediaSources: MutableList) {}
override fun addMediaSources(index: Int, mediaSources: MutableList) {}
override fun setShuffleOrder(shuffleOrder: ShuffleOrder) {}
+ override fun getShuffleOrder(): ShuffleOrder = ShuffleOrder.DefaultShuffleOrder(0)
override fun setPreloadConfiguration(preloadConfiguration: ExoPlayer.PreloadConfiguration) {}
override fun getPreloadConfiguration(): ExoPlayer.PreloadConfiguration = throw NotImplementedError()
override fun setAudioSessionId(audioSessionId: Int) {}
@@ -220,6 +217,10 @@ class ExoPlayerForPreview(
override fun setPreferredAudioDevice(audioDeviceInfo: AudioDeviceInfo?) {}
override fun setSkipSilenceEnabled(skipSilenceEnabled: Boolean) {}
override fun getSkipSilenceEnabled(): Boolean = throw NotImplementedError()
+ override fun setScrubbingModeEnabled(scrubbingModeEnabled: Boolean) {}
+ override fun isScrubbingModeEnabled(): Boolean = false
+ override fun setScrubbingModeParameters(scrubbingModeParameters: ScrubbingModeParameters) {}
+ override fun getScrubbingModeParameters(): ScrubbingModeParameters = ScrubbingModeParameters.DEFAULT
override fun setVideoEffects(videoEffects: MutableList) {}
override fun setVideoScalingMode(videoScalingMode: Int) {}
override fun getVideoScalingMode(): Int = throw NotImplementedError()
diff --git a/libraries/mediaviewer/impl/src/main/res/values-fa/translations.xml b/libraries/mediaviewer/impl/src/main/res/values-fa/translations.xml
index cbf9f63758..c43bed885c 100644
--- a/libraries/mediaviewer/impl/src/main/res/values-fa/translations.xml
+++ b/libraries/mediaviewer/impl/src/main/res/values-fa/translations.xml
@@ -1,7 +1,16 @@
+ "حذف پرونده؟"
+ "بررسی اتّصال اینترنتیتان و تلاش دوباره"
+ "سندها، پروندهها و پیامهای صوتی بار گذاشته در این اتاق اینجا نشان داده خواهند شد."
+ "هنوز هیچ پروندهای بارگذاشته نشده"
+ "بار کردن پروندهها…"
+ "بار کردن رسانهها…"
"پروندهها"
"رسانه"
+ "تصویرها و ویدیوهای بار گذاشته در این اتاق اینجا نشان داده خواهند شد."
+ "هنوز هیچ رسانهای بارگذاشته نشده"
+ "رسانهها و پروندهها"
"قالب پرونده"
"نام پرونده"
"بارگذاشته به دست"
diff --git a/libraries/mediaviewer/impl/src/main/res/values-nl/translations.xml b/libraries/mediaviewer/impl/src/main/res/values-nl/translations.xml
new file mode 100644
index 0000000000..ab7f922d95
--- /dev/null
+++ b/libraries/mediaviewer/impl/src/main/res/values-nl/translations.xml
@@ -0,0 +1,4 @@
+
+
+ "Bestand verwijderen?"
+
diff --git a/libraries/previewutils/build.gradle.kts b/libraries/previewutils/build.gradle.kts
new file mode 100644
index 0000000000..92218e9286
--- /dev/null
+++ b/libraries/previewutils/build.gradle.kts
@@ -0,0 +1,21 @@
+/*
+ * Copyright 2022-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.
+ */
+
+plugins {
+ id("io.element.android-library")
+}
+
+android {
+ namespace = "io.element.android.libraries.previewutils"
+
+ dependencies {
+ implementation(projects.libraries.designsystem)
+ implementation(projects.libraries.matrix.api)
+
+ implementation(libs.kotlinx.collections.immutable)
+ }
+}
diff --git a/libraries/previewutils/src/main/kotlin/io/element/android/libraries/previewutils/room/RoomMemberFixture.kt b/libraries/previewutils/src/main/kotlin/io/element/android/libraries/previewutils/room/RoomMemberFixture.kt
new file mode 100644
index 0000000000..0c79bb7eeb
--- /dev/null
+++ b/libraries/previewutils/src/main/kotlin/io/element/android/libraries/previewutils/room/RoomMemberFixture.kt
@@ -0,0 +1,65 @@
+/*
+ * Copyright 2023, 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.previewutils.room
+
+import io.element.android.libraries.matrix.api.core.UserId
+import io.element.android.libraries.matrix.api.room.RoomMember
+import io.element.android.libraries.matrix.api.room.RoomMembershipState
+import kotlinx.collections.immutable.persistentListOf
+
+fun aRoomMember(
+ userId: UserId = UserId("@alice:server.org"),
+ displayName: String? = null,
+ avatarUrl: String? = null,
+ membership: RoomMembershipState = RoomMembershipState.JOIN,
+ isNameAmbiguous: Boolean = false,
+ powerLevel: Long = 0L,
+ normalizedPowerLevel: Long = 0L,
+ isIgnored: Boolean = false,
+ role: RoomMember.Role = RoomMember.Role.User,
+ membershipChangeReason: String? = null,
+) = RoomMember(
+ userId = userId,
+ displayName = displayName,
+ avatarUrl = avatarUrl,
+ membership = membership,
+ isNameAmbiguous = isNameAmbiguous,
+ powerLevel = powerLevel,
+ normalizedPowerLevel = normalizedPowerLevel,
+ isIgnored = isIgnored,
+ role = role,
+ membershipChangeReason = membershipChangeReason,
+)
+
+fun aRoomMemberList() = persistentListOf(
+ anAlice(),
+ aBob(),
+ aRoomMember(UserId("@carol:server.org"), "Carol"),
+ aRoomMember(UserId("@david:server.org"), "David"),
+ aRoomMember(UserId("@eve:server.org"), "Eve"),
+ aRoomMember(UserId("@justin:server.org"), "Justin"),
+ aRoomMember(UserId("@mallory:server.org"), "Mallory"),
+ aRoomMember(UserId("@susie:server.org"), "Susie"),
+ aVictor(),
+ aWalter(),
+)
+
+fun anAlice() = aRoomMember(UserId("@alice:server.org"), "Alice", role = RoomMember.Role.Admin)
+fun aBob() = aRoomMember(UserId("@bob:server.org"), "Bob", role = RoomMember.Role.Moderator)
+
+fun aVictor() = aRoomMember(
+ UserId("@victor:server.org"),
+ "Victor",
+ membership = RoomMembershipState.INVITE
+)
+
+fun aWalter() = aRoomMember(
+ UserId("@walter:server.org"),
+ "Walter",
+ membership = RoomMembershipState.INVITE
+)
diff --git a/libraries/push/impl/src/main/res/values-fa/translations.xml b/libraries/push/impl/src/main/res/values-fa/translations.xml
index 972ee549a2..fd1a064ba6 100644
--- a/libraries/push/impl/src/main/res/values-fa/translations.xml
+++ b/libraries/push/impl/src/main/res/values-fa/translations.xml
@@ -5,31 +5,15 @@
"اعلانهای پرصدا"
"زنگ خوردن تماس"
"اعلانهای صامت"
-
- - "%1$s:%2$d پیام"
- - "%1$s:%2$d پیام"
-
-
- - "%dاعلان"
- - "%dاعلان"
-
- "آگاهی"
+ "پیامهای جدیدی دارید."
"📹 تماس ورودی"
"**شکست در فرستادن - لطفاً اتاق را بگشایید"
"پیوستن"
"رد کردن"
-
- - "%d دعوت"
- - "%d دعوت"
-
"به گپ دعوتتان کرد"
"%1$s به گپ دعوتتان کرد"
"به شما اشاره کرد: %1$s"
"پیام جدید"
-
- - "%d پیام جدید"
- - "%d پیام جدید"
-
"با %1$s واکنش داد"
"علامتگذاری به عنوان خوانده شده"
"پاسخ سریع"
@@ -40,17 +24,9 @@
"دارید آگاهی را مشاهده میکنید! کلیک کنید!"
"%1$s: %2$s"
"%1$s: %2$s %3$s"
-
- - "%d پیام اعلان نشده"
- - "%d پیام اعلان نشده"
-
"%1$s و %2$s"
"%1$s در %2$s"
"%1$s در %2$s و %3$s"
-
- - "%d اتاق"
- - "%d اتاق"
-
"همگام سازی پسزمینه"
"خدمات گوگل"
"خدمت پلی گوگل معتبری پیدا نشد. ممکن است آگاهیها به درستی کار نکنند."
diff --git a/libraries/push/impl/src/main/res/values-fi/translations.xml b/libraries/push/impl/src/main/res/values-fi/translations.xml
index 2a61c14547..3c38dde477 100644
--- a/libraries/push/impl/src/main/res/values-fi/translations.xml
+++ b/libraries/push/impl/src/main/res/values-fi/translations.xml
@@ -30,7 +30,7 @@
- "%d uusi viesti"
- "%d uutta viestiä"
- "Reagoi emojilla %1$s"
+ "Reaktio: %1$s"
"Merkitse luetuksi"
"Pikavastaus"
"Kutsui sinut liittymään huoneeseen"
diff --git a/libraries/textcomposer/impl/src/main/res/values-fa/translations.xml b/libraries/textcomposer/impl/src/main/res/values-fa/translations.xml
index d50983d733..602d35363c 100644
--- a/libraries/textcomposer/impl/src/main/res/values-fa/translations.xml
+++ b/libraries/textcomposer/impl/src/main/res/values-fa/translations.xml
@@ -10,8 +10,12 @@
"پیام رمزنگاری نشده…"
"ایجاد پیوند"
"ویرایش پیوند"
+ "%1$s. وضعیت: %2$s"
"اعمال قالب توپر"
"اعمال قالب کج"
+ "از کار افتاده"
+ "خاموش"
+ "روشن"
"اعمال قالب خطخورده"
"اعمال قالب زیرخطدار"
"تغییر حالت تمامصفحه"
diff --git a/libraries/textcomposer/impl/src/main/res/values-fi/translations.xml b/libraries/textcomposer/impl/src/main/res/values-fi/translations.xml
index 1cd137ee96..b47cda2c63 100644
--- a/libraries/textcomposer/impl/src/main/res/values-fi/translations.xml
+++ b/libraries/textcomposer/impl/src/main/res/values-fi/translations.xml
@@ -10,9 +10,11 @@
"Salaamaton viesti…"
"Luo linkki"
"Muokkaa linkkiä"
+ "%1$s, tila: %2$s"
"Käytä lihavoitua muotoa"
"Käytä kursiivimuotoa"
"pois päältä"
+ "päällä"
"Käytä yliviivausmuotoa"
"Käytä alleviivausmuotoa"
"Koko näytön tila päälle/pois"
diff --git a/libraries/textcomposer/impl/src/main/res/values-nl/translations.xml b/libraries/textcomposer/impl/src/main/res/values-nl/translations.xml
index 39158588d7..7db5ebc981 100644
--- a/libraries/textcomposer/impl/src/main/res/values-nl/translations.xml
+++ b/libraries/textcomposer/impl/src/main/res/values-nl/translations.xml
@@ -2,8 +2,9 @@
"Bijlage toevoegen"
"Lijst met opsommingstekens in-/uitschakelen"
- "Opmaakopties sluiten"
+ "Annuleren en opmaakopties sluiten"
"Codeblok in-/uitschakelen"
+ "Bijschrift toevoegen"
"Bericht…"
"Maak een link"
"Link bewerken"
diff --git a/libraries/textcomposer/impl/src/main/res/values-uk/translations.xml b/libraries/textcomposer/impl/src/main/res/values-uk/translations.xml
index 6a386e9d74..fda32c8ce1 100644
--- a/libraries/textcomposer/impl/src/main/res/values-uk/translations.xml
+++ b/libraries/textcomposer/impl/src/main/res/values-uk/translations.xml
@@ -2,7 +2,7 @@
"Додати вкладення"
"Перемкнути маркований список"
- "Закрити параметри форматування"
+ "Скасувати та закрити форматування тексту"
"Перемкнути блок коду"
"Необов\'язковий підпис…"
"Зашифроване повідомлення…"
diff --git a/libraries/troubleshoot/impl/src/main/res/values-fa/translations.xml b/libraries/troubleshoot/impl/src/main/res/values-fa/translations.xml
index b25450d420..59f9ca6af6 100644
--- a/libraries/troubleshoot/impl/src/main/res/values-fa/translations.xml
+++ b/libraries/troubleshoot/impl/src/main/res/values-fa/translations.xml
@@ -1,6 +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 1e111a6631..8d99640979 100644
--- a/libraries/ui-strings/src/main/res/values-cy/translations.xml
+++ b/libraries/ui-strings/src/main/res/values-cy/translations.xml
@@ -169,7 +169,7 @@
"Polisi defnydd derbyniol"
"Ychwanegu capsiwn"
"Gosodiadau uwch"
- "Delwedd wedi\'i thocio."
+ "delwedd"
"Dadansoddeg"
"Gwedd"
"Sain"
diff --git a/libraries/ui-strings/src/main/res/values-da/translations.xml b/libraries/ui-strings/src/main/res/values-da/translations.xml
index 34cc81b11f..bfe4ac5b37 100644
--- a/libraries/ui-strings/src/main/res/values-da/translations.xml
+++ b/libraries/ui-strings/src/main/res/values-da/translations.xml
@@ -7,11 +7,18 @@
- "%1$d ciffer indtastet"
- "%1$d cifre indtastet"
+ "Redigér avatar"
+ "Den fulde adresse vil være %1$s"
+ "Krypteringsoplysninger"
"Skjul adgangskode"
"Deltag i opkald"
"Hop til bunden"
+ "Flyt kortet til min lokation"
"Kun omtaler"
"Lyd slået fra"
+ "Nye omtaler"
+ "Nye beskeder"
+ "Igangværende opkald"
"Anden brugers avatar"
"Side %1$d"
"Pausér"
@@ -35,6 +42,8 @@
"Send filer"
"Vis adgangskode"
"Start et opkald"
+ "Tidsbegrænset handling påkrævet"
+ "Deaktiveret rum"
"Avatar for bruger"
"Brugermenu"
"Se avatar"
@@ -246,6 +255,7 @@
- "%d stemme"
- "%d stemmer"
+ "Forbereder…"
"Privatlivspolitik"
"Reaktion"
"Reaktioner"
@@ -361,14 +371,18 @@ Er du sikker på, at du vil fortsætte?"
"Hej, lad os snakkes på %1$s: %2$s"
"%1$s Android"
"Ryst enheden i frustration for at anmelde en fejl"
+ "Skærmbillede"
"%1$s: %2$s"
"Valgmuligheder"
"Fjern %1$s"
"Indstillinger"
"Det lykkedes ikke at vælge medie. Prøv igen."
"Billedtekster er muligvis ikke synlige for personer, der bruger ældre apps."
+ "Filen kunne ikke uploades."
"Det lykkedes ikke at behandle medier til upload. Prøv venligst igen."
"Upload af medier mislykkedes. Prøv igen."
+ "Den maksimalt tilladte filstørrelse er %1$s ."
+ "Filen er for stor til at kunne uploades."
"Tryk på en besked og vælg \"%1$s\" for at inkludere den her."
"Fastgør vigtige beskeder, så de let kan opdages"
diff --git a/libraries/ui-strings/src/main/res/values-et/translations.xml b/libraries/ui-strings/src/main/res/values-et/translations.xml
index ff4eed1cf9..cea72f55a5 100644
--- a/libraries/ui-strings/src/main/res/values-et/translations.xml
+++ b/libraries/ui-strings/src/main/res/values-et/translations.xml
@@ -255,6 +255,7 @@ Põhjus: %1$s."
- "%d hääl"
- "%d häält"
+ "Ettevalmistamisel…"
"Privaatsuspoliitika"
"Reaktsioon"
"Reaktsioonid"
@@ -378,8 +379,11 @@ Kas sa oled kindel, et soovid jätkata?"
"Seadistused"
"Meediafaili valimine ei õnnestunud. Palun proovi uuesti."
"Selgitused ja alapealkirjad ei pruugi olla nähtavad vanemate rakenduste kasutajatele."
+ "Faili üleslaadimine ei õnnestunud."
"Meediafaili töötlemine enne üleslaadimist ei õnnestunud. Palun proovi uuesti."
"Meediafaili üleslaadimine ei õnnestunud. Palun proovi uuesti."
+ "Maksimaalne lubatud failisuurus on %1$s."
+ "Fail on üleslaadimiseks liiga suur"
"Siia lisamiseks vajuta sõnumil ja vali „%1$s“."
"Et olulisi sõnumeid oleks lihtsam leida, tõsta nad esile"
diff --git a/libraries/ui-strings/src/main/res/values-fa/translations.xml b/libraries/ui-strings/src/main/res/values-fa/translations.xml
index 9ea728cbfa..5535c5c310 100644
--- a/libraries/ui-strings/src/main/res/values-fa/translations.xml
+++ b/libraries/ui-strings/src/main/res/values-fa/translations.xml
@@ -1,18 +1,24 @@
+ "افزودن واکنش: %1$s"
"چهرک"
"حذف"
-
- - "%1$d رقم وارد شده"
- - "%1$d رقم وارد شده"
-
+ "ویرایش چهرک"
+ "نشانی کامل %1$s خواهد بود"
+ "جزییات رمزنگاری"
"نهفتن گذرواژه"
"پیوستن به تماس"
"به پایین بروید"
+ "جابهجایی نقشه به مکانم"
"فقط اشارهها"
"خموش"
+ "اشارههای جدید"
+ "پیامهای جدید"
+ "تماس خروجی"
+ "چهرک دیگر کاربران"
"صفحهٔ %1$d"
"مکث"
+ "پیام صوتی. طول %1$s. موقعیت کنونی: %2$s"
"زمینهٔ پین"
"پخش"
"نظرسنجی"
@@ -23,13 +29,20 @@
"خوانده به دست %1$s"
"زدن برای نمایش همه"
"برداشتن واکنش با %1$s"
+ "برداشتن واکنش با %1$s"
+ "چهرک اتاق"
"ارسال پروندهها"
"نمایش گذرواژه"
"آغاز یک تماس"
+ "نیازمند کنش محدود به زمان"
+ "چهرک کاربر"
"فهرست کاربر"
+ "دیدن چهرک"
"دیدن جزییات"
+ "پیام صوتی. طول %1$s"
"ضبط پیام صوتی."
"توقّف ضبط"
+ "چهرکتان"
"پذیرش"
"افزودن عنوان"
"افزودن به خط زمانی"
@@ -88,6 +101,7 @@
"نه"
"الآن نه"
"قبول"
+ "گشودن فهرست بافتاری"
"تنظیمات"
"گشودن با"
"سنجاق"
@@ -112,7 +126,9 @@
"ذخیره"
"جستوجو"
"فرستادن"
+ "فرستادن پیام ویراسته"
"فرستادن پیام"
+ "فرستادن پیام صوتی"
"همرسانی"
"همرسانی پیوند"
"نمایش"
@@ -128,6 +144,7 @@
"زدن برای گزینهها"
"تلاش دوباره"
"سنجاق نکردن"
+ "نما"
"دیدن در خط زمانی"
"دیدن منبع"
"بله"
@@ -188,10 +205,6 @@
"پیوند در تختهگیره رونوشت شد"
"بار کردن…"
"بار کردن بیشتر…"
-
- - "%1$d عضو"
- - "%1$d عضو"
-
"پیام"
"کنشهای پیام"
"جینش پیام"
@@ -201,7 +214,7 @@
"%1$s (%2$s)"
"بدون نتیجه"
"بدون نام اتاق"
- "رمزنگارش نشده"
+ "رمزنگاری نشده"
"برونخط"
"پروانههای نرمافزاری آزاد"
"یا"
@@ -216,10 +229,7 @@
"نظرسنجی: %1$s"
"مجموع آرا: %1$s"
"نتیجهها پس از پایان نظرسنجی نشان داده خواهند شد"
-
- - "%d رأی"
- - "%d رأی"
-
+ "آماده سازی…"
"سیاست محرمانگی"
"واکنش"
"واکنشها"
@@ -245,6 +255,7 @@
"فرستادن…"
"فرستادن شکست خورد"
"فرستاده"
+ ". "
"کارساز پشتیبانی نمیشود"
"نشانی کارساز"
"تنظیمات"
@@ -298,11 +309,11 @@
"شکست در ایجاد پایاپیوند"
"%1$s نتوانست نقشه را بارگیری کند. لطفا بعدا دوباره امتحان کنید."
"شکست در بار کردن پیامها"
- "%1$s نمی تواند به موقعیت مکانی شما دسترسی داشته باشد. لطفا بعدا دوباره امتحان کنید."
+ "%1$s نمی تواند به مکانتان دسنترسی داشته باشد. لطفا بعدا دوباره امتحان کنید."
"شکست در بارگذاری پیام صوتیتان."
"پیام پیدا نشد"
- "%1$s اجازه دسترسی به موقعیت مکانی شما را ندارد. می توانید دسترسی را در تنظیمات فعال کنید."
- "%1$s اجازه دسترسی به موقعیت مکانی شما را ندارد. دسترسی را در زیر فعال کنید."
+ "%1$s اجازهٔ دسترسی به مکانتان را ندارد. می توانید دسترسی را در تنظیمات به کار بیندازید."
+ "%1$s اجازهٔ دسترسی به مکانتان را ندارد. دسترسی را در زیر به کار بیندازید."
"%1$s اجازه دسترسی به میکروفون شما را ندارد. دسترسی را برای ضبط پیام صوتی فعال کنید."
"برخی پیامها ارسال نشدهاند"
"متأسفیم ، خطایی رخ داد"
@@ -316,6 +327,10 @@
"درود. با من روی %1$s صحبت کن: %2$s"
"%1$s اندروید"
"Rageshake برای گزارش اشکال"
+ "نماگرفت"
+ "%1$s: %2$s"
+ "گزینهها"
+ "تنظیمات"
"گزینش رسانه شکست خورد. لطفاً دوباره تلاش کنید."
"پردازش رسانه برای بارگذاری شکست خورد. لطفاً دوباره تلاش کنید."
"بارگذاری رسانه شکست خورد. لطفاً دوباره تلاش کنید."
@@ -325,12 +340,13 @@
"پردازش رسانه برای بارگذاری شکست خورد. لطفاً دوباره تلاش کنید."
"نمی توان جزئیات کاربر را بازیابی کرد"
"پیام در %1$s"
+ "گسترش"
"%1$s از %2$s"
"%1$s پیامهای سنجاق شده"
- "بار کردن پشامها…"
+ "بار کردن پیامها…"
"نمایش همه"
"گپ"
- "همرسانی موقعیت"
+ "همرسانی مکان"
"همرسانی مکانم"
"گشودن در نقشههای اپل"
"گشودن در نقشههای گوگل"
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 9ae049b76a..6779564575 100644
--- a/libraries/ui-strings/src/main/res/values-fi/translations.xml
+++ b/libraries/ui-strings/src/main/res/values-fi/translations.xml
@@ -1,16 +1,25 @@
+ "Lisää reaktio: %1$s"
"Avatar"
"Poista"
- "%1$d numero syötetty"
- "%1$d numeroa syötetty"
+ "Muokkaa avataria"
+ "Täysi osoite tulee olemaan %1$s"
+ "Salauksen tiedot"
"Piilota salasana"
"Liity puheluun"
"Siirry loppuun"
+ "Siirrä kartta sijaintiini"
"Vain maininnat"
"Mykistetty"
+ "Uusia mainintoja"
+ "Uusia viestejä"
+ "Käynnissä oleva puhelu"
+ "Toisen käyttäjän avatar"
"Sivu %1$d"
"Keskeytä"
"Ääniviesti, kesto: %1$s, nykyinen sijainti: %2$s"
@@ -18,7 +27,7 @@
"Toista"
"Kysely"
"Päättynyt kysely"
- "Reagoi emojilla %1$s"
+ "Lisää reaktio: %1$s"
"Reagoi muilla emojeilla"
"%1$s ja %2$s on lukenut viestin"
@@ -27,15 +36,22 @@
"%1$s on lukenut viestin"
"Näytä kaikki napauttamalla"
- "Poista reaktio emojilla %1$s"
+ "Poista reaktio: %1$s"
+ "Poista reaktio: %1$s"
+ "Huoneen avatar"
"Lähetä tiedostoja"
"Näytä salasana"
"Aloita puhelu"
+ "Aikarajoitettu toimenpide vaaditaan"
+ "Haudattu huone"
+ "Käyttäjän avatar"
"Käyttäjävalikko"
+ "Näytä avatar"
"Näytä tiedot"
"Ääniviesti, kesto: %1$s"
"Nauhoita ääniviesti."
"Lopeta nauhoittaminen"
+ "Avatarisi"
"Hyväksy"
"Lisää kuvateksti"
"Lisää aikajanalle"
@@ -94,6 +110,7 @@
"Ei"
"Ei nyt"
"OK"
+ "Avaa kontekstivalikko"
"Asetukset"
"Avaa sovelluksessa"
"Kiinnitä"
@@ -118,7 +135,9 @@
"Tallenna"
"Hae"
"Lähetä"
+ "Lähetä muokattu viesti"
"Lähetä viesti"
+ "Lähetä ääniviesti"
"Jaa"
"Jaa linkki"
"Näytä"
@@ -134,6 +153,7 @@
"Näytä vaihtoehdot napauttamalla"
"Yritä uudelleen"
"Poista kiinnitys"
+ "Näytä"
"Näytä aikajanalla"
"Näytä lähde"
"Kyllä"
@@ -144,6 +164,7 @@
"Hyväksyttävän käytön käytäntö"
"Lisätään kuvatekstiä"
"Edistyneet asetukset"
+ "kuva"
"Analytiikka"
"Ulkoasu"
"Ääni"
@@ -234,6 +255,7 @@ Syy: %1$s."
- "%d ääni"
- "%d ääntä"
+ "Valmistellaan…"
"Tietosuojakäytäntö"
"Reaktio"
"Reaktiot"
@@ -263,6 +285,7 @@ Syy: %1$s."
"Lähetetään…"
"Lähetys epäonnistui"
"Lähetetty"
+ ". "
"Palvelin ei ole tuettu"
"Palvelimen osoite"
"Asetukset"
@@ -328,6 +351,7 @@ Haluatko varmasti jatkaa?"
"Viestien lataaminen epäonnistui"
"%1$s ei päässyt käsiksi sijaintiisi. Yritä myöhemmin uudelleen."
"Ääniviestin lähettäminen epäonnistui."
+ "Huone ei ole enää olemassa tai kutsu ei ole enää voimassa."
"Viestiä ei löytynyt"
"%1$s -sovelluksella ei ole lupaa sijaintiisi. Voit sallia sen asetuksista."
"%1$s -sovelluksella ei ole lupaa sijaintiisi. Voit sallia sen painamalla alla olevaa nappia."
@@ -348,10 +372,18 @@ Haluatko varmasti jatkaa?"
"Hei, keskustele kanssani %1$s -sovelluksessa: %2$s"
"%1$s Android"
"Raivostunut ravistaminen ilmoittaa virheestä"
+ "Näyttökuva"
+ "%1$s: %2$s"
+ "Vaihtoehdot"
+ "Poista %1$s"
+ "Asetukset"
"Median valinta epäonnistui, yritä uudelleen."
"Kuvatekstit eivät välttämättä näy ihmisille, jotka käyttävät vanhempia sovelluksia."
+ "Tiedostoa ei voitu lähettää."
"Median käsittely epäonnistui, yritä uudelleen."
"Median lähettäminen epäonnistui, yritä uudelleen."
+ "Suurin sallittu tiedostokoko on %1$s."
+ "Tiedosto on liian suuri lähetettäväksi"
"Paina viestiä ja valitse “%1$s” lisätäksesi sen tänne."
"Kiinnitä tärkeät viestit, jotta ne löytyvät helposti."
@@ -372,6 +404,9 @@ Haluatko varmasti jatkaa?"
"Median käsittely epäonnistui, yritä uudelleen."
"Käyttäjän tietojen hakeminen epäonnistui"
"Viesti huoneessa %1$s"
+ "Laajenna"
+ "Pienennä"
+ "Katselet jo tätä huonetta!"
"%1$s / %2$s"
"Kiinnitetty viesti %1$s"
"Viestiä ladataan…"
diff --git a/libraries/ui-strings/src/main/res/values-fr/translations.xml b/libraries/ui-strings/src/main/res/values-fr/translations.xml
index dedd8561ac..aa2ff62bd9 100644
--- a/libraries/ui-strings/src/main/res/values-fr/translations.xml
+++ b/libraries/ui-strings/src/main/res/values-fr/translations.xml
@@ -8,6 +8,7 @@
- "%1$d chiffres saisis"
"Modifier l’avatar"
+ "L’adresse complète sera %1$s"
"Détails du chiffrement"
"Masquer le mot de passe"
"Rejoindre l’appel"
@@ -42,6 +43,7 @@
"Afficher le mot de passe"
"Démarrer un appel"
"Demande d’action qui expirera dans un instant"
+ "Salon clôturé"
"Avatar de l’utilisateur"
"Menu utilisateur"
"Voir l’avatar"
@@ -253,6 +255,7 @@ Raison : %1$s."
- "%d vote"
- "%d votes"
+ "Préparation…"
"Politique de confidentialité"
"Réaction"
"Réactions"
@@ -260,6 +263,7 @@ Raison : %1$s."
"Clé de récupération"
"Actualisation…"
+ - "%1$d réponse"
- "%1$d réponses"
"En réponse à %1$s"
@@ -368,14 +372,18 @@ Raison : %1$s."
"Salut, parle-moi sur %1$s : %2$s"
"%1$s Android"
"Rageshake pour signaler un problème"
+ "Capture d’écran"
"%1$s: %2$s"
"Options"
"Supprimer %1$s"
"Paramètres"
"Échec de la sélection du média, veuillez réessayer."
"Les légendes peuvent ne pas être visibles pour les utilisateurs d’anciennes applications."
+ "Le fichier n’a pas pu être envoyé."
"Échec du traitement des médias à télécharger, veuillez réessayer."
"Échec du téléchargement du média, veuillez réessayer."
+ "La taille maximale autorisée pour les fichiers est de %1$s."
+ "Le fichier est trop volumineux pour être envoyé."
"Cliquez (clic long) sur un message et choisissez « %1$s » pour qu‘il apparaisse ici."
"Épinglez les messages importants pour leur donner plus de visibilité"
diff --git a/libraries/ui-strings/src/main/res/values-hu/translations.xml b/libraries/ui-strings/src/main/res/values-hu/translations.xml
index 04debfbd59..7b6de4520a 100644
--- a/libraries/ui-strings/src/main/res/values-hu/translations.xml
+++ b/libraries/ui-strings/src/main/res/values-hu/translations.xml
@@ -377,8 +377,11 @@ Biztos, hogy folytatja?"
"Beállítások"
"Nem sikerült kiválasztani a médiát, próbálja újra."
"Előfordulhat, hogy a feliratok nem láthatók a régebbi alkalmazásokat használók számára."
+ "A fájl nem tölthető fel."
"Nem sikerült feldolgozni a feltöltendő médiát, próbálja újra."
"Nem sikerült a média feltöltése, próbálja újra."
+ "A maximálisan megengedett fájlméret: %1$s ."
+ "A fájl túl nagy a feltöltéshez"
"Nyomjon hosszan az üzenetre, és válassza a „%1$s” lehetőséget, hogy itt szerepeljen."
"Tűzze ki a fontos üzeneteket, hogy könnyen felfedezhetők legyenek"
diff --git a/libraries/ui-strings/src/main/res/values-nl/translations.xml b/libraries/ui-strings/src/main/res/values-nl/translations.xml
index c6a8608fd4..356245a670 100644
--- a/libraries/ui-strings/src/main/res/values-nl/translations.xml
+++ b/libraries/ui-strings/src/main/res/values-nl/translations.xml
@@ -51,18 +51,23 @@
"Bevestig wachtwoord"
"Voortzetten"
"Kopiëren"
+ "Bijschrift kopiëren"
"Kopieer link"
"Kopieer link naar bericht"
+ "Tekst kopiëren"
"Aanmaken"
"Creëer een kamer"
"Sluiten"
"Account sluiten"
"Weigeren"
+ "Weigeren en blokkeren"
"Peiling verwijderen"
"Uitschakelen"
"Verwerpen"
+ "Sluiten"
"Gereed"
"Bewerken"
+ "Bijschrift bewerken"
"Peiling wijzigen"
"Activeren"
"Peiling beëindigen"
@@ -97,10 +102,14 @@
"Reageren"
"Weiger"
"Verwijderen"
+ "Bijschrift verwijderen"
+ "Bericht verwijderen"
"Antwoorden"
"Antwoord in subchat"
+ "Melden"
"Probleem melden"
"Inhoud melden"
+ "Kamer melden"
"Opnieuw instellen"
"Identiteit opnieuw instellen"
"Opnieuw proberen"
@@ -127,10 +136,12 @@
"Bekijk in tijdlijn"
"Bron weergeven"
"Ja"
+ "Ja, probeer het opnieuw"
"Je server ondersteunt nu een nieuw, sneller protocol. Log uit en log opnieuw in om nu te upgraden. Als je dit nu doet, voorkom je dat je geforceerd uitlogt wordt wanneer het oude protocol later wordt verwijderd."
"Upgrade beschikbaar"
"Over"
"Beleid inzake redelijk gebruik"
+ "Bijschrift toevoegen"
"Geavanceerde instellingen"
"Gebruiksgegevens"
"Weergave"
@@ -143,6 +154,7 @@
"Copyright"
"Kamer maken…"
"Heeft de kamer verlaten"
+ "Uitnodiging geweigerd"
"Donker"
"Decryptie fout"
"Ontwikkelaarsopties"
diff --git a/libraries/ui-strings/src/main/res/values-pl/translations.xml b/libraries/ui-strings/src/main/res/values-pl/translations.xml
index 9fe69361ce..5a674b250f 100644
--- a/libraries/ui-strings/src/main/res/values-pl/translations.xml
+++ b/libraries/ui-strings/src/main/res/values-pl/translations.xml
@@ -9,10 +9,12 @@
- "Wprowadzono %1$d cyfr"
"Edytuj awatar"
+ "Podgląd pełnego adresu %1$s"
"Szczegóły szyfrowania"
"Ukryj hasło"
"Dołącz do połączenia"
"Przejdź na dół"
+ "Przesuń mapę do mojej lokalizacji"
"Tylko wzmianki"
"Wyciszone"
"Nowe wzmianki"
@@ -43,6 +45,7 @@
"Pokaż hasło"
"Rozpocznij rozmowę"
"Wymagane jest działanie ograniczone czasowo"
+ "Pokój nagrobkowy"
"Awatar użytkownika"
"Menu użytkownika"
"Wyświetl awatar"
@@ -257,6 +260,7 @@ Powód: %1$s."
- "%d głosy"
- "%d głosów"
+ "Przygotowuję…"
"Polityka prywatności"
"Reakcja"
"Reakcje"
@@ -374,14 +378,18 @@ Czy na pewno chcesz kontynuować?"
"Hej, porozmawiajmy na %1$s: %2$s"
"%1$s Android"
"Wstrząśnij gniewnie, aby zgłosić błąd"
+ "Zrzut ekranu"
"%1$s: %2$s"
"Opcje"
"Usuń %1$s"
"Ustawienia"
"Nie udało się wybrać multimediów. Spróbuj ponownie."
"Opis może być niedostępny dla osób korzystających ze starszej wersji aplikacji."
+ "Nie udało się przesłać pliku."
"Przetwarzanie multimediów do przesłania nie powiodło się, spróbuj ponownie."
"Przesyłanie multimediów nie powiodło się, spróbuj ponownie."
+ "Maksymalny dozwolony rozmiar pliku to %1$s."
+ "Plik jest za duży, aby go przesłać."
"Naciśnij wiadomość i wybierz “%1$s”, aby dołączyć tutaj."
"Przypinaj ważne wiadomości, aby można było je łatwo znaleźć"
diff --git a/libraries/ui-strings/src/main/res/values-sk/translations.xml b/libraries/ui-strings/src/main/res/values-sk/translations.xml
index 77f162abf2..cb6d97dcdd 100644
--- a/libraries/ui-strings/src/main/res/values-sk/translations.xml
+++ b/libraries/ui-strings/src/main/res/values-sk/translations.xml
@@ -260,6 +260,7 @@ Dôvod: %1$s."
- "%d hlasy"
- "%d hlasov"
+ "Pripravuje sa…"
"Zásady ochrany osobných údajov"
"Reakcia"
"Reakcie"
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 b57f560076..f2aae4c210 100644
--- a/libraries/ui-strings/src/main/res/values-uk/translations.xml
+++ b/libraries/ui-strings/src/main/res/values-uk/translations.xml
@@ -8,11 +8,19 @@
- "Введено %1$d цифри"
- "Введено %1$d цифр"
+ "Редагувати аватар"
+ "Повна адреса буде %1$s"
+ "Подробиці шифрування"
"Cховати пароль"
"Приєднатися до виклику"
"Перейти вниз"
+ "Перемістити карту до мого місця перебування"
"Тільки згадки"
"Звук вимкнено"
+ "Нові згадки"
+ "Нові повідомлення"
+ "Поточний виклик"
+ "Аватар іншого користувача"
"Сторінка %1$d"
"Пауза"
"Голосове повідомлення, тривалість: %1$s, поточна позиція: %2$s"
@@ -32,14 +40,19 @@
"Натисніть, щоб показати все"
"Видалити реакцію з %1$s"
"Прибрати реакцію %1$s"
+ "Аватар кімнати"
"Надіслати файли"
"Показати пароль"
"Розпочати виклик"
+ "Необхідно виконати дію, обмежену в часі"
+ "Аватар користувача"
"Меню користувача"
+ "Переглянути аватар"
"Переглянути подробиці"
"Голосове повідомлення, тривалість: %1$s"
"Записати голосове повідомлення."
"Припинити запис"
+ "Ваш аватар"
"Прийняти"
"Додати підпис"
"Додати до стрічки"
@@ -98,6 +111,7 @@
"Ні"
"Не зараз"
"Гаразд"
+ "Відкрити контекстне меню"
"Налаштування"
"Відкрити за допомогою"
"Закріпити"
@@ -122,7 +136,9 @@
"Зберегти"
"Шукати"
"Надіслати"
+ "Надіслати змінене повідомлення"
"Надіслати повідомлення"
+ "Надіслати голосове повідомлення"
"Поділитися"
"Поділитися посиланням"
"Показати"
@@ -138,6 +154,7 @@
"Торкніться, щоб переглянути параметри"
"Спробуйте ще раз"
"Відкріпити"
+ "Переглянути"
"Переглянути на шкалі часу"
"Переглянути джерело"
"Так"
@@ -242,6 +259,7 @@
- "%d голоси"
- "%d голосів"
+ "Приготування…"
"Політика конфіденційності"
"Реакція"
"Реакції"
@@ -359,14 +377,17 @@
"Вітаю, поспілкуйтеся зі мною в %1$s: %2$s"
"%1$s Android"
"Повідомити про ваду за допомогою Rageshake"
+ "Знімок екрана"
"%1$s: %2$s"
"Варіанти"
"Вилучити %1$s"
"Налаштування"
"Не вдалося вибрати медіафайл, спробуйте ще раз."
"Користувачі старих застосунків можуть не бачити підписи."
+ "Файл не може бути вивантажено."
"Не вдалося обробити медіафайл для завантаження, спробуйте ще раз."
"Не вдалося завантажити медіафайл, спробуйте ще раз."
+ "Файл завеликий для вивантаження"
"Натисніть на повідомлення і виберіть \"%1$s\", щоб додати його сюди."
"Закріпіть важливі повідомлення, щоб їх можна було легко знайти"
diff --git a/libraries/ui-strings/src/main/res/values/localazy.xml b/libraries/ui-strings/src/main/res/values/localazy.xml
index 9db4828736..430772a0ac 100644
--- a/libraries/ui-strings/src/main/res/values/localazy.xml
+++ b/libraries/ui-strings/src/main/res/values/localazy.xml
@@ -255,6 +255,7 @@ Reason: %1$s."
- "%d vote"
- "%d votes"
+ "Preparing…"
"Privacy policy"
"Reaction"
"Reactions"
diff --git a/plugins/src/main/kotlin/Versions.kt b/plugins/src/main/kotlin/Versions.kt
index 0c2e2b7812..eca866747d 100644
--- a/plugins/src/main/kotlin/Versions.kt
+++ b/plugins/src/main/kotlin/Versions.kt
@@ -32,7 +32,7 @@ private const val versionYear = 25
private const val versionMonth = 8
// Note: must be in [0,99]
-private const val versionReleaseNumber = 0
+private const val versionReleaseNumber = 1
object Versions {
const val VERSION_CODE = (2000 + versionYear) * 10_000 + versionMonth * 100 + versionReleaseNumber
diff --git a/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_10_de.png b/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_10_de.png
index 71af31f332..550769deab 100644
--- a/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_10_de.png
+++ b/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_10_de.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:133864d58cc04374073951dc02d58662260bdd9c2017a09f4049fc346ce3550b
-size 51721
+oid sha256:a9dc162681fffcb8acdad591c04d4e71a9ab76d0373d9047d637cc8e1633dfe8
+size 52172
diff --git a/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_11_de.png b/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_11_de.png
new file mode 100644
index 0000000000..bce052dec9
--- /dev/null
+++ b/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_11_de.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d676c3f24c3457f09bad1b2ba0442a98cc8b41a268727d96f3c62f04e15a6aea
+size 57449
diff --git a/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_1_de.png b/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_1_de.png
index 1e4f297013..9736fd1a91 100644
--- a/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_1_de.png
+++ b/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_1_de.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:6e964c116b3dd244021abbeb70e0a612e1d913b306f7d5aaab759f6fb101d086
-size 73293
+oid sha256:91ee5d1af8e7ff0b15d56c3e6cbbba7fbe47a9a271a5609ceab8d2377189c138
+size 72116
diff --git a/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_2_de.png b/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_2_de.png
index 6a4b90c0a7..ba90cbf85a 100644
--- a/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_2_de.png
+++ b/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_2_de.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:18fe56867c3d0efc4e17b2d08c195fd66ebb4f27df0d6ce567bf5c6133ae42b2
-size 66339
+oid sha256:9308d5b35262bcef841f4968c86d820f58c1dbcd75853bb5cc7070d0ceea26c2
+size 65943
diff --git a/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_3_de.png b/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_3_de.png
index cf912dd5cd..af28b6eaee 100644
--- a/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_3_de.png
+++ b/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_3_de.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:d327354425d4fe637dfa63e2cc95931dc9f40a75ce88201248e069b06df29a4d
-size 66150
+oid sha256:ffedb45ae4152bf49a8afe3a6f82054dac31fc20d5be89c39b484310578ed4cc
+size 65751
diff --git a/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_4_de.png b/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_4_de.png
index c285ad9b0a..521ba2e414 100644
--- a/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_4_de.png
+++ b/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_4_de.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:b8de342bd67e9dddc743f8716da6c41dffa6e8c1d3fdc64bb092a3561170f71a
-size 61148
+oid sha256:2d048eaeaf5f23e85ba8ad5b56ce09daa49b3cbb0cfca69c22820734b5fde31e
+size 60742
diff --git a/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_5_de.png b/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_5_de.png
index 85dea672cd..8c5975e3be 100644
--- a/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_5_de.png
+++ b/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_5_de.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:f7dcb912daf865e95d04a8932f89e05100c336e90d5b3f1b37b25833094d4294
-size 14441
+oid sha256:56d1fb8f10302d1f68bd6633c79f4352b7cfb754d872d703461a9e79524804e7
+size 13999
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 1f1e640898..5ca90734a9 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:988a20be1ec38f4c4b6360508f6f7d5155fe71adc9f0e7137b297e22cedb2455
-size 64545
+oid sha256:c058bb492b8131ff0639a28a93c56eb8807136b550b9bd2631f6f8b132d7f199
+size 65013
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 600947a5a3..569c387c11 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:9012d60a71a6058057c7877ebf596a85ecabe49601832f80ac9f5a89bd3eee12
-size 67048
+oid sha256:150ed81c7f76f6549b97430331f96d1051293ccdd435aed63214e91214c17d43
+size 67513
diff --git a/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_8_de.png b/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_8_de.png
index ef70ed7164..fa045dd963 100644
--- a/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_8_de.png
+++ b/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_8_de.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:d51626bc080f77c4cfd8166780a4cca6cfb6f587beab7c88cebf131d8d606db6
-size 55879
+oid sha256:0c11b8fc7f3b659ddebe450f7a3c6614daf5e5481602724a9fbfe1233c28304d
+size 55993
diff --git a/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_9_de.png b/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_9_de.png
index 76a4d898a5..9f650ab357 100644
--- a/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_9_de.png
+++ b/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_9_de.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:1b2f7973608d2a6cf008240270f42621f6d90640df828f892777ac0b477d11b2
-size 68666
+oid sha256:db37883f66461d91ad41ee96a717daf17104d594697f6d8addc9bc015fe5e82f
+size 68270
diff --git a/screenshots/de/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_1_de.png b/screenshots/de/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_1_de.png
index 4194794abb..43bd5660b8 100644
--- a/screenshots/de/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_1_de.png
+++ b/screenshots/de/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_1_de.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:5a461db38dd589c5ee1ee941039d2eb18c057d2434ab0bfe783f1b1709d45aa5
-size 49352
+oid sha256:41a637d33c49ee30f2d76983b3187feec65fbe59b5b324d23435236982a83598
+size 50056
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 597368e467..c241959997 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:f45396e7dae438b4a1b7cc4884bf2d1bcfe6e43d9ec1593a060bfec074b0cbcf
-size 63438
+oid sha256:6ce1d91ec695c250b8f4109de0f7cafd41c7355514d7c94ca94ee0ea7d2ab34c
+size 64047
diff --git a/screenshots/de/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_3_de.png b/screenshots/de/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_3_de.png
index 7253c239ff..881793b35b 100644
--- a/screenshots/de/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_3_de.png
+++ b/screenshots/de/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_3_de.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:f83b333a0e6b8307899acda628be6d67ecfd747c69bc2fb4f4214e0a22d7edd8
-size 44797
+oid sha256:17bba51386fd62e070e4b863c0a3bff763c5d2fd92d9bd94fde77c120ffd7d2d
+size 45301
diff --git a/screenshots/de/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_4_de.png b/screenshots/de/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_4_de.png
index ff83b562f5..d88563563b 100644
--- a/screenshots/de/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_4_de.png
+++ b/screenshots/de/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_4_de.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:4c4cb56fe86cdd2eeacb75867669f3dc3fe3cb8671265fde7bde6f7deed1451a
-size 42998
+oid sha256:45ff3e48e93d9ab2ca546582aeb30ff449baf6cb5c5be67d7281760a329d8b1e
+size 43576
diff --git a/screenshots/de/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_5_de.png b/screenshots/de/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_5_de.png
index 689500ca1a..326ffcc363 100644
--- a/screenshots/de/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_5_de.png
+++ b/screenshots/de/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_5_de.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:ba623b0e9e168e86fb9be1af81323de754ee05f659ba627bd6e40178bf27f433
-size 56134
+oid sha256:9f92c8b403684ce2068d385714d63bf7706041349363f81aa01dde118a131610
+size 56680
diff --git a/screenshots/de/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_6_de.png b/screenshots/de/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_6_de.png
index 7253c239ff..881793b35b 100644
--- a/screenshots/de/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_6_de.png
+++ b/screenshots/de/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_6_de.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:f83b333a0e6b8307899acda628be6d67ecfd747c69bc2fb4f4214e0a22d7edd8
-size 44797
+oid sha256:17bba51386fd62e070e4b863c0a3bff763c5d2fd92d9bd94fde77c120ffd7d2d
+size 45301
diff --git a/screenshots/de/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_7_de.png b/screenshots/de/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_7_de.png
index 6acbbaba8e..84ce8f6f73 100644
--- a/screenshots/de/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_7_de.png
+++ b/screenshots/de/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_7_de.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:0e36fa2831ff08a7406e60c7a99754e1f7d7d9e53469585ff37180fc056bb6d5
-size 42498
+oid sha256:6d5769fefa19306cb0d61d10e9c67a5cf79bba3548d01ed4618f430c4a675dab
+size 43028
diff --git a/screenshots/de/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_8_de.png b/screenshots/de/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_8_de.png
new file mode 100644
index 0000000000..f4a1c0c35e
--- /dev/null
+++ b/screenshots/de/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_8_de.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e3bea7097c2488741c5e616656fcf4d6ce04dd21f2338cc9b88fff4e3c91c06c
+size 46393
diff --git a/screenshots/html/data.js b/screenshots/html/data.js
index 85da26265a..cf1ae12e7f 100644
--- a/screenshots/html/data.js
+++ b/screenshots/html/data.js
@@ -1,75 +1,75 @@
// 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",20294,],
+["features.preferences.impl.about_AboutView_Day_0_en","features.preferences.impl.about_AboutView_Night_0_en",20301,],
["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",20294,],
-["features.invite.impl.acceptdecline_AcceptDeclineInviteView_Day_2_en","features.invite.impl.acceptdecline_AcceptDeclineInviteView_Night_2_en",20294,],
-["features.invite.impl.acceptdecline_AcceptDeclineInviteView_Day_3_en","features.invite.impl.acceptdecline_AcceptDeclineInviteView_Night_3_en",20294,],
-["features.invite.impl.acceptdecline_AcceptDeclineInviteView_Day_4_en","features.invite.impl.acceptdecline_AcceptDeclineInviteView_Night_4_en",20294,],
-["features.invite.impl.acceptdecline_AcceptDeclineInviteView_Day_5_en","features.invite.impl.acceptdecline_AcceptDeclineInviteView_Night_5_en",20294,],
-["features.logout.impl_AccountDeactivationView_Day_0_en","features.logout.impl_AccountDeactivationView_Night_0_en",20294,],
-["features.logout.impl_AccountDeactivationView_Day_1_en","features.logout.impl_AccountDeactivationView_Night_1_en",20294,],
-["features.logout.impl_AccountDeactivationView_Day_2_en","features.logout.impl_AccountDeactivationView_Night_2_en",20294,],
-["features.logout.impl_AccountDeactivationView_Day_3_en","features.logout.impl_AccountDeactivationView_Night_3_en",20294,],
-["features.logout.impl_AccountDeactivationView_Day_4_en","features.logout.impl_AccountDeactivationView_Night_4_en",20294,],
-["features.login.impl.accountprovider_AccountProviderOtherView_Day_0_en","features.login.impl.accountprovider_AccountProviderOtherView_Night_0_en",20294,],
+["features.invite.impl.acceptdecline_AcceptDeclineInviteView_Day_1_en","features.invite.impl.acceptdecline_AcceptDeclineInviteView_Night_1_en",20301,],
+["features.invite.impl.acceptdecline_AcceptDeclineInviteView_Day_2_en","features.invite.impl.acceptdecline_AcceptDeclineInviteView_Night_2_en",20301,],
+["features.invite.impl.acceptdecline_AcceptDeclineInviteView_Day_3_en","features.invite.impl.acceptdecline_AcceptDeclineInviteView_Night_3_en",20301,],
+["features.invite.impl.acceptdecline_AcceptDeclineInviteView_Day_4_en","features.invite.impl.acceptdecline_AcceptDeclineInviteView_Night_4_en",20301,],
+["features.invite.impl.acceptdecline_AcceptDeclineInviteView_Day_5_en","features.invite.impl.acceptdecline_AcceptDeclineInviteView_Night_5_en",20301,],
+["features.logout.impl_AccountDeactivationView_Day_0_en","features.logout.impl_AccountDeactivationView_Night_0_en",20301,],
+["features.logout.impl_AccountDeactivationView_Day_1_en","features.logout.impl_AccountDeactivationView_Night_1_en",20301,],
+["features.logout.impl_AccountDeactivationView_Day_2_en","features.logout.impl_AccountDeactivationView_Night_2_en",20301,],
+["features.logout.impl_AccountDeactivationView_Day_3_en","features.logout.impl_AccountDeactivationView_Night_3_en",20301,],
+["features.logout.impl_AccountDeactivationView_Day_4_en","features.logout.impl_AccountDeactivationView_Night_4_en",20301,],
+["features.login.impl.accountprovider_AccountProviderOtherView_Day_0_en","features.login.impl.accountprovider_AccountProviderOtherView_Night_0_en",20301,],
["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",20294,],
-["features.messages.impl.actionlist_ActionListViewContent_Day_11_en","features.messages.impl.actionlist_ActionListViewContent_Night_11_en",20294,],
-["features.messages.impl.actionlist_ActionListViewContent_Day_12_en","features.messages.impl.actionlist_ActionListViewContent_Night_12_en",20294,],
+["features.messages.impl.actionlist_ActionListViewContent_Day_10_en","features.messages.impl.actionlist_ActionListViewContent_Night_10_en",20301,],
+["features.messages.impl.actionlist_ActionListViewContent_Day_11_en","features.messages.impl.actionlist_ActionListViewContent_Night_11_en",20301,],
+["features.messages.impl.actionlist_ActionListViewContent_Day_12_en","features.messages.impl.actionlist_ActionListViewContent_Night_12_en",20301,],
["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",20294,],
-["features.messages.impl.actionlist_ActionListViewContent_Day_3_en","features.messages.impl.actionlist_ActionListViewContent_Night_3_en",20294,],
-["features.messages.impl.actionlist_ActionListViewContent_Day_4_en","features.messages.impl.actionlist_ActionListViewContent_Night_4_en",20294,],
-["features.messages.impl.actionlist_ActionListViewContent_Day_5_en","features.messages.impl.actionlist_ActionListViewContent_Night_5_en",20294,],
-["features.messages.impl.actionlist_ActionListViewContent_Day_6_en","features.messages.impl.actionlist_ActionListViewContent_Night_6_en",20294,],
-["features.messages.impl.actionlist_ActionListViewContent_Day_7_en","features.messages.impl.actionlist_ActionListViewContent_Night_7_en",20294,],
-["features.messages.impl.actionlist_ActionListViewContent_Day_8_en","features.messages.impl.actionlist_ActionListViewContent_Night_8_en",20294,],
-["features.messages.impl.actionlist_ActionListViewContent_Day_9_en","features.messages.impl.actionlist_ActionListViewContent_Night_9_en",20294,],
-["features.createroom.impl.addpeople_AddPeopleView_Day_0_en","features.createroom.impl.addpeople_AddPeopleView_Night_0_en",20294,],
-["features.createroom.impl.addpeople_AddPeopleView_Day_1_en","features.createroom.impl.addpeople_AddPeopleView_Night_1_en",20294,],
-["features.createroom.impl.addpeople_AddPeopleView_Day_2_en","features.createroom.impl.addpeople_AddPeopleView_Night_2_en",20294,],
-["features.createroom.impl.addpeople_AddPeopleView_Day_3_en","features.createroom.impl.addpeople_AddPeopleView_Night_3_en",20294,],
-["features.preferences.impl.advanced_AdvancedSettingsViewDark_0_en","",20294,],
-["features.preferences.impl.advanced_AdvancedSettingsViewDark_1_en","",20294,],
-["features.preferences.impl.advanced_AdvancedSettingsViewDark_2_en","",20294,],
-["features.preferences.impl.advanced_AdvancedSettingsViewDark_3_en","",20294,],
-["features.preferences.impl.advanced_AdvancedSettingsViewDark_4_en","",20294,],
-["features.preferences.impl.advanced_AdvancedSettingsViewDark_5_en","",20294,],
-["features.preferences.impl.advanced_AdvancedSettingsViewDark_6_en","",20294,],
-["features.preferences.impl.advanced_AdvancedSettingsViewDark_7_en","",20294,],
-["features.preferences.impl.advanced_AdvancedSettingsViewLight_0_en","",20294,],
-["features.preferences.impl.advanced_AdvancedSettingsViewLight_1_en","",20294,],
-["features.preferences.impl.advanced_AdvancedSettingsViewLight_2_en","",20294,],
-["features.preferences.impl.advanced_AdvancedSettingsViewLight_3_en","",20294,],
-["features.preferences.impl.advanced_AdvancedSettingsViewLight_4_en","",20294,],
-["features.preferences.impl.advanced_AdvancedSettingsViewLight_5_en","",20294,],
-["features.preferences.impl.advanced_AdvancedSettingsViewLight_6_en","",20294,],
-["features.preferences.impl.advanced_AdvancedSettingsViewLight_7_en","",20294,],
-["libraries.designsystem.components.dialogs_AlertDialogContent_Dialogs_en","",20294,],
-["libraries.designsystem.components.dialogs_AlertDialog_Day_0_en","libraries.designsystem.components.dialogs_AlertDialog_Night_0_en",20294,],
-["features.analytics.impl_AnalyticsOptInView_Day_0_en","features.analytics.impl_AnalyticsOptInView_Night_0_en",20294,],
-["features.analytics.impl_AnalyticsOptInView_Day_1_en","features.analytics.impl_AnalyticsOptInView_Night_1_en",20294,],
-["features.analytics.api.preferences_AnalyticsPreferencesView_Day_0_en","features.analytics.api.preferences_AnalyticsPreferencesView_Night_0_en",20294,],
-["features.analytics.api.preferences_AnalyticsPreferencesView_Day_1_en","features.analytics.api.preferences_AnalyticsPreferencesView_Night_1_en",20294,],
-["features.preferences.impl.analytics_AnalyticsSettingsView_Day_0_en","features.preferences.impl.analytics_AnalyticsSettingsView_Night_0_en",20294,],
+["features.messages.impl.actionlist_ActionListViewContent_Day_2_en","features.messages.impl.actionlist_ActionListViewContent_Night_2_en",20301,],
+["features.messages.impl.actionlist_ActionListViewContent_Day_3_en","features.messages.impl.actionlist_ActionListViewContent_Night_3_en",20301,],
+["features.messages.impl.actionlist_ActionListViewContent_Day_4_en","features.messages.impl.actionlist_ActionListViewContent_Night_4_en",20301,],
+["features.messages.impl.actionlist_ActionListViewContent_Day_5_en","features.messages.impl.actionlist_ActionListViewContent_Night_5_en",20301,],
+["features.messages.impl.actionlist_ActionListViewContent_Day_6_en","features.messages.impl.actionlist_ActionListViewContent_Night_6_en",20301,],
+["features.messages.impl.actionlist_ActionListViewContent_Day_7_en","features.messages.impl.actionlist_ActionListViewContent_Night_7_en",20301,],
+["features.messages.impl.actionlist_ActionListViewContent_Day_8_en","features.messages.impl.actionlist_ActionListViewContent_Night_8_en",20301,],
+["features.messages.impl.actionlist_ActionListViewContent_Day_9_en","features.messages.impl.actionlist_ActionListViewContent_Night_9_en",20301,],
+["features.createroom.impl.addpeople_AddPeopleView_Day_0_en","features.createroom.impl.addpeople_AddPeopleView_Night_0_en",20301,],
+["features.createroom.impl.addpeople_AddPeopleView_Day_1_en","features.createroom.impl.addpeople_AddPeopleView_Night_1_en",20301,],
+["features.createroom.impl.addpeople_AddPeopleView_Day_2_en","features.createroom.impl.addpeople_AddPeopleView_Night_2_en",20301,],
+["features.createroom.impl.addpeople_AddPeopleView_Day_3_en","features.createroom.impl.addpeople_AddPeopleView_Night_3_en",20301,],
+["features.preferences.impl.advanced_AdvancedSettingsViewDark_0_en","",20301,],
+["features.preferences.impl.advanced_AdvancedSettingsViewDark_1_en","",20301,],
+["features.preferences.impl.advanced_AdvancedSettingsViewDark_2_en","",20301,],
+["features.preferences.impl.advanced_AdvancedSettingsViewDark_3_en","",20301,],
+["features.preferences.impl.advanced_AdvancedSettingsViewDark_4_en","",20301,],
+["features.preferences.impl.advanced_AdvancedSettingsViewDark_5_en","",20301,],
+["features.preferences.impl.advanced_AdvancedSettingsViewDark_6_en","",20301,],
+["features.preferences.impl.advanced_AdvancedSettingsViewDark_7_en","",20301,],
+["features.preferences.impl.advanced_AdvancedSettingsViewLight_0_en","",20301,],
+["features.preferences.impl.advanced_AdvancedSettingsViewLight_1_en","",20301,],
+["features.preferences.impl.advanced_AdvancedSettingsViewLight_2_en","",20301,],
+["features.preferences.impl.advanced_AdvancedSettingsViewLight_3_en","",20301,],
+["features.preferences.impl.advanced_AdvancedSettingsViewLight_4_en","",20301,],
+["features.preferences.impl.advanced_AdvancedSettingsViewLight_5_en","",20301,],
+["features.preferences.impl.advanced_AdvancedSettingsViewLight_6_en","",20301,],
+["features.preferences.impl.advanced_AdvancedSettingsViewLight_7_en","",20301,],
+["libraries.designsystem.components.dialogs_AlertDialogContent_Dialogs_en","",20301,],
+["libraries.designsystem.components.dialogs_AlertDialog_Day_0_en","libraries.designsystem.components.dialogs_AlertDialog_Night_0_en",20301,],
+["features.analytics.impl_AnalyticsOptInView_Day_0_en","features.analytics.impl_AnalyticsOptInView_Night_0_en",20301,],
+["features.analytics.impl_AnalyticsOptInView_Day_1_en","features.analytics.impl_AnalyticsOptInView_Night_1_en",20301,],
+["features.analytics.api.preferences_AnalyticsPreferencesView_Day_0_en","features.analytics.api.preferences_AnalyticsPreferencesView_Night_0_en",20301,],
+["features.analytics.api.preferences_AnalyticsPreferencesView_Day_1_en","features.analytics.api.preferences_AnalyticsPreferencesView_Night_1_en",20301,],
+["features.preferences.impl.analytics_AnalyticsSettingsView_Day_0_en","features.preferences.impl.analytics_AnalyticsSettingsView_Night_0_en",20301,],
["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",20294,],
+["services.apperror.impl_AppErrorView_Day_0_en","services.apperror.impl_AppErrorView_Night_0_en",20301,],
["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",20294,],
+["libraries.designsystem.components.async_AsyncActionView_Day_1_en","libraries.designsystem.components.async_AsyncActionView_Night_1_en",20301,],
["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",20294,],
+["libraries.designsystem.components.async_AsyncActionView_Day_3_en","libraries.designsystem.components.async_AsyncActionView_Night_3_en",20301,],
["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",20294,],
+["libraries.designsystem.components.async_AsyncFailure_Day_0_en","libraries.designsystem.components.async_AsyncFailure_Night_0_en",20301,],
["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",20294,],
+["features.messages.impl.messagecomposer_AttachmentSourcePickerMenu_Day_0_en","features.messages.impl.messagecomposer_AttachmentSourcePickerMenu_Night_0_en",20301,],
["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,],
@@ -79,18 +79,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","",20294,],
+["features.messages.impl.attachments.preview_AttachmentsView_0_en","",20301,],
["features.messages.impl.attachments.preview_AttachmentsView_1_en","",0,],
-["features.messages.impl.attachments.preview_AttachmentsView_2_en","",20294,],
-["features.messages.impl.attachments.preview_AttachmentsView_3_en","",20294,],
-["features.messages.impl.attachments.preview_AttachmentsView_4_en","",20294,],
-["features.messages.impl.attachments.preview_AttachmentsView_5_en","",20294,],
+["features.messages.impl.attachments.preview_AttachmentsView_2_en","",20301,],
+["features.messages.impl.attachments.preview_AttachmentsView_3_en","",20301,],
+["features.messages.impl.attachments.preview_AttachmentsView_4_en","",20301,],
+["features.messages.impl.attachments.preview_AttachmentsView_5_en","",20301,],
["features.messages.impl.attachments.preview_AttachmentsView_6_en","",0,],
-["features.messages.impl.attachments.preview_AttachmentsView_7_en","",20294,],
+["features.messages.impl.attachments.preview_AttachmentsView_7_en","",20301,],
["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",20294,],
+["libraries.matrix.ui.components_AvatarActionBottomSheet_Day_0_en","libraries.matrix.ui.components_AvatarActionBottomSheet_Night_0_en",20301,],
["libraries.designsystem.components.avatar.internal_AvatarCluster_Avatars_en","",0,],
["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,],
@@ -200,148 +200,149 @@ export const screenshots = [
["libraries.designsystem.modifiers_BackgroundVerticalGradientEnterprise_Day_0_en","libraries.designsystem.modifiers_BackgroundVerticalGradientEnterprise_Night_0_en",0,],
["libraries.designsystem.modifiers_BackgroundVerticalGradient_Day_0_en","libraries.designsystem.modifiers_BackgroundVerticalGradient_Night_0_en",0,],
["libraries.designsystem.components_Badge_Day_0_en","libraries.designsystem.components_Badge_Night_0_en",0,],
-["features.home.impl.components_BatteryOptimizationBanner_Day_0_en","features.home.impl.components_BatteryOptimizationBanner_Night_0_en",20294,],
+["features.home.impl.components_BatteryOptimizationBanner_Day_0_en","features.home.impl.components_BatteryOptimizationBanner_Night_0_en",20301,],
["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",20294,],
-["features.preferences.impl.blockedusers_BlockedUsersView_Day_1_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_1_en",20294,],
-["features.preferences.impl.blockedusers_BlockedUsersView_Day_2_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_2_en",20294,],
-["features.preferences.impl.blockedusers_BlockedUsersView_Day_3_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_3_en",20294,],
-["features.preferences.impl.blockedusers_BlockedUsersView_Day_4_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_4_en",20294,],
-["features.preferences.impl.blockedusers_BlockedUsersView_Day_5_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_5_en",20294,],
-["features.preferences.impl.blockedusers_BlockedUsersView_Day_6_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_6_en",20294,],
+["features.preferences.impl.blockedusers_BlockedUsersView_Day_0_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_0_en",20301,],
+["features.preferences.impl.blockedusers_BlockedUsersView_Day_1_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_1_en",20301,],
+["features.preferences.impl.blockedusers_BlockedUsersView_Day_2_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_2_en",20301,],
+["features.preferences.impl.blockedusers_BlockedUsersView_Day_3_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_3_en",20301,],
+["features.preferences.impl.blockedusers_BlockedUsersView_Day_4_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_4_en",20301,],
+["features.preferences.impl.blockedusers_BlockedUsersView_Day_5_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_5_en",20301,],
+["features.preferences.impl.blockedusers_BlockedUsersView_Day_6_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_6_en",20301,],
["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",20294,],
-["features.rageshake.impl.bugreport_BugReportView_Day_1_en","features.rageshake.impl.bugreport_BugReportView_Night_1_en",20294,],
-["features.rageshake.impl.bugreport_BugReportView_Day_2_en","features.rageshake.impl.bugreport_BugReportView_Night_2_en",20294,],
-["features.rageshake.impl.bugreport_BugReportView_Day_3_en","features.rageshake.impl.bugreport_BugReportView_Night_3_en",20294,],
-["features.rageshake.impl.bugreport_BugReportView_Day_4_en","features.rageshake.impl.bugreport_BugReportView_Night_4_en",20294,],
+["features.rageshake.impl.bugreport_BugReportView_Day_0_en","features.rageshake.impl.bugreport_BugReportView_Night_0_en",20301,],
+["features.rageshake.impl.bugreport_BugReportView_Day_1_en","features.rageshake.impl.bugreport_BugReportView_Night_1_en",20301,],
+["features.rageshake.impl.bugreport_BugReportView_Day_2_en","features.rageshake.impl.bugreport_BugReportView_Night_2_en",20301,],
+["features.rageshake.impl.bugreport_BugReportView_Day_3_en","features.rageshake.impl.bugreport_BugReportView_Night_3_en",20301,],
+["features.rageshake.impl.bugreport_BugReportView_Day_4_en","features.rageshake.impl.bugreport_BugReportView_Night_4_en",20301,],
["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",20294,],
-["features.messages.impl.timeline.components_CallMenuItem_Day_3_en","features.messages.impl.timeline.components_CallMenuItem_Night_3_en",20294,],
+["features.messages.impl.timeline.components_CallMenuItem_Day_2_en","features.messages.impl.timeline.components_CallMenuItem_Night_2_en",20301,],
+["features.messages.impl.timeline.components_CallMenuItem_Day_3_en","features.messages.impl.timeline.components_CallMenuItem_Night_3_en",20301,],
["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_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",20294,],
-["features.call.impl.ui_CallScreenView_Day_2_en","features.call.impl.ui_CallScreenView_Night_2_en",20294,],
-["features.call.impl.ui_CallScreenView_Day_3_en","features.call.impl.ui_CallScreenView_Night_3_en",20294,],
-["libraries.textcomposer_CaptionWarningBottomSheet_Day_0_en","libraries.textcomposer_CaptionWarningBottomSheet_Night_0_en",20294,],
-["features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Day_0_en","features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Night_0_en",20294,],
-["features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Day_1_en","features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Night_1_en",20294,],
-["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_0_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_0_en",20294,],
-["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_10_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_10_en",20294,],
-["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_1_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_1_en",20294,],
-["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_2_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_2_en",20294,],
-["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_3_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_3_en",20294,],
-["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_4_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_4_en",20294,],
-["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_5_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_5_en",20294,],
-["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_6_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_6_en",20294,],
-["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_7_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_7_en",20294,],
-["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_8_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_8_en",20294,],
-["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_9_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_9_en",20294,],
-["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_0_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_0_en",20294,],
-["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_1_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_1_en",20294,],
-["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_2_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_2_en",20294,],
-["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_3_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_3_en",20294,],
-["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_4_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_4_en",20294,],
-["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_5_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_5_en",20294,],
-["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_6_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_6_en",20294,],
+["features.call.impl.ui_CallScreenView_Day_1_en","features.call.impl.ui_CallScreenView_Night_1_en",20301,],
+["features.call.impl.ui_CallScreenView_Day_2_en","features.call.impl.ui_CallScreenView_Night_2_en",20301,],
+["features.call.impl.ui_CallScreenView_Day_3_en","features.call.impl.ui_CallScreenView_Night_3_en",20301,],
+["libraries.textcomposer_CaptionWarningBottomSheet_Day_0_en","libraries.textcomposer_CaptionWarningBottomSheet_Night_0_en",20301,],
+["features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Day_0_en","features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Night_0_en",20301,],
+["features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Day_1_en","features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Night_1_en",20301,],
+["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_0_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_0_en",20301,],
+["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_10_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_10_en",20301,],
+["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_11_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_11_en",20304,],
+["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_1_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_1_en",20301,],
+["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_2_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_2_en",20301,],
+["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_3_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_3_en",20301,],
+["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_4_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_4_en",20301,],
+["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_5_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_5_en",20301,],
+["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_6_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_6_en",20301,],
+["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_7_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_7_en",20301,],
+["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_8_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_8_en",20301,],
+["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_9_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_9_en",20301,],
+["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_0_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_0_en",20301,],
+["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_1_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_1_en",20301,],
+["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_2_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_2_en",20301,],
+["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_3_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_3_en",20301,],
+["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_4_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_4_en",20301,],
+["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_5_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_5_en",20301,],
+["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_6_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_6_en",20301,],
["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",20294,],
-["features.login.impl.changeserver_ChangeServerView_Day_2_en","features.login.impl.changeserver_ChangeServerView_Night_2_en",20294,],
-["features.login.impl.changeserver_ChangeServerView_Day_3_en","features.login.impl.changeserver_ChangeServerView_Night_3_en",20294,],
+["features.login.impl.changeserver_ChangeServerView_Day_1_en","features.login.impl.changeserver_ChangeServerView_Night_1_en",20301,],
+["features.login.impl.changeserver_ChangeServerView_Day_2_en","features.login.impl.changeserver_ChangeServerView_Night_2_en",20301,],
+["features.login.impl.changeserver_ChangeServerView_Day_3_en","features.login.impl.changeserver_ChangeServerView_Night_3_en",20301,],
["libraries.matrix.ui.components_CheckableResolvedUserRow_en","",0,],
-["libraries.matrix.ui.components_CheckableUnresolvedUserRow_en","",20294,],
+["libraries.matrix.ui.components_CheckableUnresolvedUserRow_en","",20301,],
["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",20294,],
-["features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_1_en","features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Night_1_en",20294,],
-["features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_2_en","features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Night_2_en",20294,],
-["features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_0_en","features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_0_en",20294,],
-["features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_1_en","features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_1_en",20294,],
-["features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_2_en","features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_2_en",20294,],
-["features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_3_en","features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_3_en",20294,],
+["features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_0_en","features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Night_0_en",20301,],
+["features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_1_en","features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Night_1_en",20301,],
+["features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_2_en","features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Night_2_en",20301,],
+["features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_0_en","features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_0_en",20301,],
+["features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_1_en","features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_1_en",20301,],
+["features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_2_en","features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_2_en",20301,],
+["features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_3_en","features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_3_en",20301,],
["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",20294,],
-["libraries.designsystem.atomic.molecules_ComposerAlertMolecule_Day_1_en","libraries.designsystem.atomic.molecules_ComposerAlertMolecule_Night_1_en",20294,],
-["libraries.textcomposer_ComposerModeView_Day_0_en","libraries.textcomposer_ComposerModeView_Night_0_en",20294,],
+["libraries.designsystem.atomic.molecules_ComposerAlertMolecule_Day_0_en","libraries.designsystem.atomic.molecules_ComposerAlertMolecule_Night_0_en",20301,],
+["libraries.designsystem.atomic.molecules_ComposerAlertMolecule_Day_1_en","libraries.designsystem.atomic.molecules_ComposerAlertMolecule_Night_1_en",20301,],
+["libraries.textcomposer_ComposerModeView_Day_0_en","libraries.textcomposer_ComposerModeView_Night_0_en",20301,],
["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,],
-["features.createroom.impl.configureroom_ConfigureRoomViewDark_0_en","",20294,],
-["features.createroom.impl.configureroom_ConfigureRoomViewDark_1_en","",20294,],
-["features.createroom.impl.configureroom_ConfigureRoomViewDark_2_en","",20294,],
-["features.createroom.impl.configureroom_ConfigureRoomViewDark_3_en","",20294,],
-["features.createroom.impl.configureroom_ConfigureRoomViewDark_4_en","",20294,],
-["features.createroom.impl.configureroom_ConfigureRoomViewDark_5_en","",20294,],
-["features.createroom.impl.configureroom_ConfigureRoomViewLight_0_en","",20294,],
-["features.createroom.impl.configureroom_ConfigureRoomViewLight_1_en","",20294,],
-["features.createroom.impl.configureroom_ConfigureRoomViewLight_2_en","",20294,],
-["features.createroom.impl.configureroom_ConfigureRoomViewLight_3_en","",20294,],
-["features.createroom.impl.configureroom_ConfigureRoomViewLight_4_en","",20294,],
-["features.createroom.impl.configureroom_ConfigureRoomViewLight_5_en","",20294,],
-["features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_0_en","features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Night_0_en",20294,],
-["features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_1_en","features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Night_1_en",20294,],
-["features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_2_en","features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Night_2_en",20294,],
-["features.home.impl.components_ConfirmRecoveryKeyBanner_Day_0_en","features.home.impl.components_ConfirmRecoveryKeyBanner_Night_0_en",20294,],
+["features.createroom.impl.configureroom_ConfigureRoomViewDark_0_en","",20301,],
+["features.createroom.impl.configureroom_ConfigureRoomViewDark_1_en","",20301,],
+["features.createroom.impl.configureroom_ConfigureRoomViewDark_2_en","",20301,],
+["features.createroom.impl.configureroom_ConfigureRoomViewDark_3_en","",20301,],
+["features.createroom.impl.configureroom_ConfigureRoomViewDark_4_en","",20301,],
+["features.createroom.impl.configureroom_ConfigureRoomViewDark_5_en","",20301,],
+["features.createroom.impl.configureroom_ConfigureRoomViewLight_0_en","",20301,],
+["features.createroom.impl.configureroom_ConfigureRoomViewLight_1_en","",20301,],
+["features.createroom.impl.configureroom_ConfigureRoomViewLight_2_en","",20301,],
+["features.createroom.impl.configureroom_ConfigureRoomViewLight_3_en","",20301,],
+["features.createroom.impl.configureroom_ConfigureRoomViewLight_4_en","",20301,],
+["features.createroom.impl.configureroom_ConfigureRoomViewLight_5_en","",20301,],
+["features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_0_en","features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Night_0_en",20301,],
+["features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_1_en","features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Night_1_en",20301,],
+["features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_2_en","features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Night_2_en",20301,],
+["features.home.impl.components_ConfirmRecoveryKeyBanner_Day_0_en","features.home.impl.components_ConfirmRecoveryKeyBanner_Night_0_en",20301,],
["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",20294,],
-["features.login.impl.screens.createaccount_CreateAccountView_Day_0_en","features.login.impl.screens.createaccount_CreateAccountView_Night_0_en",20294,],
-["features.login.impl.screens.createaccount_CreateAccountView_Day_1_en","features.login.impl.screens.createaccount_CreateAccountView_Night_1_en",20294,],
-["features.login.impl.screens.createaccount_CreateAccountView_Day_2_en","features.login.impl.screens.createaccount_CreateAccountView_Night_2_en",20294,],
-["features.login.impl.screens.createaccount_CreateAccountView_Day_3_en","features.login.impl.screens.createaccount_CreateAccountView_Night_3_en",20294,],
-["libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Day_0_en","libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Night_0_en",20294,],
-["libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Day_1_en","libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Night_1_en",20294,],
-["features.poll.impl.create_CreatePollView_Day_0_en","features.poll.impl.create_CreatePollView_Night_0_en",20294,],
-["features.poll.impl.create_CreatePollView_Day_1_en","features.poll.impl.create_CreatePollView_Night_1_en",20294,],
-["features.poll.impl.create_CreatePollView_Day_2_en","features.poll.impl.create_CreatePollView_Night_2_en",20294,],
-["features.poll.impl.create_CreatePollView_Day_3_en","features.poll.impl.create_CreatePollView_Night_3_en",20294,],
-["features.poll.impl.create_CreatePollView_Day_4_en","features.poll.impl.create_CreatePollView_Night_4_en",20294,],
-["features.poll.impl.create_CreatePollView_Day_5_en","features.poll.impl.create_CreatePollView_Night_5_en",20294,],
-["features.poll.impl.create_CreatePollView_Day_6_en","features.poll.impl.create_CreatePollView_Night_6_en",20294,],
-["features.poll.impl.create_CreatePollView_Day_7_en","features.poll.impl.create_CreatePollView_Night_7_en",20294,],
-["features.createroom.impl.root_CreateRoomRootView_Day_0_en","features.createroom.impl.root_CreateRoomRootView_Night_0_en",20294,],
-["features.createroom.impl.root_CreateRoomRootView_Day_1_en","features.createroom.impl.root_CreateRoomRootView_Night_1_en",20294,],
-["features.createroom.impl.root_CreateRoomRootView_Day_2_en","features.createroom.impl.root_CreateRoomRootView_Night_2_en",20294,],
-["features.createroom.impl.root_CreateRoomRootView_Day_3_en","features.createroom.impl.root_CreateRoomRootView_Night_3_en",20294,],
-["features.createroom.impl.root_CreateRoomRootView_Day_4_en","features.createroom.impl.root_CreateRoomRootView_Night_4_en",20294,],
-["features.createroom.impl.root_CreateRoomRootView_Day_5_en","features.createroom.impl.root_CreateRoomRootView_Night_5_en",20294,],
-["libraries.dateformatter.impl.previews_DateFormatterModeView_0_en","",20294,],
-["libraries.dateformatter.impl.previews_DateFormatterModeView_1_en","",20294,],
-["libraries.dateformatter.impl.previews_DateFormatterModeView_2_en","",20294,],
-["libraries.dateformatter.impl.previews_DateFormatterModeView_3_en","",20294,],
-["libraries.dateformatter.impl.previews_DateFormatterModeView_4_en","",20294,],
+["features.rageshake.api.crash_CrashDetectionView_Day_0_en","features.rageshake.api.crash_CrashDetectionView_Night_0_en",20301,],
+["features.login.impl.screens.createaccount_CreateAccountView_Day_0_en","features.login.impl.screens.createaccount_CreateAccountView_Night_0_en",20301,],
+["features.login.impl.screens.createaccount_CreateAccountView_Day_1_en","features.login.impl.screens.createaccount_CreateAccountView_Night_1_en",20301,],
+["features.login.impl.screens.createaccount_CreateAccountView_Day_2_en","features.login.impl.screens.createaccount_CreateAccountView_Night_2_en",20301,],
+["features.login.impl.screens.createaccount_CreateAccountView_Day_3_en","features.login.impl.screens.createaccount_CreateAccountView_Night_3_en",20301,],
+["libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Day_0_en","libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Night_0_en",20301,],
+["libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Day_1_en","libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Night_1_en",20301,],
+["features.poll.impl.create_CreatePollView_Day_0_en","features.poll.impl.create_CreatePollView_Night_0_en",20301,],
+["features.poll.impl.create_CreatePollView_Day_1_en","features.poll.impl.create_CreatePollView_Night_1_en",20301,],
+["features.poll.impl.create_CreatePollView_Day_2_en","features.poll.impl.create_CreatePollView_Night_2_en",20301,],
+["features.poll.impl.create_CreatePollView_Day_3_en","features.poll.impl.create_CreatePollView_Night_3_en",20301,],
+["features.poll.impl.create_CreatePollView_Day_4_en","features.poll.impl.create_CreatePollView_Night_4_en",20301,],
+["features.poll.impl.create_CreatePollView_Day_5_en","features.poll.impl.create_CreatePollView_Night_5_en",20301,],
+["features.poll.impl.create_CreatePollView_Day_6_en","features.poll.impl.create_CreatePollView_Night_6_en",20301,],
+["features.poll.impl.create_CreatePollView_Day_7_en","features.poll.impl.create_CreatePollView_Night_7_en",20301,],
+["features.createroom.impl.root_CreateRoomRootView_Day_0_en","features.createroom.impl.root_CreateRoomRootView_Night_0_en",20301,],
+["features.createroom.impl.root_CreateRoomRootView_Day_1_en","features.createroom.impl.root_CreateRoomRootView_Night_1_en",20301,],
+["features.createroom.impl.root_CreateRoomRootView_Day_2_en","features.createroom.impl.root_CreateRoomRootView_Night_2_en",20301,],
+["features.createroom.impl.root_CreateRoomRootView_Day_3_en","features.createroom.impl.root_CreateRoomRootView_Night_3_en",20301,],
+["features.createroom.impl.root_CreateRoomRootView_Day_4_en","features.createroom.impl.root_CreateRoomRootView_Night_4_en",20301,],
+["features.createroom.impl.root_CreateRoomRootView_Day_5_en","features.createroom.impl.root_CreateRoomRootView_Night_5_en",20301,],
+["libraries.dateformatter.impl.previews_DateFormatterModeView_0_en","",20301,],
+["libraries.dateformatter.impl.previews_DateFormatterModeView_1_en","",20301,],
+["libraries.dateformatter.impl.previews_DateFormatterModeView_2_en","",20301,],
+["libraries.dateformatter.impl.previews_DateFormatterModeView_3_en","",20301,],
+["libraries.dateformatter.impl.previews_DateFormatterModeView_4_en","",20301,],
["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","",20294,],
-["libraries.designsystem.theme.components.previews_DatePickerLight_DateTime_pickers_en","",20294,],
-["features.invite.impl.declineandblock_DeclineAndBlockView_Day_0_en","features.invite.impl.declineandblock_DeclineAndBlockView_Night_0_en",20294,],
-["features.invite.impl.declineandblock_DeclineAndBlockView_Day_1_en","features.invite.impl.declineandblock_DeclineAndBlockView_Night_1_en",20294,],
-["features.invite.impl.declineandblock_DeclineAndBlockView_Day_2_en","features.invite.impl.declineandblock_DeclineAndBlockView_Night_2_en",20294,],
-["features.invite.impl.declineandblock_DeclineAndBlockView_Day_3_en","features.invite.impl.declineandblock_DeclineAndBlockView_Night_3_en",20294,],
-["features.invite.impl.declineandblock_DeclineAndBlockView_Day_4_en","features.invite.impl.declineandblock_DeclineAndBlockView_Night_4_en",20294,],
+["libraries.designsystem.theme.components.previews_DatePickerDark_DateTime_pickers_en","",20301,],
+["libraries.designsystem.theme.components.previews_DatePickerLight_DateTime_pickers_en","",20301,],
+["features.invite.impl.declineandblock_DeclineAndBlockView_Day_0_en","features.invite.impl.declineandblock_DeclineAndBlockView_Night_0_en",20301,],
+["features.invite.impl.declineandblock_DeclineAndBlockView_Day_1_en","features.invite.impl.declineandblock_DeclineAndBlockView_Night_1_en",20301,],
+["features.invite.impl.declineandblock_DeclineAndBlockView_Day_2_en","features.invite.impl.declineandblock_DeclineAndBlockView_Night_2_en",20301,],
+["features.invite.impl.declineandblock_DeclineAndBlockView_Day_3_en","features.invite.impl.declineandblock_DeclineAndBlockView_Night_3_en",20301,],
+["features.invite.impl.declineandblock_DeclineAndBlockView_Day_4_en","features.invite.impl.declineandblock_DeclineAndBlockView_Night_4_en",20301,],
["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",20294,],
-["features.logout.impl.direct_DefaultDirectLogoutView_Day_2_en","features.logout.impl.direct_DefaultDirectLogoutView_Night_2_en",20294,],
-["features.logout.impl.direct_DefaultDirectLogoutView_Day_3_en","features.logout.impl.direct_DefaultDirectLogoutView_Night_3_en",20294,],
+["features.logout.impl.direct_DefaultDirectLogoutView_Day_1_en","features.logout.impl.direct_DefaultDirectLogoutView_Night_1_en",20301,],
+["features.logout.impl.direct_DefaultDirectLogoutView_Day_2_en","features.logout.impl.direct_DefaultDirectLogoutView_Night_2_en",20301,],
+["features.logout.impl.direct_DefaultDirectLogoutView_Day_3_en","features.logout.impl.direct_DefaultDirectLogoutView_Night_3_en",20301,],
["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",20294,],
-["features.home.impl.components_DefaultRoomListTopBarWithIndicator_Day_0_en","features.home.impl.components_DefaultRoomListTopBarWithIndicator_Night_0_en",20294,],
-["features.home.impl.components_DefaultRoomListTopBar_Day_0_en","features.home.impl.components_DefaultRoomListTopBar_Night_0_en",20294,],
+["features.preferences.impl.notifications.edit_DefaultNotificationSettingOption_Day_0_en","features.preferences.impl.notifications.edit_DefaultNotificationSettingOption_Night_0_en",20301,],
+["features.home.impl.components_DefaultRoomListTopBarWithIndicator_Day_0_en","features.home.impl.components_DefaultRoomListTopBarWithIndicator_Night_0_en",20301,],
+["features.home.impl.components_DefaultRoomListTopBar_Day_0_en","features.home.impl.components_DefaultRoomListTopBar_Night_0_en",20301,],
["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",20294,],
-["features.licenses.impl.list_DependencyLicensesListView_Day_1_en","features.licenses.impl.list_DependencyLicensesListView_Night_1_en",20294,],
-["features.licenses.impl.list_DependencyLicensesListView_Day_2_en","features.licenses.impl.list_DependencyLicensesListView_Night_2_en",20294,],
-["features.licenses.impl.list_DependencyLicensesListView_Day_3_en","features.licenses.impl.list_DependencyLicensesListView_Night_3_en",20294,],
-["features.preferences.impl.developer_DeveloperSettingsView_Day_0_en","features.preferences.impl.developer_DeveloperSettingsView_Night_0_en",20294,],
-["features.preferences.impl.developer_DeveloperSettingsView_Day_1_en","features.preferences.impl.developer_DeveloperSettingsView_Night_1_en",20294,],
-["features.preferences.impl.developer_DeveloperSettingsView_Day_2_en","features.preferences.impl.developer_DeveloperSettingsView_Night_2_en",20294,],
+["features.licenses.impl.list_DependencyLicensesListView_Day_0_en","features.licenses.impl.list_DependencyLicensesListView_Night_0_en",20301,],
+["features.licenses.impl.list_DependencyLicensesListView_Day_1_en","features.licenses.impl.list_DependencyLicensesListView_Night_1_en",20301,],
+["features.licenses.impl.list_DependencyLicensesListView_Day_2_en","features.licenses.impl.list_DependencyLicensesListView_Night_2_en",20301,],
+["features.licenses.impl.list_DependencyLicensesListView_Day_3_en","features.licenses.impl.list_DependencyLicensesListView_Night_3_en",20301,],
+["features.preferences.impl.developer_DeveloperSettingsView_Day_0_en","features.preferences.impl.developer_DeveloperSettingsView_Night_0_en",20301,],
+["features.preferences.impl.developer_DeveloperSettingsView_Day_1_en","features.preferences.impl.developer_DeveloperSettingsView_Night_1_en",20301,],
+["features.preferences.impl.developer_DeveloperSettingsView_Day_2_en","features.preferences.impl.developer_DeveloperSettingsView_Night_2_en",20301,],
["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,],
@@ -354,18 +355,18 @@ 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",20294,],
-["features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_1_en","features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_1_en",20294,],
-["features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_2_en","features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_2_en",20294,],
-["features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_3_en","features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_3_en",20294,],
-["features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_4_en","features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_4_en",20294,],
-["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_0_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_0_en",20294,],
-["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_1_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_1_en",20294,],
-["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_2_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_2_en",20294,],
-["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_3_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_3_en",20294,],
-["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_4_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_4_en",20294,],
-["features.preferences.impl.user.editprofile_EditUserProfileView_Day_0_en","features.preferences.impl.user.editprofile_EditUserProfileView_Night_0_en",20294,],
-["features.preferences.impl.user.editprofile_EditUserProfileView_Day_1_en","features.preferences.impl.user.editprofile_EditUserProfileView_Night_1_en",20294,],
+["features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_0_en","features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_0_en",20301,],
+["features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_1_en","features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_1_en",20301,],
+["features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_2_en","features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_2_en",20301,],
+["features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_3_en","features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_3_en",20301,],
+["features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_4_en","features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_4_en",20301,],
+["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_0_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_0_en",20301,],
+["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_1_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_1_en",20301,],
+["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_2_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_2_en",20301,],
+["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_3_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_3_en",20301,],
+["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_4_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_4_en",20301,],
+["features.preferences.impl.user.editprofile_EditUserProfileView_Day_0_en","features.preferences.impl.user.editprofile_EditUserProfileView_Night_0_en",20301,],
+["features.preferences.impl.user.editprofile_EditUserProfileView_Day_1_en","features.preferences.impl.user.editprofile_EditUserProfileView_Night_1_en",20301,],
["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,],
@@ -375,9 +376,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","",20294,],
-["libraries.designsystem.components.dialogs_ErrorDialogWithDoNotShowAgain_Day_0_en","libraries.designsystem.components.dialogs_ErrorDialogWithDoNotShowAgain_Night_0_en",20294,],
-["libraries.designsystem.components.dialogs_ErrorDialog_Day_0_en","libraries.designsystem.components.dialogs_ErrorDialog_Night_0_en",20294,],
+["libraries.designsystem.components.dialogs_ErrorDialogContent_Dialogs_en","",20301,],
+["libraries.designsystem.components.dialogs_ErrorDialogWithDoNotShowAgain_Day_0_en","libraries.designsystem.components.dialogs_ErrorDialogWithDoNotShowAgain_Night_0_en",20301,],
+["libraries.designsystem.components.dialogs_ErrorDialog_Day_0_en","libraries.designsystem.components.dialogs_ErrorDialog_Night_0_en",20301,],
["features.messages.impl.timeline.debug_EventDebugInfoView_Day_0_en","features.messages.impl.timeline.debug_EventDebugInfoView_Night_0_en",0,],
["libraries.designsystem.components_ExpandableBottomSheetLayout_en","",0,],
["libraries.featureflag.ui_FeatureListView_Day_0_en","libraries.featureflag.ui_FeatureListView_Night_0_en",0,],
@@ -396,38 +397,38 @@ 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",20294,],
-["features.messages.impl.timeline.focus_FocusRequestStateView_Day_2_en","features.messages.impl.timeline.focus_FocusRequestStateView_Night_2_en",20294,],
-["features.messages.impl.timeline.focus_FocusRequestStateView_Day_3_en","features.messages.impl.timeline.focus_FocusRequestStateView_Night_3_en",20294,],
+["features.messages.impl.timeline.focus_FocusRequestStateView_Day_1_en","features.messages.impl.timeline.focus_FocusRequestStateView_Night_1_en",20301,],
+["features.messages.impl.timeline.focus_FocusRequestStateView_Day_2_en","features.messages.impl.timeline.focus_FocusRequestStateView_Night_2_en",20301,],
+["features.messages.impl.timeline.focus_FocusRequestStateView_Day_3_en","features.messages.impl.timeline.focus_FocusRequestStateView_Night_3_en",20301,],
["features.messages.impl.timeline.components_FocusedEventEnterprise_Day_0_en","features.messages.impl.timeline.components_FocusedEventEnterprise_Night_0_en",0,],
["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",20294,],
-["features.home.impl.components_FullScreenIntentPermissionBanner_Day_0_en","features.home.impl.components_FullScreenIntentPermissionBanner_Night_0_en",20294,],
+["features.messages.impl.forward_ForwardMessagesView_Day_3_en","features.messages.impl.forward_ForwardMessagesView_Night_3_en",20301,],
+["features.home.impl.components_FullScreenIntentPermissionBanner_Day_0_en","features.home.impl.components_FullScreenIntentPermissionBanner_Night_0_en",20301,],
["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,],
["libraries.designsystem.atomic.pages_HeaderFooterPageScrollable_Day_0_en","libraries.designsystem.atomic.pages_HeaderFooterPageScrollable_Night_0_en",0,],
["libraries.designsystem.atomic.pages_HeaderFooterPage_Day_0_en","libraries.designsystem.atomic.pages_HeaderFooterPage_Night_0_en",0,],
-["features.home.impl_HomeView_Day_0_en","features.home.impl_HomeView_Night_0_en",20294,],
-["features.home.impl_HomeView_Day_10_en","features.home.impl_HomeView_Night_10_en",20294,],
+["features.home.impl_HomeView_Day_0_en","features.home.impl_HomeView_Night_0_en",20301,],
+["features.home.impl_HomeView_Day_10_en","features.home.impl_HomeView_Night_10_en",20301,],
["features.home.impl_HomeView_Day_11_en","features.home.impl_HomeView_Night_11_en",0,],
["features.home.impl_HomeView_Day_12_en","features.home.impl_HomeView_Night_12_en",0,],
-["features.home.impl_HomeView_Day_13_en","features.home.impl_HomeView_Night_13_en",20294,],
-["features.home.impl_HomeView_Day_14_en","features.home.impl_HomeView_Night_14_en",20294,],
-["features.home.impl_HomeView_Day_15_en","features.home.impl_HomeView_Night_15_en",20294,],
-["features.home.impl_HomeView_Day_1_en","features.home.impl_HomeView_Night_1_en",20294,],
-["features.home.impl_HomeView_Day_2_en","features.home.impl_HomeView_Night_2_en",20294,],
-["features.home.impl_HomeView_Day_3_en","features.home.impl_HomeView_Night_3_en",20294,],
+["features.home.impl_HomeView_Day_13_en","features.home.impl_HomeView_Night_13_en",20301,],
+["features.home.impl_HomeView_Day_14_en","features.home.impl_HomeView_Night_14_en",20301,],
+["features.home.impl_HomeView_Day_15_en","features.home.impl_HomeView_Night_15_en",20301,],
+["features.home.impl_HomeView_Day_1_en","features.home.impl_HomeView_Night_1_en",20301,],
+["features.home.impl_HomeView_Day_2_en","features.home.impl_HomeView_Night_2_en",20301,],
+["features.home.impl_HomeView_Day_3_en","features.home.impl_HomeView_Night_3_en",20301,],
["features.home.impl_HomeView_Day_4_en","features.home.impl_HomeView_Night_4_en",0,],
-["features.home.impl_HomeView_Day_5_en","features.home.impl_HomeView_Night_5_en",20294,],
-["features.home.impl_HomeView_Day_6_en","features.home.impl_HomeView_Night_6_en",20294,],
-["features.home.impl_HomeView_Day_7_en","features.home.impl_HomeView_Night_7_en",20294,],
-["features.home.impl_HomeView_Day_8_en","features.home.impl_HomeView_Night_8_en",20294,],
-["features.home.impl_HomeView_Day_9_en","features.home.impl_HomeView_Night_9_en",20294,],
+["features.home.impl_HomeView_Day_5_en","features.home.impl_HomeView_Night_5_en",20301,],
+["features.home.impl_HomeView_Day_6_en","features.home.impl_HomeView_Night_6_en",20301,],
+["features.home.impl_HomeView_Day_7_en","features.home.impl_HomeView_Night_7_en",20301,],
+["features.home.impl_HomeView_Day_8_en","features.home.impl_HomeView_Night_8_en",20301,],
+["features.home.impl_HomeView_Day_9_en","features.home.impl_HomeView_Night_9_en",20301,],
["libraries.designsystem.theme.components_HorizontalDivider_Dividers_en","",0,],
["libraries.designsystem.ruler_HorizontalRuler_Day_0_en","libraries.designsystem.ruler_HorizontalRuler_Night_0_en",0,],
["libraries.designsystem.theme.components_IconButton_Buttons_en","",0,],
@@ -446,8 +447,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",20294,],
-["features.messages.impl.crypto.identity_IdentityChangeStateView_Day_2_en","features.messages.impl.crypto.identity_IdentityChangeStateView_Night_2_en",20294,],
+["features.messages.impl.crypto.identity_IdentityChangeStateView_Day_1_en","features.messages.impl.crypto.identity_IdentityChangeStateView_Night_1_en",20301,],
+["features.messages.impl.crypto.identity_IdentityChangeStateView_Day_2_en","features.messages.impl.crypto.identity_IdentityChangeStateView_Night_2_en",20301,],
["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,],
@@ -455,85 +456,85 @@ 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",20294,],
+["libraries.matrix.ui.messages.reply_InReplyToView_Day_4_en","libraries.matrix.ui.messages.reply_InReplyToView_Night_4_en",20301,],
["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",20294,],
+["libraries.matrix.ui.messages.reply_InReplyToView_Day_8_en","libraries.matrix.ui.messages.reply_InReplyToView_Night_8_en",20301,],
["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",20294,],
-["features.verifysession.impl.incoming_IncomingVerificationView_Day_0_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_0_en",20294,],
-["features.verifysession.impl.incoming_IncomingVerificationView_Day_10_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_10_en",20294,],
-["features.verifysession.impl.incoming_IncomingVerificationView_Day_11_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_11_en",20294,],
-["features.verifysession.impl.incoming_IncomingVerificationView_Day_12_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_12_en",20294,],
-["features.verifysession.impl.incoming_IncomingVerificationView_Day_13_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_13_en",20294,],
-["features.verifysession.impl.incoming_IncomingVerificationView_Day_1_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_1_en",20294,],
-["features.verifysession.impl.incoming_IncomingVerificationView_Day_2_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_2_en",20294,],
-["features.verifysession.impl.incoming_IncomingVerificationView_Day_3_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_3_en",20294,],
-["features.verifysession.impl.incoming_IncomingVerificationView_Day_4_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_4_en",20294,],
-["features.verifysession.impl.incoming_IncomingVerificationView_Day_5_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_5_en",20294,],
-["features.verifysession.impl.incoming_IncomingVerificationView_Day_6_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_6_en",20294,],
-["features.verifysession.impl.incoming_IncomingVerificationView_Day_7_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_7_en",20294,],
-["features.verifysession.impl.incoming_IncomingVerificationView_Day_8_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_8_en",20294,],
-["features.verifysession.impl.incoming_IncomingVerificationView_Day_9_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_9_en",20294,],
+["features.call.impl.ui_IncomingCallScreen_Day_0_en","features.call.impl.ui_IncomingCallScreen_Night_0_en",20301,],
+["features.verifysession.impl.incoming_IncomingVerificationView_Day_0_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_0_en",20301,],
+["features.verifysession.impl.incoming_IncomingVerificationView_Day_10_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_10_en",20301,],
+["features.verifysession.impl.incoming_IncomingVerificationView_Day_11_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_11_en",20301,],
+["features.verifysession.impl.incoming_IncomingVerificationView_Day_12_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_12_en",20301,],
+["features.verifysession.impl.incoming_IncomingVerificationView_Day_13_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_13_en",20301,],
+["features.verifysession.impl.incoming_IncomingVerificationView_Day_1_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_1_en",20301,],
+["features.verifysession.impl.incoming_IncomingVerificationView_Day_2_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_2_en",20301,],
+["features.verifysession.impl.incoming_IncomingVerificationView_Day_3_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_3_en",20301,],
+["features.verifysession.impl.incoming_IncomingVerificationView_Day_4_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_4_en",20301,],
+["features.verifysession.impl.incoming_IncomingVerificationView_Day_5_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_5_en",20301,],
+["features.verifysession.impl.incoming_IncomingVerificationView_Day_6_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_6_en",20301,],
+["features.verifysession.impl.incoming_IncomingVerificationView_Day_7_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_7_en",20301,],
+["features.verifysession.impl.incoming_IncomingVerificationView_Day_8_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_8_en",20301,],
+["features.verifysession.impl.incoming_IncomingVerificationView_Day_9_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_9_en",20301,],
["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,],
-["features.call.impl.ui_InvalidAudioDeviceDialog_Day_0_en","features.call.impl.ui_InvalidAudioDeviceDialog_Night_0_en",20294,],
-["libraries.matrix.ui.components_InviteSenderView_Day_0_en","libraries.matrix.ui.components_InviteSenderView_Night_0_en",20294,],
-["features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Day_0_en","features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Night_0_en",20294,],
-["features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Day_1_en","features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Night_1_en",20294,],
-["features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Day_2_en","features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Night_2_en",20294,],
-["features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Day_3_en","features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Night_3_en",20294,],
-["features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Day_4_en","features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Night_4_en",20294,],
-["features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Day_5_en","features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Night_5_en",20294,],
+["features.call.impl.ui_InvalidAudioDeviceDialog_Day_0_en","features.call.impl.ui_InvalidAudioDeviceDialog_Night_0_en",20301,],
+["libraries.matrix.ui.components_InviteSenderView_Day_0_en","libraries.matrix.ui.components_InviteSenderView_Night_0_en",20301,],
+["features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Day_0_en","features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Night_0_en",20301,],
+["features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Day_1_en","features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Night_1_en",20301,],
+["features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Day_2_en","features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Night_2_en",20301,],
+["features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Day_3_en","features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Night_3_en",20301,],
+["features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Day_4_en","features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Night_4_en",20301,],
+["features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Day_5_en","features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Night_5_en",20301,],
["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",20294,],
-["features.joinroom.impl_JoinRoomView_Day_11_en","features.joinroom.impl_JoinRoomView_Night_11_en",20294,],
-["features.joinroom.impl_JoinRoomView_Day_12_en","features.joinroom.impl_JoinRoomView_Night_12_en",20294,],
-["features.joinroom.impl_JoinRoomView_Day_13_en","features.joinroom.impl_JoinRoomView_Night_13_en",20294,],
-["features.joinroom.impl_JoinRoomView_Day_14_en","features.joinroom.impl_JoinRoomView_Night_14_en",20294,],
-["features.joinroom.impl_JoinRoomView_Day_15_en","features.joinroom.impl_JoinRoomView_Night_15_en",20294,],
-["features.joinroom.impl_JoinRoomView_Day_16_en","features.joinroom.impl_JoinRoomView_Night_16_en",20294,],
-["features.joinroom.impl_JoinRoomView_Day_1_en","features.joinroom.impl_JoinRoomView_Night_1_en",20294,],
-["features.joinroom.impl_JoinRoomView_Day_2_en","features.joinroom.impl_JoinRoomView_Night_2_en",20294,],
-["features.joinroom.impl_JoinRoomView_Day_3_en","features.joinroom.impl_JoinRoomView_Night_3_en",20294,],
-["features.joinroom.impl_JoinRoomView_Day_4_en","features.joinroom.impl_JoinRoomView_Night_4_en",20294,],
-["features.joinroom.impl_JoinRoomView_Day_5_en","features.joinroom.impl_JoinRoomView_Night_5_en",20294,],
-["features.joinroom.impl_JoinRoomView_Day_6_en","features.joinroom.impl_JoinRoomView_Night_6_en",20294,],
-["features.joinroom.impl_JoinRoomView_Day_7_en","features.joinroom.impl_JoinRoomView_Night_7_en",20294,],
-["features.joinroom.impl_JoinRoomView_Day_8_en","features.joinroom.impl_JoinRoomView_Night_8_en",20294,],
-["features.joinroom.impl_JoinRoomView_Day_9_en","features.joinroom.impl_JoinRoomView_Night_9_en",20294,],
-["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_0_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_0_en",20294,],
-["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_1_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_1_en",20294,],
-["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_2_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_2_en",20294,],
-["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_3_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_3_en",20294,],
-["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_4_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_4_en",20294,],
-["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_5_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_5_en",20294,],
-["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_6_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_6_en",20294,],
-["features.knockrequests.impl.list_KnockRequestsListView_Day_0_en","features.knockrequests.impl.list_KnockRequestsListView_Night_0_en",20294,],
-["features.knockrequests.impl.list_KnockRequestsListView_Day_10_en","features.knockrequests.impl.list_KnockRequestsListView_Night_10_en",20294,],
-["features.knockrequests.impl.list_KnockRequestsListView_Day_1_en","features.knockrequests.impl.list_KnockRequestsListView_Night_1_en",20294,],
-["features.knockrequests.impl.list_KnockRequestsListView_Day_2_en","features.knockrequests.impl.list_KnockRequestsListView_Night_2_en",20294,],
-["features.knockrequests.impl.list_KnockRequestsListView_Day_3_en","features.knockrequests.impl.list_KnockRequestsListView_Night_3_en",20294,],
-["features.knockrequests.impl.list_KnockRequestsListView_Day_4_en","features.knockrequests.impl.list_KnockRequestsListView_Night_4_en",20294,],
-["features.knockrequests.impl.list_KnockRequestsListView_Day_5_en","features.knockrequests.impl.list_KnockRequestsListView_Night_5_en",20294,],
-["features.knockrequests.impl.list_KnockRequestsListView_Day_6_en","features.knockrequests.impl.list_KnockRequestsListView_Night_6_en",20294,],
-["features.knockrequests.impl.list_KnockRequestsListView_Day_7_en","features.knockrequests.impl.list_KnockRequestsListView_Night_7_en",20294,],
-["features.knockrequests.impl.list_KnockRequestsListView_Day_8_en","features.knockrequests.impl.list_KnockRequestsListView_Night_8_en",20294,],
-["features.knockrequests.impl.list_KnockRequestsListView_Day_9_en","features.knockrequests.impl.list_KnockRequestsListView_Night_9_en",20294,],
+["features.joinroom.impl_JoinRoomView_Day_10_en","features.joinroom.impl_JoinRoomView_Night_10_en",20301,],
+["features.joinroom.impl_JoinRoomView_Day_11_en","features.joinroom.impl_JoinRoomView_Night_11_en",20301,],
+["features.joinroom.impl_JoinRoomView_Day_12_en","features.joinroom.impl_JoinRoomView_Night_12_en",20301,],
+["features.joinroom.impl_JoinRoomView_Day_13_en","features.joinroom.impl_JoinRoomView_Night_13_en",20301,],
+["features.joinroom.impl_JoinRoomView_Day_14_en","features.joinroom.impl_JoinRoomView_Night_14_en",20301,],
+["features.joinroom.impl_JoinRoomView_Day_15_en","features.joinroom.impl_JoinRoomView_Night_15_en",20301,],
+["features.joinroom.impl_JoinRoomView_Day_16_en","features.joinroom.impl_JoinRoomView_Night_16_en",20301,],
+["features.joinroom.impl_JoinRoomView_Day_1_en","features.joinroom.impl_JoinRoomView_Night_1_en",20301,],
+["features.joinroom.impl_JoinRoomView_Day_2_en","features.joinroom.impl_JoinRoomView_Night_2_en",20301,],
+["features.joinroom.impl_JoinRoomView_Day_3_en","features.joinroom.impl_JoinRoomView_Night_3_en",20301,],
+["features.joinroom.impl_JoinRoomView_Day_4_en","features.joinroom.impl_JoinRoomView_Night_4_en",20301,],
+["features.joinroom.impl_JoinRoomView_Day_5_en","features.joinroom.impl_JoinRoomView_Night_5_en",20301,],
+["features.joinroom.impl_JoinRoomView_Day_6_en","features.joinroom.impl_JoinRoomView_Night_6_en",20301,],
+["features.joinroom.impl_JoinRoomView_Day_7_en","features.joinroom.impl_JoinRoomView_Night_7_en",20301,],
+["features.joinroom.impl_JoinRoomView_Day_8_en","features.joinroom.impl_JoinRoomView_Night_8_en",20301,],
+["features.joinroom.impl_JoinRoomView_Day_9_en","features.joinroom.impl_JoinRoomView_Night_9_en",20301,],
+["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_0_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_0_en",20301,],
+["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_1_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_1_en",20301,],
+["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_2_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_2_en",20301,],
+["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_3_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_3_en",20301,],
+["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_4_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_4_en",20301,],
+["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_5_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_5_en",20301,],
+["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_6_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_6_en",20301,],
+["features.knockrequests.impl.list_KnockRequestsListView_Day_0_en","features.knockrequests.impl.list_KnockRequestsListView_Night_0_en",20301,],
+["features.knockrequests.impl.list_KnockRequestsListView_Day_10_en","features.knockrequests.impl.list_KnockRequestsListView_Night_10_en",20301,],
+["features.knockrequests.impl.list_KnockRequestsListView_Day_1_en","features.knockrequests.impl.list_KnockRequestsListView_Night_1_en",20301,],
+["features.knockrequests.impl.list_KnockRequestsListView_Day_2_en","features.knockrequests.impl.list_KnockRequestsListView_Night_2_en",20301,],
+["features.knockrequests.impl.list_KnockRequestsListView_Day_3_en","features.knockrequests.impl.list_KnockRequestsListView_Night_3_en",20301,],
+["features.knockrequests.impl.list_KnockRequestsListView_Day_4_en","features.knockrequests.impl.list_KnockRequestsListView_Night_4_en",20301,],
+["features.knockrequests.impl.list_KnockRequestsListView_Day_5_en","features.knockrequests.impl.list_KnockRequestsListView_Night_5_en",20301,],
+["features.knockrequests.impl.list_KnockRequestsListView_Day_6_en","features.knockrequests.impl.list_KnockRequestsListView_Night_6_en",20301,],
+["features.knockrequests.impl.list_KnockRequestsListView_Day_7_en","features.knockrequests.impl.list_KnockRequestsListView_Night_7_en",20301,],
+["features.knockrequests.impl.list_KnockRequestsListView_Day_8_en","features.knockrequests.impl.list_KnockRequestsListView_Night_8_en",20301,],
+["features.knockrequests.impl.list_KnockRequestsListView_Day_9_en","features.knockrequests.impl.list_KnockRequestsListView_Night_9_en",20301,],
["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",20294,],
-["features.leaveroom.api_LeaveRoomView_Day_2_en","features.leaveroom.api_LeaveRoomView_Night_2_en",20294,],
-["features.leaveroom.api_LeaveRoomView_Day_3_en","features.leaveroom.api_LeaveRoomView_Night_3_en",20294,],
-["features.leaveroom.api_LeaveRoomView_Day_4_en","features.leaveroom.api_LeaveRoomView_Night_4_en",20294,],
-["features.leaveroom.api_LeaveRoomView_Day_5_en","features.leaveroom.api_LeaveRoomView_Night_5_en",20294,],
-["features.leaveroom.api_LeaveRoomView_Day_6_en","features.leaveroom.api_LeaveRoomView_Night_6_en",20294,],
+["features.leaveroom.api_LeaveRoomView_Day_1_en","features.leaveroom.api_LeaveRoomView_Night_1_en",20301,],
+["features.leaveroom.api_LeaveRoomView_Day_2_en","features.leaveroom.api_LeaveRoomView_Night_2_en",20301,],
+["features.leaveroom.api_LeaveRoomView_Day_3_en","features.leaveroom.api_LeaveRoomView_Night_3_en",20301,],
+["features.leaveroom.api_LeaveRoomView_Day_4_en","features.leaveroom.api_LeaveRoomView_Night_4_en",20301,],
+["features.leaveroom.api_LeaveRoomView_Day_5_en","features.leaveroom.api_LeaveRoomView_Night_5_en",20301,],
+["features.leaveroom.api_LeaveRoomView_Day_6_en","features.leaveroom.api_LeaveRoomView_Night_6_en",20301,],
["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",20294,],
+["features.messages.impl.link_LinkView_Day_1_en","features.messages.impl.link_LinkView_Night_1_en",20301,],
["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,],
@@ -588,31 +589,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",20294,],
-["features.lockscreen.impl.settings_LockScreenSettingsView_Day_0_en","features.lockscreen.impl.settings_LockScreenSettingsView_Night_0_en",20294,],
-["features.lockscreen.impl.settings_LockScreenSettingsView_Day_1_en","features.lockscreen.impl.settings_LockScreenSettingsView_Night_1_en",20294,],
-["features.lockscreen.impl.settings_LockScreenSettingsView_Day_2_en","features.lockscreen.impl.settings_LockScreenSettingsView_Night_2_en",20294,],
+["appnav.room.joined_LoadingRoomNodeView_Day_1_en","appnav.room.joined_LoadingRoomNodeView_Night_1_en",20301,],
+["features.lockscreen.impl.settings_LockScreenSettingsView_Day_0_en","features.lockscreen.impl.settings_LockScreenSettingsView_Night_0_en",20301,],
+["features.lockscreen.impl.settings_LockScreenSettingsView_Day_1_en","features.lockscreen.impl.settings_LockScreenSettingsView_Night_1_en",20301,],
+["features.lockscreen.impl.settings_LockScreenSettingsView_Day_2_en","features.lockscreen.impl.settings_LockScreenSettingsView_Night_2_en",20301,],
["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",20294,],
-["appnav.loggedin_LoggedInView_Day_2_en","appnav.loggedin_LoggedInView_Night_2_en",20294,],
-["appnav.loggedin_LoggedInView_Day_3_en","appnav.loggedin_LoggedInView_Night_3_en",20294,],
-["features.login.impl.screens.loginpassword_LoginPasswordView_Day_0_en","features.login.impl.screens.loginpassword_LoginPasswordView_Night_0_en",20294,],
-["features.login.impl.screens.loginpassword_LoginPasswordView_Day_1_en","features.login.impl.screens.loginpassword_LoginPasswordView_Night_1_en",20294,],
-["features.login.impl.screens.loginpassword_LoginPasswordView_Day_2_en","features.login.impl.screens.loginpassword_LoginPasswordView_Night_2_en",20294,],
-["features.logout.impl_LogoutView_Day_0_en","features.logout.impl_LogoutView_Night_0_en",20294,],
-["features.logout.impl_LogoutView_Day_10_en","features.logout.impl_LogoutView_Night_10_en",20294,],
-["features.logout.impl_LogoutView_Day_11_en","features.logout.impl_LogoutView_Night_11_en",20294,],
-["features.logout.impl_LogoutView_Day_1_en","features.logout.impl_LogoutView_Night_1_en",20294,],
-["features.logout.impl_LogoutView_Day_2_en","features.logout.impl_LogoutView_Night_2_en",20294,],
-["features.logout.impl_LogoutView_Day_3_en","features.logout.impl_LogoutView_Night_3_en",20294,],
-["features.logout.impl_LogoutView_Day_4_en","features.logout.impl_LogoutView_Night_4_en",20294,],
-["features.logout.impl_LogoutView_Day_5_en","features.logout.impl_LogoutView_Night_5_en",20294,],
-["features.logout.impl_LogoutView_Day_6_en","features.logout.impl_LogoutView_Night_6_en",20294,],
-["features.logout.impl_LogoutView_Day_7_en","features.logout.impl_LogoutView_Night_7_en",20294,],
-["features.logout.impl_LogoutView_Day_8_en","features.logout.impl_LogoutView_Night_8_en",20294,],
-["features.logout.impl_LogoutView_Day_9_en","features.logout.impl_LogoutView_Night_9_en",20294,],
+["appnav.loggedin_LoggedInView_Day_1_en","appnav.loggedin_LoggedInView_Night_1_en",20301,],
+["appnav.loggedin_LoggedInView_Day_2_en","appnav.loggedin_LoggedInView_Night_2_en",20301,],
+["appnav.loggedin_LoggedInView_Day_3_en","appnav.loggedin_LoggedInView_Night_3_en",20301,],
+["features.login.impl.screens.loginpassword_LoginPasswordView_Day_0_en","features.login.impl.screens.loginpassword_LoginPasswordView_Night_0_en",20301,],
+["features.login.impl.screens.loginpassword_LoginPasswordView_Day_1_en","features.login.impl.screens.loginpassword_LoginPasswordView_Night_1_en",20301,],
+["features.login.impl.screens.loginpassword_LoginPasswordView_Day_2_en","features.login.impl.screens.loginpassword_LoginPasswordView_Night_2_en",20301,],
+["features.logout.impl_LogoutView_Day_0_en","features.logout.impl_LogoutView_Night_0_en",20301,],
+["features.logout.impl_LogoutView_Day_10_en","features.logout.impl_LogoutView_Night_10_en",20301,],
+["features.logout.impl_LogoutView_Day_11_en","features.logout.impl_LogoutView_Night_11_en",20301,],
+["features.logout.impl_LogoutView_Day_1_en","features.logout.impl_LogoutView_Night_1_en",20301,],
+["features.logout.impl_LogoutView_Day_2_en","features.logout.impl_LogoutView_Night_2_en",20301,],
+["features.logout.impl_LogoutView_Day_3_en","features.logout.impl_LogoutView_Night_3_en",20301,],
+["features.logout.impl_LogoutView_Day_4_en","features.logout.impl_LogoutView_Night_4_en",20301,],
+["features.logout.impl_LogoutView_Day_5_en","features.logout.impl_LogoutView_Night_5_en",20301,],
+["features.logout.impl_LogoutView_Day_6_en","features.logout.impl_LogoutView_Night_6_en",20301,],
+["features.logout.impl_LogoutView_Day_7_en","features.logout.impl_LogoutView_Night_7_en",20301,],
+["features.logout.impl_LogoutView_Day_8_en","features.logout.impl_LogoutView_Night_8_en",20301,],
+["features.logout.impl_LogoutView_Day_9_en","features.logout.impl_LogoutView_Night_9_en",20301,],
["libraries.designsystem.components.button_MainActionButton_Buttons_en","",0,],
-["libraries.textcomposer_MarkdownTextComposerEdit_Day_0_en","libraries.textcomposer_MarkdownTextComposerEdit_Night_0_en",20294,],
+["libraries.textcomposer_MarkdownTextComposerEdit_Day_0_en","libraries.textcomposer_MarkdownTextComposerEdit_Night_0_en",20301,],
["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,],
@@ -625,22 +626,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",20294,],
-["libraries.mediaviewer.impl.details_MediaDetailsBottomSheet_Day_0_en","libraries.mediaviewer.impl.details_MediaDetailsBottomSheet_Night_0_en",20294,],
+["libraries.mediaviewer.impl.details_MediaDeleteConfirmationBottomSheet_Day_0_en","libraries.mediaviewer.impl.details_MediaDeleteConfirmationBottomSheet_Night_0_en",20301,],
+["libraries.mediaviewer.impl.details_MediaDetailsBottomSheet_Day_0_en","libraries.mediaviewer.impl.details_MediaDetailsBottomSheet_Night_0_en",20301,],
["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",20294,],
-["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_10_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_10_en",20294,],
-["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_11_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_11_en",20294,],
-["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_12_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_12_en",20294,],
-["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_1_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_1_en",20294,],
-["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_2_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_2_en",20294,],
-["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_3_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_3_en",20294,],
-["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_4_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_4_en",20294,],
-["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_5_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_5_en",20294,],
-["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_6_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_6_en",20294,],
-["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_7_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_7_en",20294,],
-["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_8_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_8_en",20294,],
-["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_9_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_9_en",20294,],
+["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_0_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_0_en",20301,],
+["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_10_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_10_en",20301,],
+["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_11_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_11_en",20301,],
+["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_12_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_12_en",20301,],
+["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_1_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_1_en",20301,],
+["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_2_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_2_en",20301,],
+["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_3_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_3_en",20301,],
+["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_4_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_4_en",20301,],
+["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_5_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_5_en",20301,],
+["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_6_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_6_en",20301,],
+["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_7_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_7_en",20301,],
+["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_8_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_8_en",20301,],
+["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_9_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_9_en",20301,],
["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,],
@@ -648,14 +649,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","",20294,],
-["libraries.mediaviewer.impl.viewer_MediaViewerView_12_en","",20294,],
+["libraries.mediaviewer.impl.viewer_MediaViewerView_11_en","",20301,],
+["libraries.mediaviewer.impl.viewer_MediaViewerView_12_en","",20301,],
["libraries.mediaviewer.impl.viewer_MediaViewerView_13_en","",0,],
-["libraries.mediaviewer.impl.viewer_MediaViewerView_14_en","",20294,],
+["libraries.mediaviewer.impl.viewer_MediaViewerView_14_en","",20301,],
["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","",20294,],
+["libraries.mediaviewer.impl.viewer_MediaViewerView_2_en","",20301,],
["libraries.mediaviewer.impl.viewer_MediaViewerView_3_en","",0,],
["libraries.mediaviewer.impl.viewer_MediaViewerView_4_en","",0,],
["libraries.mediaviewer.impl.viewer_MediaViewerView_5_en","",0,],
@@ -668,7 +669,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",20294,],
+["features.messages.impl.messagecomposer_MessageComposerView_Day_0_en","features.messages.impl.messagecomposer_MessageComposerView_Night_0_en",20301,],
["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_1_en","features.messages.impl.timeline.components_MessageEventBubble_Night_1_en",0,],
["features.messages.impl.timeline.components_MessageEventBubble_Day_2_en","features.messages.impl.timeline.components_MessageEventBubble_Night_2_en",0,],
@@ -677,7 +678,7 @@ export const screenshots = [
["features.messages.impl.timeline.components_MessageEventBubble_Day_5_en","features.messages.impl.timeline.components_MessageEventBubble_Night_5_en",0,],
["features.messages.impl.timeline.components_MessageEventBubble_Day_6_en","features.messages.impl.timeline.components_MessageEventBubble_Night_6_en",0,],
["features.messages.impl.timeline.components_MessageEventBubble_Day_7_en","features.messages.impl.timeline.components_MessageEventBubble_Night_7_en",0,],
-["features.messages.impl.timeline.components_MessageShieldView_Day_0_en","features.messages.impl.timeline.components_MessageShieldView_Night_0_en",20294,],
+["features.messages.impl.timeline.components_MessageShieldView_Day_0_en","features.messages.impl.timeline.components_MessageShieldView_Night_0_en",20301,],
["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,],
@@ -685,26 +686,26 @@ 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",20294,],
-["features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Day_1_en","features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Night_1_en",20294,],
-["features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Day_2_en","features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Night_2_en",20294,],
-["features.messages.impl_MessagesView_Day_0_en","features.messages.impl_MessagesView_Night_0_en",20294,],
-["features.messages.impl_MessagesView_Day_10_en","features.messages.impl_MessagesView_Night_10_en",20294,],
-["features.messages.impl_MessagesView_Day_11_en","features.messages.impl_MessagesView_Night_11_en",20294,],
-["features.messages.impl_MessagesView_Day_12_en","features.messages.impl_MessagesView_Night_12_en",20294,],
-["features.messages.impl_MessagesView_Day_13_en","features.messages.impl_MessagesView_Night_13_en",20294,],
-["features.messages.impl_MessagesView_Day_14_en","features.messages.impl_MessagesView_Night_14_en",20294,],
-["features.messages.impl_MessagesView_Day_1_en","features.messages.impl_MessagesView_Night_1_en",20294,],
-["features.messages.impl_MessagesView_Day_2_en","features.messages.impl_MessagesView_Night_2_en",20294,],
-["features.messages.impl_MessagesView_Day_3_en","features.messages.impl_MessagesView_Night_3_en",20294,],
-["features.messages.impl_MessagesView_Day_4_en","features.messages.impl_MessagesView_Night_4_en",20294,],
-["features.messages.impl_MessagesView_Day_5_en","features.messages.impl_MessagesView_Night_5_en",20294,],
-["features.messages.impl_MessagesView_Day_6_en","features.messages.impl_MessagesView_Night_6_en",20294,],
-["features.messages.impl_MessagesView_Day_7_en","features.messages.impl_MessagesView_Night_7_en",20294,],
-["features.messages.impl_MessagesView_Day_8_en","features.messages.impl_MessagesView_Night_8_en",20294,],
-["features.messages.impl_MessagesView_Day_9_en","features.messages.impl_MessagesView_Night_9_en",20294,],
+["features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Day_0_en","features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Night_0_en",20301,],
+["features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Day_1_en","features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Night_1_en",20301,],
+["features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Day_2_en","features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Night_2_en",20301,],
+["features.messages.impl_MessagesView_Day_0_en","features.messages.impl_MessagesView_Night_0_en",20301,],
+["features.messages.impl_MessagesView_Day_10_en","features.messages.impl_MessagesView_Night_10_en",20301,],
+["features.messages.impl_MessagesView_Day_11_en","features.messages.impl_MessagesView_Night_11_en",20301,],
+["features.messages.impl_MessagesView_Day_12_en","features.messages.impl_MessagesView_Night_12_en",20301,],
+["features.messages.impl_MessagesView_Day_13_en","features.messages.impl_MessagesView_Night_13_en",20301,],
+["features.messages.impl_MessagesView_Day_14_en","features.messages.impl_MessagesView_Night_14_en",20301,],
+["features.messages.impl_MessagesView_Day_1_en","features.messages.impl_MessagesView_Night_1_en",20301,],
+["features.messages.impl_MessagesView_Day_2_en","features.messages.impl_MessagesView_Night_2_en",20301,],
+["features.messages.impl_MessagesView_Day_3_en","features.messages.impl_MessagesView_Night_3_en",20301,],
+["features.messages.impl_MessagesView_Day_4_en","features.messages.impl_MessagesView_Night_4_en",20301,],
+["features.messages.impl_MessagesView_Day_5_en","features.messages.impl_MessagesView_Night_5_en",20301,],
+["features.messages.impl_MessagesView_Day_6_en","features.messages.impl_MessagesView_Night_6_en",20301,],
+["features.messages.impl_MessagesView_Day_7_en","features.messages.impl_MessagesView_Night_7_en",20301,],
+["features.messages.impl_MessagesView_Day_8_en","features.messages.impl_MessagesView_Night_8_en",20301,],
+["features.messages.impl_MessagesView_Day_9_en","features.messages.impl_MessagesView_Night_9_en",20301,],
["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",20294,],
+["features.migration.impl_MigrationView_Day_1_en","features.migration.impl_MigrationView_Night_1_en",20301,],
["libraries.designsystem.theme.components_ModalBottomSheetDark_Bottom_Sheets_en","",0,],
["libraries.designsystem.theme.components_ModalBottomSheetLight_Bottom_Sheets_en","",0,],
["appicon.element_MonochromeIcon_en","",0,],
@@ -714,107 +715,107 @@ export const screenshots = [
["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,],
["libraries.designsystem.theme.components_NavigationBar_App_Bars_en","",0,],
-["features.preferences.impl.notifications_NotificationSettingsView_Day_0_en","features.preferences.impl.notifications_NotificationSettingsView_Night_0_en",20294,],
-["features.preferences.impl.notifications_NotificationSettingsView_Day_10_en","features.preferences.impl.notifications_NotificationSettingsView_Night_10_en",20294,],
-["features.preferences.impl.notifications_NotificationSettingsView_Day_11_en","features.preferences.impl.notifications_NotificationSettingsView_Night_11_en",20294,],
-["features.preferences.impl.notifications_NotificationSettingsView_Day_12_en","features.preferences.impl.notifications_NotificationSettingsView_Night_12_en",20294,],
-["features.preferences.impl.notifications_NotificationSettingsView_Day_13_en","features.preferences.impl.notifications_NotificationSettingsView_Night_13_en",20294,],
-["features.preferences.impl.notifications_NotificationSettingsView_Day_1_en","features.preferences.impl.notifications_NotificationSettingsView_Night_1_en",20294,],
-["features.preferences.impl.notifications_NotificationSettingsView_Day_2_en","features.preferences.impl.notifications_NotificationSettingsView_Night_2_en",20294,],
-["features.preferences.impl.notifications_NotificationSettingsView_Day_3_en","features.preferences.impl.notifications_NotificationSettingsView_Night_3_en",20294,],
-["features.preferences.impl.notifications_NotificationSettingsView_Day_4_en","features.preferences.impl.notifications_NotificationSettingsView_Night_4_en",20294,],
-["features.preferences.impl.notifications_NotificationSettingsView_Day_5_en","features.preferences.impl.notifications_NotificationSettingsView_Night_5_en",20294,],
-["features.preferences.impl.notifications_NotificationSettingsView_Day_6_en","features.preferences.impl.notifications_NotificationSettingsView_Night_6_en",20294,],
-["features.preferences.impl.notifications_NotificationSettingsView_Day_7_en","features.preferences.impl.notifications_NotificationSettingsView_Night_7_en",20294,],
-["features.preferences.impl.notifications_NotificationSettingsView_Day_8_en","features.preferences.impl.notifications_NotificationSettingsView_Night_8_en",20294,],
-["features.preferences.impl.notifications_NotificationSettingsView_Day_9_en","features.preferences.impl.notifications_NotificationSettingsView_Night_9_en",20294,],
-["features.ftue.impl.notifications_NotificationsOptInView_Day_0_en","features.ftue.impl.notifications_NotificationsOptInView_Night_0_en",20294,],
+["features.preferences.impl.notifications_NotificationSettingsView_Day_0_en","features.preferences.impl.notifications_NotificationSettingsView_Night_0_en",20301,],
+["features.preferences.impl.notifications_NotificationSettingsView_Day_10_en","features.preferences.impl.notifications_NotificationSettingsView_Night_10_en",20301,],
+["features.preferences.impl.notifications_NotificationSettingsView_Day_11_en","features.preferences.impl.notifications_NotificationSettingsView_Night_11_en",20301,],
+["features.preferences.impl.notifications_NotificationSettingsView_Day_12_en","features.preferences.impl.notifications_NotificationSettingsView_Night_12_en",20301,],
+["features.preferences.impl.notifications_NotificationSettingsView_Day_13_en","features.preferences.impl.notifications_NotificationSettingsView_Night_13_en",20301,],
+["features.preferences.impl.notifications_NotificationSettingsView_Day_1_en","features.preferences.impl.notifications_NotificationSettingsView_Night_1_en",20301,],
+["features.preferences.impl.notifications_NotificationSettingsView_Day_2_en","features.preferences.impl.notifications_NotificationSettingsView_Night_2_en",20301,],
+["features.preferences.impl.notifications_NotificationSettingsView_Day_3_en","features.preferences.impl.notifications_NotificationSettingsView_Night_3_en",20301,],
+["features.preferences.impl.notifications_NotificationSettingsView_Day_4_en","features.preferences.impl.notifications_NotificationSettingsView_Night_4_en",20301,],
+["features.preferences.impl.notifications_NotificationSettingsView_Day_5_en","features.preferences.impl.notifications_NotificationSettingsView_Night_5_en",20301,],
+["features.preferences.impl.notifications_NotificationSettingsView_Day_6_en","features.preferences.impl.notifications_NotificationSettingsView_Night_6_en",20301,],
+["features.preferences.impl.notifications_NotificationSettingsView_Day_7_en","features.preferences.impl.notifications_NotificationSettingsView_Night_7_en",20301,],
+["features.preferences.impl.notifications_NotificationSettingsView_Day_8_en","features.preferences.impl.notifications_NotificationSettingsView_Night_8_en",20301,],
+["features.preferences.impl.notifications_NotificationSettingsView_Day_9_en","features.preferences.impl.notifications_NotificationSettingsView_Night_9_en",20301,],
+["features.ftue.impl.notifications_NotificationsOptInView_Day_0_en","features.ftue.impl.notifications_NotificationsOptInView_Night_0_en",20301,],
["libraries.designsystem.atomic.pages_OnBoardingPage_Day_0_en","libraries.designsystem.atomic.pages_OnBoardingPage_Night_0_en",0,],
-["features.login.impl.screens.onboarding_OnBoardingView_Day_0_en","features.login.impl.screens.onboarding_OnBoardingView_Night_0_en",20294,],
-["features.login.impl.screens.onboarding_OnBoardingView_Day_1_en","features.login.impl.screens.onboarding_OnBoardingView_Night_1_en",20294,],
-["features.login.impl.screens.onboarding_OnBoardingView_Day_2_en","features.login.impl.screens.onboarding_OnBoardingView_Night_2_en",20294,],
-["features.login.impl.screens.onboarding_OnBoardingView_Day_3_en","features.login.impl.screens.onboarding_OnBoardingView_Night_3_en",20294,],
-["features.login.impl.screens.onboarding_OnBoardingView_Day_4_en","features.login.impl.screens.onboarding_OnBoardingView_Night_4_en",20294,],
-["features.login.impl.screens.onboarding_OnBoardingView_Day_5_en","features.login.impl.screens.onboarding_OnBoardingView_Night_5_en",20294,],
+["features.login.impl.screens.onboarding_OnBoardingView_Day_0_en","features.login.impl.screens.onboarding_OnBoardingView_Night_0_en",20301,],
+["features.login.impl.screens.onboarding_OnBoardingView_Day_1_en","features.login.impl.screens.onboarding_OnBoardingView_Night_1_en",20301,],
+["features.login.impl.screens.onboarding_OnBoardingView_Day_2_en","features.login.impl.screens.onboarding_OnBoardingView_Night_2_en",20301,],
+["features.login.impl.screens.onboarding_OnBoardingView_Day_3_en","features.login.impl.screens.onboarding_OnBoardingView_Night_3_en",20301,],
+["features.login.impl.screens.onboarding_OnBoardingView_Day_4_en","features.login.impl.screens.onboarding_OnBoardingView_Night_4_en",20301,],
+["features.login.impl.screens.onboarding_OnBoardingView_Day_5_en","features.login.impl.screens.onboarding_OnBoardingView_Night_5_en",20301,],
["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",20294,],
-["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_10_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_10_en",20294,],
-["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_11_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_11_en",20294,],
+["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_0_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_0_en",20301,],
+["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_10_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_10_en",20301,],
+["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_11_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_11_en",20301,],
["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",20294,],
-["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_2_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_2_en",20294,],
-["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_3_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_3_en",20294,],
-["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_4_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_4_en",20294,],
-["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_5_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_5_en",20294,],
-["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_6_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_6_en",20294,],
-["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_7_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_7_en",20294,],
-["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_8_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_8_en",20294,],
-["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_9_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_9_en",20294,],
+["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_1_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_1_en",20301,],
+["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_2_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_2_en",20301,],
+["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_3_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_3_en",20301,],
+["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_4_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_4_en",20301,],
+["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_5_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_5_en",20301,],
+["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_6_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_6_en",20301,],
+["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_7_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_7_en",20301,],
+["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_8_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_8_en",20301,],
+["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_9_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_9_en",20301,],
["libraries.designsystem.theme.components_OutlinedButtonLargeLowPadding_Buttons_en","",0,],
["libraries.designsystem.theme.components_OutlinedButtonLarge_Buttons_en","",0,],
["libraries.designsystem.theme.components_OutlinedButtonMediumLowPadding_Buttons_en","",0,],
["libraries.designsystem.theme.components_OutlinedButtonMedium_Buttons_en","",0,],
["libraries.designsystem.theme.components_OutlinedButtonSmall_Buttons_en","",0,],
-["libraries.mediaviewer.impl.local.pdf_PdfPagesErrorView_Day_0_en","libraries.mediaviewer.impl.local.pdf_PdfPagesErrorView_Night_0_en",20294,],
-["features.roomdetails.impl.rolesandpermissions.changeroles_PendingMemberRowWithLongName_Day_0_en","features.roomdetails.impl.rolesandpermissions.changeroles_PendingMemberRowWithLongName_Night_0_en",20294,],
-["libraries.permissions.api_PermissionsView_Day_0_en","libraries.permissions.api_PermissionsView_Night_0_en",20294,],
-["libraries.permissions.api_PermissionsView_Day_1_en","libraries.permissions.api_PermissionsView_Night_1_en",20294,],
-["libraries.permissions.api_PermissionsView_Day_2_en","libraries.permissions.api_PermissionsView_Night_2_en",20294,],
-["libraries.permissions.api_PermissionsView_Day_3_en","libraries.permissions.api_PermissionsView_Night_3_en",20294,],
+["libraries.mediaviewer.impl.local.pdf_PdfPagesErrorView_Day_0_en","libraries.mediaviewer.impl.local.pdf_PdfPagesErrorView_Night_0_en",20301,],
+["features.roomdetails.impl.rolesandpermissions.changeroles_PendingMemberRowWithLongName_Day_0_en","features.roomdetails.impl.rolesandpermissions.changeroles_PendingMemberRowWithLongName_Night_0_en",20301,],
+["libraries.permissions.api_PermissionsView_Day_0_en","libraries.permissions.api_PermissionsView_Night_0_en",20301,],
+["libraries.permissions.api_PermissionsView_Day_1_en","libraries.permissions.api_PermissionsView_Night_1_en",20301,],
+["libraries.permissions.api_PermissionsView_Day_2_en","libraries.permissions.api_PermissionsView_Night_2_en",20301,],
+["libraries.permissions.api_PermissionsView_Day_3_en","libraries.permissions.api_PermissionsView_Night_3_en",20301,],
["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",20294,],
-["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_1_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_1_en",20294,],
-["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_2_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_2_en",20294,],
-["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_3_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_3_en",20294,],
-["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_4_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_4_en",20294,],
-["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_5_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_5_en",20294,],
-["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_6_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_6_en",20294,],
-["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_7_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_7_en",20294,],
-["features.lockscreen.impl.unlock_PinUnlockView_Day_0_en","features.lockscreen.impl.unlock_PinUnlockView_Night_0_en",20294,],
-["features.lockscreen.impl.unlock_PinUnlockView_Day_1_en","features.lockscreen.impl.unlock_PinUnlockView_Night_1_en",20294,],
-["features.lockscreen.impl.unlock_PinUnlockView_Day_2_en","features.lockscreen.impl.unlock_PinUnlockView_Night_2_en",20294,],
-["features.lockscreen.impl.unlock_PinUnlockView_Day_3_en","features.lockscreen.impl.unlock_PinUnlockView_Night_3_en",20294,],
-["features.lockscreen.impl.unlock_PinUnlockView_Day_4_en","features.lockscreen.impl.unlock_PinUnlockView_Night_4_en",20294,],
-["features.lockscreen.impl.unlock_PinUnlockView_Day_5_en","features.lockscreen.impl.unlock_PinUnlockView_Night_5_en",20294,],
-["features.lockscreen.impl.unlock_PinUnlockView_Day_6_en","features.lockscreen.impl.unlock_PinUnlockView_Night_6_en",20294,],
-["features.lockscreen.impl.unlock_PinUnlockView_Day_7_en","features.lockscreen.impl.unlock_PinUnlockView_Night_7_en",20294,],
+["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_0_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_0_en",20301,],
+["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_1_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_1_en",20301,],
+["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_2_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_2_en",20301,],
+["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_3_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_3_en",20301,],
+["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_4_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_4_en",20301,],
+["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_5_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_5_en",20301,],
+["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_6_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_6_en",20301,],
+["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_7_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_7_en",20301,],
+["features.lockscreen.impl.unlock_PinUnlockView_Day_0_en","features.lockscreen.impl.unlock_PinUnlockView_Night_0_en",20301,],
+["features.lockscreen.impl.unlock_PinUnlockView_Day_1_en","features.lockscreen.impl.unlock_PinUnlockView_Night_1_en",20301,],
+["features.lockscreen.impl.unlock_PinUnlockView_Day_2_en","features.lockscreen.impl.unlock_PinUnlockView_Night_2_en",20301,],
+["features.lockscreen.impl.unlock_PinUnlockView_Day_3_en","features.lockscreen.impl.unlock_PinUnlockView_Night_3_en",20301,],
+["features.lockscreen.impl.unlock_PinUnlockView_Day_4_en","features.lockscreen.impl.unlock_PinUnlockView_Night_4_en",20301,],
+["features.lockscreen.impl.unlock_PinUnlockView_Day_5_en","features.lockscreen.impl.unlock_PinUnlockView_Night_5_en",20301,],
+["features.lockscreen.impl.unlock_PinUnlockView_Day_6_en","features.lockscreen.impl.unlock_PinUnlockView_Night_6_en",20301,],
+["features.lockscreen.impl.unlock_PinUnlockView_Day_7_en","features.lockscreen.impl.unlock_PinUnlockView_Night_7_en",20301,],
["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",20294,],
-["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_1_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_1_en",20294,],
-["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_2_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_2_en",20294,],
-["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_3_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_3_en",20294,],
-["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_4_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_4_en",20294,],
-["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_5_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_5_en",20294,],
-["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_6_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_6_en",20294,],
-["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_7_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_7_en",20294,],
-["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_8_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_8_en",20294,],
-["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_9_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_9_en",20294,],
-["features.messages.impl.pinned.list_PinnedMessagesListView_Day_0_en","features.messages.impl.pinned.list_PinnedMessagesListView_Night_0_en",20294,],
-["features.messages.impl.pinned.list_PinnedMessagesListView_Day_1_en","features.messages.impl.pinned.list_PinnedMessagesListView_Night_1_en",20294,],
-["features.messages.impl.pinned.list_PinnedMessagesListView_Day_2_en","features.messages.impl.pinned.list_PinnedMessagesListView_Night_2_en",20294,],
-["features.messages.impl.pinned.list_PinnedMessagesListView_Day_3_en","features.messages.impl.pinned.list_PinnedMessagesListView_Night_3_en",20294,],
+["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_10_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_10_en",20301,],
+["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_1_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_1_en",20301,],
+["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_2_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_2_en",20301,],
+["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_3_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_3_en",20301,],
+["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_4_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_4_en",20301,],
+["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_5_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_5_en",20301,],
+["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_6_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_6_en",20301,],
+["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_7_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_7_en",20301,],
+["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_8_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_8_en",20301,],
+["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_9_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_9_en",20301,],
+["features.messages.impl.pinned.list_PinnedMessagesListView_Day_0_en","features.messages.impl.pinned.list_PinnedMessagesListView_Night_0_en",20301,],
+["features.messages.impl.pinned.list_PinnedMessagesListView_Day_1_en","features.messages.impl.pinned.list_PinnedMessagesListView_Night_1_en",20301,],
+["features.messages.impl.pinned.list_PinnedMessagesListView_Day_2_en","features.messages.impl.pinned.list_PinnedMessagesListView_Night_2_en",20301,],
+["features.messages.impl.pinned.list_PinnedMessagesListView_Day_3_en","features.messages.impl.pinned.list_PinnedMessagesListView_Night_3_en",20301,],
["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",20294,],
-["features.poll.api.pollcontent_PollAnswerViewDisclosedSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewDisclosedSelected_Night_0_en",20294,],
-["features.poll.api.pollcontent_PollAnswerViewEndedSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewEndedSelected_Night_0_en",20294,],
-["features.poll.api.pollcontent_PollAnswerViewEndedWinnerNotSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewEndedWinnerNotSelected_Night_0_en",20294,],
-["features.poll.api.pollcontent_PollAnswerViewEndedWinnerSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewEndedWinnerSelected_Night_0_en",20294,],
+["features.poll.api.pollcontent_PollAnswerViewDisclosedNotSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewDisclosedNotSelected_Night_0_en",20301,],
+["features.poll.api.pollcontent_PollAnswerViewDisclosedSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewDisclosedSelected_Night_0_en",20301,],
+["features.poll.api.pollcontent_PollAnswerViewEndedSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewEndedSelected_Night_0_en",20301,],
+["features.poll.api.pollcontent_PollAnswerViewEndedWinnerNotSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewEndedWinnerNotSelected_Night_0_en",20301,],
+["features.poll.api.pollcontent_PollAnswerViewEndedWinnerSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewEndedWinnerSelected_Night_0_en",20301,],
["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",20294,],
-["features.poll.api.pollcontent_PollContentViewCreatorEnded_Day_0_en","features.poll.api.pollcontent_PollContentViewCreatorEnded_Night_0_en",20294,],
-["features.poll.api.pollcontent_PollContentViewCreator_Day_0_en","features.poll.api.pollcontent_PollContentViewCreator_Night_0_en",20294,],
-["features.poll.api.pollcontent_PollContentViewDisclosed_Day_0_en","features.poll.api.pollcontent_PollContentViewDisclosed_Night_0_en",20294,],
-["features.poll.api.pollcontent_PollContentViewEnded_Day_0_en","features.poll.api.pollcontent_PollContentViewEnded_Night_0_en",20294,],
-["features.poll.api.pollcontent_PollContentViewUndisclosed_Day_0_en","features.poll.api.pollcontent_PollContentViewUndisclosed_Night_0_en",20294,],
-["features.poll.impl.history_PollHistoryView_Day_0_en","features.poll.impl.history_PollHistoryView_Night_0_en",20294,],
-["features.poll.impl.history_PollHistoryView_Day_1_en","features.poll.impl.history_PollHistoryView_Night_1_en",20294,],
-["features.poll.impl.history_PollHistoryView_Day_2_en","features.poll.impl.history_PollHistoryView_Night_2_en",20294,],
-["features.poll.impl.history_PollHistoryView_Day_3_en","features.poll.impl.history_PollHistoryView_Night_3_en",20294,],
-["features.poll.impl.history_PollHistoryView_Day_4_en","features.poll.impl.history_PollHistoryView_Night_4_en",20294,],
+["features.poll.api.pollcontent_PollContentViewCreatorEditable_Day_0_en","features.poll.api.pollcontent_PollContentViewCreatorEditable_Night_0_en",20301,],
+["features.poll.api.pollcontent_PollContentViewCreatorEnded_Day_0_en","features.poll.api.pollcontent_PollContentViewCreatorEnded_Night_0_en",20301,],
+["features.poll.api.pollcontent_PollContentViewCreator_Day_0_en","features.poll.api.pollcontent_PollContentViewCreator_Night_0_en",20301,],
+["features.poll.api.pollcontent_PollContentViewDisclosed_Day_0_en","features.poll.api.pollcontent_PollContentViewDisclosed_Night_0_en",20301,],
+["features.poll.api.pollcontent_PollContentViewEnded_Day_0_en","features.poll.api.pollcontent_PollContentViewEnded_Night_0_en",20301,],
+["features.poll.api.pollcontent_PollContentViewUndisclosed_Day_0_en","features.poll.api.pollcontent_PollContentViewUndisclosed_Night_0_en",20301,],
+["features.poll.impl.history_PollHistoryView_Day_0_en","features.poll.impl.history_PollHistoryView_Night_0_en",20301,],
+["features.poll.impl.history_PollHistoryView_Day_1_en","features.poll.impl.history_PollHistoryView_Night_1_en",20301,],
+["features.poll.impl.history_PollHistoryView_Day_2_en","features.poll.impl.history_PollHistoryView_Night_2_en",20301,],
+["features.poll.impl.history_PollHistoryView_Day_3_en","features.poll.impl.history_PollHistoryView_Night_3_en",20301,],
+["features.poll.impl.history_PollHistoryView_Day_4_en","features.poll.impl.history_PollHistoryView_Night_4_en",20301,],
["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,],
@@ -828,206 +829,207 @@ 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","",20294,],
-["features.preferences.impl.root_PreferencesRootViewDark_1_en","",20294,],
-["features.preferences.impl.root_PreferencesRootViewLight_0_en","",20294,],
-["features.preferences.impl.root_PreferencesRootViewLight_1_en","",20294,],
+["features.preferences.impl.root_PreferencesRootViewDark_0_en","",20301,],
+["features.preferences.impl.root_PreferencesRootViewDark_1_en","",20301,],
+["features.preferences.impl.root_PreferencesRootViewLight_0_en","",20301,],
+["features.preferences.impl.root_PreferencesRootViewLight_1_en","",20301,],
["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","",20294,],
-["libraries.designsystem.components_ProgressDialog_Day_0_en","libraries.designsystem.components_ProgressDialog_Night_0_en",20294,],
-["features.messages.impl.timeline.protection_ProtectedView_Day_0_en","features.messages.impl.timeline.protection_ProtectedView_Night_0_en",20294,],
-["features.messages.impl.timeline.protection_ProtectedView_Day_1_en","features.messages.impl.timeline.protection_ProtectedView_Night_1_en",20294,],
-["features.messages.impl.timeline.protection_ProtectedView_Day_2_en","features.messages.impl.timeline.protection_ProtectedView_Night_2_en",20294,],
-["features.messages.impl.timeline.protection_ProtectedView_Day_3_en","features.messages.impl.timeline.protection_ProtectedView_Night_3_en",20294,],
-["libraries.troubleshoot.impl.history_PushHistoryView_Day_0_en","libraries.troubleshoot.impl.history_PushHistoryView_Night_0_en",20294,],
-["libraries.troubleshoot.impl.history_PushHistoryView_Day_1_en","libraries.troubleshoot.impl.history_PushHistoryView_Night_1_en",20294,],
-["libraries.troubleshoot.impl.history_PushHistoryView_Day_2_en","libraries.troubleshoot.impl.history_PushHistoryView_Night_2_en",20294,],
-["features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_0_en","features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Night_0_en",20294,],
-["features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_1_en","features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Night_1_en",20294,],
-["features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_2_en","features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Night_2_en",20294,],
-["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_0_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_0_en",20294,],
-["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_1_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_1_en",20294,],
-["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_2_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_2_en",20294,],
-["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_3_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_3_en",20294,],
-["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_4_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_4_en",20294,],
-["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_5_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_5_en",20294,],
-["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_6_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_6_en",20294,],
-["features.login.impl.screens.qrcode.intro_QrCodeIntroView_Day_0_en","features.login.impl.screens.qrcode.intro_QrCodeIntroView_Night_0_en",20294,],
-["features.login.impl.screens.qrcode.intro_QrCodeIntroView_Day_1_en","features.login.impl.screens.qrcode.intro_QrCodeIntroView_Night_1_en",20294,],
-["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_0_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_0_en",20294,],
-["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_1_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_1_en",20294,],
-["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_2_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_2_en",20294,],
-["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_3_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_3_en",20294,],
-["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_4_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_4_en",20294,],
+["libraries.designsystem.components_ProgressDialogContent_Dialogs_en","",20301,],
+["libraries.designsystem.components_ProgressDialog_Day_0_en","libraries.designsystem.components_ProgressDialog_Night_0_en",20301,],
+["features.messages.impl.timeline.protection_ProtectedView_Day_0_en","features.messages.impl.timeline.protection_ProtectedView_Night_0_en",20301,],
+["features.messages.impl.timeline.protection_ProtectedView_Day_1_en","features.messages.impl.timeline.protection_ProtectedView_Night_1_en",20301,],
+["features.messages.impl.timeline.protection_ProtectedView_Day_2_en","features.messages.impl.timeline.protection_ProtectedView_Night_2_en",20301,],
+["features.messages.impl.timeline.protection_ProtectedView_Day_3_en","features.messages.impl.timeline.protection_ProtectedView_Night_3_en",20301,],
+["libraries.troubleshoot.impl.history_PushHistoryView_Day_0_en","libraries.troubleshoot.impl.history_PushHistoryView_Night_0_en",20301,],
+["libraries.troubleshoot.impl.history_PushHistoryView_Day_1_en","libraries.troubleshoot.impl.history_PushHistoryView_Night_1_en",20301,],
+["libraries.troubleshoot.impl.history_PushHistoryView_Day_2_en","libraries.troubleshoot.impl.history_PushHistoryView_Night_2_en",20301,],
+["features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_0_en","features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Night_0_en",20301,],
+["features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_1_en","features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Night_1_en",20301,],
+["features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_2_en","features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Night_2_en",20301,],
+["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_0_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_0_en",20301,],
+["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_1_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_1_en",20301,],
+["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_2_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_2_en",20301,],
+["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_3_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_3_en",20301,],
+["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_4_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_4_en",20301,],
+["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_5_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_5_en",20301,],
+["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_6_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_6_en",20301,],
+["features.login.impl.screens.qrcode.intro_QrCodeIntroView_Day_0_en","features.login.impl.screens.qrcode.intro_QrCodeIntroView_Night_0_en",20301,],
+["features.login.impl.screens.qrcode.intro_QrCodeIntroView_Day_1_en","features.login.impl.screens.qrcode.intro_QrCodeIntroView_Night_1_en",20301,],
+["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_0_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_0_en",20301,],
+["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_1_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_1_en",20301,],
+["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_2_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_2_en",20301,],
+["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_3_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_3_en",20301,],
+["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_4_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_4_en",20301,],
["libraries.designsystem.theme.components_RadioButton_Toggles_en","",0,],
-["features.rageshake.api.detection_RageshakeDialogContent_Day_0_en","features.rageshake.api.detection_RageshakeDialogContent_Night_0_en",20294,],
-["features.rageshake.api.preferences_RageshakePreferencesView_Day_0_en","features.rageshake.api.preferences_RageshakePreferencesView_Night_0_en",20294,],
+["features.rageshake.api.detection_RageshakeDialogContent_Day_0_en","features.rageshake.api.detection_RageshakeDialogContent_Night_0_en",20301,],
+["features.rageshake.api.preferences_RageshakePreferencesView_Day_0_en","features.rageshake.api.preferences_RageshakePreferencesView_Night_0_en",20301,],
["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",20294,],
-["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_1_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_1_en",20294,],
-["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_2_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_2_en",20294,],
-["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_3_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_3_en",20294,],
-["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_4_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_4_en",20294,],
-["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_5_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_5_en",20294,],
-["features.securebackup.impl.setup.views_RecoveryKeyView_Day_0_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_0_en",20294,],
-["features.securebackup.impl.setup.views_RecoveryKeyView_Day_10_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_10_en",20294,],
-["features.securebackup.impl.setup.views_RecoveryKeyView_Day_11_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_11_en",20294,],
-["features.securebackup.impl.setup.views_RecoveryKeyView_Day_12_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_12_en",20294,],
-["features.securebackup.impl.setup.views_RecoveryKeyView_Day_13_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_13_en",20294,],
-["features.securebackup.impl.setup.views_RecoveryKeyView_Day_1_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_1_en",20294,],
-["features.securebackup.impl.setup.views_RecoveryKeyView_Day_2_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_2_en",20294,],
-["features.securebackup.impl.setup.views_RecoveryKeyView_Day_3_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_3_en",20294,],
-["features.securebackup.impl.setup.views_RecoveryKeyView_Day_4_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_4_en",20294,],
-["features.securebackup.impl.setup.views_RecoveryKeyView_Day_5_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_5_en",20294,],
-["features.securebackup.impl.setup.views_RecoveryKeyView_Day_6_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_6_en",20294,],
-["features.securebackup.impl.setup.views_RecoveryKeyView_Day_7_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_7_en",20294,],
-["features.securebackup.impl.setup.views_RecoveryKeyView_Day_8_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_8_en",20294,],
-["features.securebackup.impl.setup.views_RecoveryKeyView_Day_9_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_9_en",20294,],
+["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_0_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_0_en",20301,],
+["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_1_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_1_en",20301,],
+["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_2_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_2_en",20301,],
+["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_3_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_3_en",20301,],
+["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_4_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_4_en",20301,],
+["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_5_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_5_en",20301,],
+["features.securebackup.impl.setup.views_RecoveryKeyView_Day_0_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_0_en",20301,],
+["features.securebackup.impl.setup.views_RecoveryKeyView_Day_10_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_10_en",20301,],
+["features.securebackup.impl.setup.views_RecoveryKeyView_Day_11_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_11_en",20301,],
+["features.securebackup.impl.setup.views_RecoveryKeyView_Day_12_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_12_en",20301,],
+["features.securebackup.impl.setup.views_RecoveryKeyView_Day_13_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_13_en",20301,],
+["features.securebackup.impl.setup.views_RecoveryKeyView_Day_1_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_1_en",20301,],
+["features.securebackup.impl.setup.views_RecoveryKeyView_Day_2_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_2_en",20301,],
+["features.securebackup.impl.setup.views_RecoveryKeyView_Day_3_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_3_en",20301,],
+["features.securebackup.impl.setup.views_RecoveryKeyView_Day_4_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_4_en",20301,],
+["features.securebackup.impl.setup.views_RecoveryKeyView_Day_5_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_5_en",20301,],
+["features.securebackup.impl.setup.views_RecoveryKeyView_Day_6_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_6_en",20301,],
+["features.securebackup.impl.setup.views_RecoveryKeyView_Day_7_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_7_en",20301,],
+["features.securebackup.impl.setup.views_RecoveryKeyView_Day_8_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_8_en",20301,],
+["features.securebackup.impl.setup.views_RecoveryKeyView_Day_9_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_9_en",20301,],
["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",20294,],
-["features.messages.impl.report_ReportMessageView_Day_1_en","features.messages.impl.report_ReportMessageView_Night_1_en",20294,],
-["features.messages.impl.report_ReportMessageView_Day_2_en","features.messages.impl.report_ReportMessageView_Night_2_en",20294,],
-["features.messages.impl.report_ReportMessageView_Day_3_en","features.messages.impl.report_ReportMessageView_Night_3_en",20294,],
-["features.messages.impl.report_ReportMessageView_Day_4_en","features.messages.impl.report_ReportMessageView_Night_4_en",20294,],
-["features.messages.impl.report_ReportMessageView_Day_5_en","features.messages.impl.report_ReportMessageView_Night_5_en",20294,],
-["features.reportroom.impl_ReportRoomView_Day_0_en","features.reportroom.impl_ReportRoomView_Night_0_en",20294,],
-["features.reportroom.impl_ReportRoomView_Day_1_en","features.reportroom.impl_ReportRoomView_Night_1_en",20294,],
-["features.reportroom.impl_ReportRoomView_Day_2_en","features.reportroom.impl_ReportRoomView_Night_2_en",20294,],
-["features.reportroom.impl_ReportRoomView_Day_3_en","features.reportroom.impl_ReportRoomView_Night_3_en",20294,],
-["features.reportroom.impl_ReportRoomView_Day_4_en","features.reportroom.impl_ReportRoomView_Night_4_en",20294,],
-["features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_0_en","features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_0_en",20294,],
-["features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_1_en","features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_1_en",20294,],
-["features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_2_en","features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_2_en",20294,],
-["features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_3_en","features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_3_en",20294,],
-["features.securebackup.impl.reset.root_ResetIdentityRootView_Day_0_en","features.securebackup.impl.reset.root_ResetIdentityRootView_Night_0_en",20294,],
-["features.securebackup.impl.reset.root_ResetIdentityRootView_Day_1_en","features.securebackup.impl.reset.root_ResetIdentityRootView_Night_1_en",20294,],
+["features.messages.impl.report_ReportMessageView_Day_0_en","features.messages.impl.report_ReportMessageView_Night_0_en",20301,],
+["features.messages.impl.report_ReportMessageView_Day_1_en","features.messages.impl.report_ReportMessageView_Night_1_en",20301,],
+["features.messages.impl.report_ReportMessageView_Day_2_en","features.messages.impl.report_ReportMessageView_Night_2_en",20301,],
+["features.messages.impl.report_ReportMessageView_Day_3_en","features.messages.impl.report_ReportMessageView_Night_3_en",20301,],
+["features.messages.impl.report_ReportMessageView_Day_4_en","features.messages.impl.report_ReportMessageView_Night_4_en",20301,],
+["features.messages.impl.report_ReportMessageView_Day_5_en","features.messages.impl.report_ReportMessageView_Night_5_en",20301,],
+["features.reportroom.impl_ReportRoomView_Day_0_en","features.reportroom.impl_ReportRoomView_Night_0_en",20301,],
+["features.reportroom.impl_ReportRoomView_Day_1_en","features.reportroom.impl_ReportRoomView_Night_1_en",20301,],
+["features.reportroom.impl_ReportRoomView_Day_2_en","features.reportroom.impl_ReportRoomView_Night_2_en",20301,],
+["features.reportroom.impl_ReportRoomView_Day_3_en","features.reportroom.impl_ReportRoomView_Night_3_en",20301,],
+["features.reportroom.impl_ReportRoomView_Day_4_en","features.reportroom.impl_ReportRoomView_Night_4_en",20301,],
+["features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_0_en","features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_0_en",20301,],
+["features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_1_en","features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_1_en",20301,],
+["features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_2_en","features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_2_en",20301,],
+["features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_3_en","features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_3_en",20301,],
+["features.securebackup.impl.reset.root_ResetIdentityRootView_Day_0_en","features.securebackup.impl.reset.root_ResetIdentityRootView_Night_0_en",20301,],
+["features.securebackup.impl.reset.root_ResetIdentityRootView_Day_1_en","features.securebackup.impl.reset.root_ResetIdentityRootView_Night_1_en",20301,],
["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",20294,],
-["features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Day_2_en","features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Night_2_en",20294,],
-["libraries.designsystem.components.dialogs_RetryDialogContent_Dialogs_en","",20294,],
-["libraries.designsystem.components.dialogs_RetryDialog_Day_0_en","libraries.designsystem.components.dialogs_RetryDialog_Night_0_en",20294,],
-["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_0_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_0_en",20294,],
-["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_1_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_1_en",20294,],
-["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_2_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_2_en",20294,],
-["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_3_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_3_en",20294,],
-["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_4_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_4_en",20294,],
-["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_5_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_5_en",20294,],
-["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_6_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_6_en",20294,],
-["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_7_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_7_en",20294,],
+["features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Day_1_en","features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Night_1_en",20301,],
+["features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Day_2_en","features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Night_2_en",20301,],
+["libraries.designsystem.components.dialogs_RetryDialogContent_Dialogs_en","",20301,],
+["libraries.designsystem.components.dialogs_RetryDialog_Day_0_en","libraries.designsystem.components.dialogs_RetryDialog_Night_0_en",20301,],
+["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_0_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_0_en",20301,],
+["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_1_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_1_en",20301,],
+["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_2_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_2_en",20301,],
+["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_3_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_3_en",20301,],
+["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_4_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_4_en",20301,],
+["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_5_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_5_en",20301,],
+["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_6_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_6_en",20301,],
+["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_7_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_7_en",20301,],
+["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_8_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_8_en",20304,],
["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",20294,],
-["features.roomaliasresolver.impl_RoomAliasResolverView_Day_2_en","features.roomaliasresolver.impl_RoomAliasResolverView_Night_2_en",20294,],
-["features.roomdetails.impl_RoomDetailsDark_0_en","",20294,],
-["features.roomdetails.impl_RoomDetailsDark_10_en","",20294,],
-["features.roomdetails.impl_RoomDetailsDark_11_en","",20294,],
-["features.roomdetails.impl_RoomDetailsDark_12_en","",20294,],
-["features.roomdetails.impl_RoomDetailsDark_13_en","",20294,],
-["features.roomdetails.impl_RoomDetailsDark_14_en","",20294,],
-["features.roomdetails.impl_RoomDetailsDark_15_en","",20294,],
-["features.roomdetails.impl_RoomDetailsDark_16_en","",20294,],
-["features.roomdetails.impl_RoomDetailsDark_17_en","",20294,],
-["features.roomdetails.impl_RoomDetailsDark_18_en","",20294,],
-["features.roomdetails.impl_RoomDetailsDark_19_en","",20294,],
-["features.roomdetails.impl_RoomDetailsDark_1_en","",20294,],
-["features.roomdetails.impl_RoomDetailsDark_2_en","",20294,],
-["features.roomdetails.impl_RoomDetailsDark_3_en","",20294,],
-["features.roomdetails.impl_RoomDetailsDark_4_en","",20294,],
-["features.roomdetails.impl_RoomDetailsDark_5_en","",20294,],
-["features.roomdetails.impl_RoomDetailsDark_6_en","",20294,],
-["features.roomdetails.impl_RoomDetailsDark_7_en","",20294,],
-["features.roomdetails.impl_RoomDetailsDark_8_en","",20294,],
-["features.roomdetails.impl_RoomDetailsDark_9_en","",20294,],
-["features.roomdetails.impl.edit_RoomDetailsEditView_Day_0_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_0_en",20294,],
-["features.roomdetails.impl.edit_RoomDetailsEditView_Day_1_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_1_en",20294,],
-["features.roomdetails.impl.edit_RoomDetailsEditView_Day_2_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_2_en",20294,],
-["features.roomdetails.impl.edit_RoomDetailsEditView_Day_3_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_3_en",20294,],
-["features.roomdetails.impl.edit_RoomDetailsEditView_Day_4_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_4_en",20294,],
-["features.roomdetails.impl.edit_RoomDetailsEditView_Day_5_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_5_en",20294,],
-["features.roomdetails.impl.edit_RoomDetailsEditView_Day_6_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_6_en",20294,],
-["features.roomdetails.impl.edit_RoomDetailsEditView_Day_7_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_7_en",20294,],
-["features.roomdetails.impl_RoomDetails_0_en","",20294,],
-["features.roomdetails.impl_RoomDetails_10_en","",20294,],
-["features.roomdetails.impl_RoomDetails_11_en","",20294,],
-["features.roomdetails.impl_RoomDetails_12_en","",20294,],
-["features.roomdetails.impl_RoomDetails_13_en","",20294,],
-["features.roomdetails.impl_RoomDetails_14_en","",20294,],
-["features.roomdetails.impl_RoomDetails_15_en","",20294,],
-["features.roomdetails.impl_RoomDetails_16_en","",20294,],
-["features.roomdetails.impl_RoomDetails_17_en","",20294,],
-["features.roomdetails.impl_RoomDetails_18_en","",20294,],
-["features.roomdetails.impl_RoomDetails_19_en","",20294,],
-["features.roomdetails.impl_RoomDetails_1_en","",20294,],
-["features.roomdetails.impl_RoomDetails_2_en","",20294,],
-["features.roomdetails.impl_RoomDetails_3_en","",20294,],
-["features.roomdetails.impl_RoomDetails_4_en","",20294,],
-["features.roomdetails.impl_RoomDetails_5_en","",20294,],
-["features.roomdetails.impl_RoomDetails_6_en","",20294,],
-["features.roomdetails.impl_RoomDetails_7_en","",20294,],
-["features.roomdetails.impl_RoomDetails_8_en","",20294,],
-["features.roomdetails.impl_RoomDetails_9_en","",20294,],
-["features.roomdirectory.impl.root_RoomDirectoryView_Day_0_en","features.roomdirectory.impl.root_RoomDirectoryView_Night_0_en",20294,],
-["features.roomdirectory.impl.root_RoomDirectoryView_Day_1_en","features.roomdirectory.impl.root_RoomDirectoryView_Night_1_en",20294,],
-["features.roomdirectory.impl.root_RoomDirectoryView_Day_2_en","features.roomdirectory.impl.root_RoomDirectoryView_Night_2_en",20294,],
-["features.roomdetails.impl.invite_RoomInviteMembersView_Day_0_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_0_en",20294,],
-["features.roomdetails.impl.invite_RoomInviteMembersView_Day_1_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_1_en",20294,],
-["features.roomdetails.impl.invite_RoomInviteMembersView_Day_2_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_2_en",20294,],
-["features.roomdetails.impl.invite_RoomInviteMembersView_Day_3_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_3_en",20294,],
-["features.roomdetails.impl.invite_RoomInviteMembersView_Day_4_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_4_en",20294,],
-["features.roomdetails.impl.invite_RoomInviteMembersView_Day_5_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_5_en",20294,],
-["features.roomdetails.impl.invite_RoomInviteMembersView_Day_6_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_6_en",20294,],
-["features.roomdetails.impl.invite_RoomInviteMembersView_Day_7_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_7_en",20294,],
-["features.home.impl.components_RoomListContentView_Day_0_en","features.home.impl.components_RoomListContentView_Night_0_en",20294,],
-["features.home.impl.components_RoomListContentView_Day_1_en","features.home.impl.components_RoomListContentView_Night_1_en",20294,],
+["features.roomaliasresolver.impl_RoomAliasResolverView_Day_1_en","features.roomaliasresolver.impl_RoomAliasResolverView_Night_1_en",20301,],
+["features.roomaliasresolver.impl_RoomAliasResolverView_Day_2_en","features.roomaliasresolver.impl_RoomAliasResolverView_Night_2_en",20301,],
+["features.roomdetails.impl_RoomDetailsDark_0_en","",20301,],
+["features.roomdetails.impl_RoomDetailsDark_10_en","",20301,],
+["features.roomdetails.impl_RoomDetailsDark_11_en","",20301,],
+["features.roomdetails.impl_RoomDetailsDark_12_en","",20301,],
+["features.roomdetails.impl_RoomDetailsDark_13_en","",20301,],
+["features.roomdetails.impl_RoomDetailsDark_14_en","",20301,],
+["features.roomdetails.impl_RoomDetailsDark_15_en","",20301,],
+["features.roomdetails.impl_RoomDetailsDark_16_en","",20301,],
+["features.roomdetails.impl_RoomDetailsDark_17_en","",20301,],
+["features.roomdetails.impl_RoomDetailsDark_18_en","",20301,],
+["features.roomdetails.impl_RoomDetailsDark_19_en","",20301,],
+["features.roomdetails.impl_RoomDetailsDark_1_en","",20301,],
+["features.roomdetails.impl_RoomDetailsDark_2_en","",20301,],
+["features.roomdetails.impl_RoomDetailsDark_3_en","",20301,],
+["features.roomdetails.impl_RoomDetailsDark_4_en","",20301,],
+["features.roomdetails.impl_RoomDetailsDark_5_en","",20301,],
+["features.roomdetails.impl_RoomDetailsDark_6_en","",20301,],
+["features.roomdetails.impl_RoomDetailsDark_7_en","",20301,],
+["features.roomdetails.impl_RoomDetailsDark_8_en","",20301,],
+["features.roomdetails.impl_RoomDetailsDark_9_en","",20301,],
+["features.roomdetails.impl.edit_RoomDetailsEditView_Day_0_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_0_en",20301,],
+["features.roomdetails.impl.edit_RoomDetailsEditView_Day_1_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_1_en",20301,],
+["features.roomdetails.impl.edit_RoomDetailsEditView_Day_2_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_2_en",20301,],
+["features.roomdetails.impl.edit_RoomDetailsEditView_Day_3_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_3_en",20301,],
+["features.roomdetails.impl.edit_RoomDetailsEditView_Day_4_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_4_en",20301,],
+["features.roomdetails.impl.edit_RoomDetailsEditView_Day_5_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_5_en",20301,],
+["features.roomdetails.impl.edit_RoomDetailsEditView_Day_6_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_6_en",20301,],
+["features.roomdetails.impl.edit_RoomDetailsEditView_Day_7_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_7_en",20301,],
+["features.roomdetails.impl_RoomDetails_0_en","",20301,],
+["features.roomdetails.impl_RoomDetails_10_en","",20301,],
+["features.roomdetails.impl_RoomDetails_11_en","",20301,],
+["features.roomdetails.impl_RoomDetails_12_en","",20301,],
+["features.roomdetails.impl_RoomDetails_13_en","",20301,],
+["features.roomdetails.impl_RoomDetails_14_en","",20301,],
+["features.roomdetails.impl_RoomDetails_15_en","",20301,],
+["features.roomdetails.impl_RoomDetails_16_en","",20301,],
+["features.roomdetails.impl_RoomDetails_17_en","",20301,],
+["features.roomdetails.impl_RoomDetails_18_en","",20301,],
+["features.roomdetails.impl_RoomDetails_19_en","",20301,],
+["features.roomdetails.impl_RoomDetails_1_en","",20301,],
+["features.roomdetails.impl_RoomDetails_2_en","",20301,],
+["features.roomdetails.impl_RoomDetails_3_en","",20301,],
+["features.roomdetails.impl_RoomDetails_4_en","",20301,],
+["features.roomdetails.impl_RoomDetails_5_en","",20301,],
+["features.roomdetails.impl_RoomDetails_6_en","",20301,],
+["features.roomdetails.impl_RoomDetails_7_en","",20301,],
+["features.roomdetails.impl_RoomDetails_8_en","",20301,],
+["features.roomdetails.impl_RoomDetails_9_en","",20301,],
+["features.roomdirectory.impl.root_RoomDirectoryView_Day_0_en","features.roomdirectory.impl.root_RoomDirectoryView_Night_0_en",20301,],
+["features.roomdirectory.impl.root_RoomDirectoryView_Day_1_en","features.roomdirectory.impl.root_RoomDirectoryView_Night_1_en",20301,],
+["features.roomdirectory.impl.root_RoomDirectoryView_Day_2_en","features.roomdirectory.impl.root_RoomDirectoryView_Night_2_en",20301,],
+["features.roomdetails.impl.invite_RoomInviteMembersView_Day_0_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_0_en",20301,],
+["features.roomdetails.impl.invite_RoomInviteMembersView_Day_1_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_1_en",20301,],
+["features.roomdetails.impl.invite_RoomInviteMembersView_Day_2_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_2_en",20301,],
+["features.roomdetails.impl.invite_RoomInviteMembersView_Day_3_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_3_en",20301,],
+["features.roomdetails.impl.invite_RoomInviteMembersView_Day_4_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_4_en",20301,],
+["features.roomdetails.impl.invite_RoomInviteMembersView_Day_5_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_5_en",20301,],
+["features.roomdetails.impl.invite_RoomInviteMembersView_Day_6_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_6_en",20301,],
+["features.roomdetails.impl.invite_RoomInviteMembersView_Day_7_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_7_en",20301,],
+["features.home.impl.components_RoomListContentView_Day_0_en","features.home.impl.components_RoomListContentView_Night_0_en",20301,],
+["features.home.impl.components_RoomListContentView_Day_1_en","features.home.impl.components_RoomListContentView_Night_1_en",20301,],
["features.home.impl.components_RoomListContentView_Day_2_en","features.home.impl.components_RoomListContentView_Night_2_en",0,],
-["features.home.impl.components_RoomListContentView_Day_3_en","features.home.impl.components_RoomListContentView_Night_3_en",20294,],
-["features.home.impl.components_RoomListContentView_Day_4_en","features.home.impl.components_RoomListContentView_Night_4_en",20294,],
-["features.home.impl.roomlist_RoomListDeclineInviteMenuContent_Day_0_en","features.home.impl.roomlist_RoomListDeclineInviteMenuContent_Night_0_en",20294,],
-["features.home.impl.filters_RoomListFiltersView_Day_0_en","features.home.impl.filters_RoomListFiltersView_Night_0_en",20294,],
-["features.home.impl.filters_RoomListFiltersView_Day_1_en","features.home.impl.filters_RoomListFiltersView_Night_1_en",20294,],
-["features.home.impl.roomlist_RoomListModalBottomSheetContent_Day_0_en","features.home.impl.roomlist_RoomListModalBottomSheetContent_Night_0_en",20294,],
-["features.home.impl.roomlist_RoomListModalBottomSheetContent_Day_1_en","features.home.impl.roomlist_RoomListModalBottomSheetContent_Night_1_en",20294,],
-["features.home.impl.roomlist_RoomListModalBottomSheetContent_Day_2_en","features.home.impl.roomlist_RoomListModalBottomSheetContent_Night_2_en",20294,],
+["features.home.impl.components_RoomListContentView_Day_3_en","features.home.impl.components_RoomListContentView_Night_3_en",20301,],
+["features.home.impl.components_RoomListContentView_Day_4_en","features.home.impl.components_RoomListContentView_Night_4_en",20301,],
+["features.home.impl.roomlist_RoomListDeclineInviteMenuContent_Day_0_en","features.home.impl.roomlist_RoomListDeclineInviteMenuContent_Night_0_en",20301,],
+["features.home.impl.filters_RoomListFiltersView_Day_0_en","features.home.impl.filters_RoomListFiltersView_Night_0_en",20301,],
+["features.home.impl.filters_RoomListFiltersView_Day_1_en","features.home.impl.filters_RoomListFiltersView_Night_1_en",20301,],
+["features.home.impl.roomlist_RoomListModalBottomSheetContent_Day_0_en","features.home.impl.roomlist_RoomListModalBottomSheetContent_Night_0_en",20301,],
+["features.home.impl.roomlist_RoomListModalBottomSheetContent_Day_1_en","features.home.impl.roomlist_RoomListModalBottomSheetContent_Night_1_en",20301,],
+["features.home.impl.roomlist_RoomListModalBottomSheetContent_Day_2_en","features.home.impl.roomlist_RoomListModalBottomSheetContent_Night_2_en",20301,],
["features.home.impl.search_RoomListSearchContent_Day_0_en","features.home.impl.search_RoomListSearchContent_Night_0_en",0,],
-["features.home.impl.search_RoomListSearchContent_Day_1_en","features.home.impl.search_RoomListSearchContent_Night_1_en",20294,],
-["features.roomdetails.impl.members_RoomMemberListViewBanned_Day_0_en","features.roomdetails.impl.members_RoomMemberListViewBanned_Night_0_en",20294,],
-["features.roomdetails.impl.members_RoomMemberListViewBanned_Day_1_en","features.roomdetails.impl.members_RoomMemberListViewBanned_Night_1_en",20294,],
-["features.roomdetails.impl.members_RoomMemberListViewBanned_Day_2_en","features.roomdetails.impl.members_RoomMemberListViewBanned_Night_2_en",20294,],
-["features.roomdetails.impl.members_RoomMemberListView_Day_0_en","features.roomdetails.impl.members_RoomMemberListView_Night_0_en",20294,],
-["features.roomdetails.impl.members_RoomMemberListView_Day_1_en","features.roomdetails.impl.members_RoomMemberListView_Night_1_en",20294,],
-["features.roomdetails.impl.members_RoomMemberListView_Day_2_en","features.roomdetails.impl.members_RoomMemberListView_Night_2_en",20294,],
-["features.roomdetails.impl.members_RoomMemberListView_Day_3_en","features.roomdetails.impl.members_RoomMemberListView_Night_3_en",20294,],
-["features.roomdetails.impl.members_RoomMemberListView_Day_4_en","features.roomdetails.impl.members_RoomMemberListView_Night_4_en",20294,],
-["features.roomdetails.impl.members_RoomMemberListView_Day_5_en","features.roomdetails.impl.members_RoomMemberListView_Night_5_en",20294,],
+["features.home.impl.search_RoomListSearchContent_Day_1_en","features.home.impl.search_RoomListSearchContent_Night_1_en",20301,],
+["features.roomdetails.impl.members_RoomMemberListViewBanned_Day_0_en","features.roomdetails.impl.members_RoomMemberListViewBanned_Night_0_en",20301,],
+["features.roomdetails.impl.members_RoomMemberListViewBanned_Day_1_en","features.roomdetails.impl.members_RoomMemberListViewBanned_Night_1_en",20301,],
+["features.roomdetails.impl.members_RoomMemberListViewBanned_Day_2_en","features.roomdetails.impl.members_RoomMemberListViewBanned_Night_2_en",20301,],
+["features.roomdetails.impl.members_RoomMemberListView_Day_0_en","features.roomdetails.impl.members_RoomMemberListView_Night_0_en",20301,],
+["features.roomdetails.impl.members_RoomMemberListView_Day_1_en","features.roomdetails.impl.members_RoomMemberListView_Night_1_en",20301,],
+["features.roomdetails.impl.members_RoomMemberListView_Day_2_en","features.roomdetails.impl.members_RoomMemberListView_Night_2_en",20301,],
+["features.roomdetails.impl.members_RoomMemberListView_Day_3_en","features.roomdetails.impl.members_RoomMemberListView_Night_3_en",20301,],
+["features.roomdetails.impl.members_RoomMemberListView_Day_4_en","features.roomdetails.impl.members_RoomMemberListView_Night_4_en",20301,],
+["features.roomdetails.impl.members_RoomMemberListView_Day_5_en","features.roomdetails.impl.members_RoomMemberListView_Night_5_en",20301,],
["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",20294,],
-["features.roomdetails.impl.members_RoomMemberListView_Day_8_en","features.roomdetails.impl.members_RoomMemberListView_Night_8_en",20294,],
-["features.roomdetails.impl.members_RoomMemberListView_Day_9_en","features.roomdetails.impl.members_RoomMemberListView_Night_9_en",20294,],
-["features.roommembermoderation.impl_RoomMemberModerationView_Day_0_en","features.roommembermoderation.impl_RoomMemberModerationView_Night_0_en",20294,],
-["features.roommembermoderation.impl_RoomMemberModerationView_Day_1_en","features.roommembermoderation.impl_RoomMemberModerationView_Night_1_en",20294,],
-["features.roommembermoderation.impl_RoomMemberModerationView_Day_2_en","features.roommembermoderation.impl_RoomMemberModerationView_Night_2_en",20294,],
-["features.roommembermoderation.impl_RoomMemberModerationView_Day_3_en","features.roommembermoderation.impl_RoomMemberModerationView_Night_3_en",20294,],
-["features.roommembermoderation.impl_RoomMemberModerationView_Day_4_en","features.roommembermoderation.impl_RoomMemberModerationView_Night_4_en",20294,],
-["features.roommembermoderation.impl_RoomMemberModerationView_Day_5_en","features.roommembermoderation.impl_RoomMemberModerationView_Night_5_en",20294,],
-["features.roommembermoderation.impl_RoomMemberModerationView_Day_6_en","features.roommembermoderation.impl_RoomMemberModerationView_Night_6_en",20294,],
-["features.roommembermoderation.impl_RoomMemberModerationView_Day_7_en","features.roommembermoderation.impl_RoomMemberModerationView_Night_7_en",20294,],
+["features.roomdetails.impl.members_RoomMemberListView_Day_7_en","features.roomdetails.impl.members_RoomMemberListView_Night_7_en",20301,],
+["features.roomdetails.impl.members_RoomMemberListView_Day_8_en","features.roomdetails.impl.members_RoomMemberListView_Night_8_en",20301,],
+["features.roomdetails.impl.members_RoomMemberListView_Day_9_en","features.roomdetails.impl.members_RoomMemberListView_Night_9_en",20301,],
+["features.roommembermoderation.impl_RoomMemberModerationView_Day_0_en","features.roommembermoderation.impl_RoomMemberModerationView_Night_0_en",20301,],
+["features.roommembermoderation.impl_RoomMemberModerationView_Day_1_en","features.roommembermoderation.impl_RoomMemberModerationView_Night_1_en",20301,],
+["features.roommembermoderation.impl_RoomMemberModerationView_Day_2_en","features.roommembermoderation.impl_RoomMemberModerationView_Night_2_en",20301,],
+["features.roommembermoderation.impl_RoomMemberModerationView_Day_3_en","features.roommembermoderation.impl_RoomMemberModerationView_Night_3_en",20301,],
+["features.roommembermoderation.impl_RoomMemberModerationView_Day_4_en","features.roommembermoderation.impl_RoomMemberModerationView_Night_4_en",20301,],
+["features.roommembermoderation.impl_RoomMemberModerationView_Day_5_en","features.roommembermoderation.impl_RoomMemberModerationView_Night_5_en",20301,],
+["features.roommembermoderation.impl_RoomMemberModerationView_Day_6_en","features.roommembermoderation.impl_RoomMemberModerationView_Night_6_en",20301,],
+["features.roommembermoderation.impl_RoomMemberModerationView_Day_7_en","features.roommembermoderation.impl_RoomMemberModerationView_Night_7_en",20301,],
["libraries.designsystem.atomic.molecules_RoomMembersCountMolecule_Day_0_en","libraries.designsystem.atomic.molecules_RoomMembersCountMolecule_Night_0_en",0,],
-["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsOption_Day_0_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsOption_Night_0_en",20294,],
-["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_0_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_0_en",20294,],
-["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_1_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_1_en",20294,],
-["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_2_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_2_en",20294,],
-["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_3_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_3_en",20294,],
-["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_4_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_4_en",20294,],
-["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_5_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_5_en",20294,],
-["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_6_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_6_en",20294,],
-["libraries.roomselect.impl_RoomSelectView_Day_0_en","libraries.roomselect.impl_RoomSelectView_Night_0_en",20294,],
-["libraries.roomselect.impl_RoomSelectView_Day_1_en","libraries.roomselect.impl_RoomSelectView_Night_1_en",20294,],
-["libraries.roomselect.impl_RoomSelectView_Day_2_en","libraries.roomselect.impl_RoomSelectView_Night_2_en",20294,],
-["libraries.roomselect.impl_RoomSelectView_Day_3_en","libraries.roomselect.impl_RoomSelectView_Night_3_en",20294,],
-["libraries.roomselect.impl_RoomSelectView_Day_4_en","libraries.roomselect.impl_RoomSelectView_Night_4_en",20294,],
-["libraries.roomselect.impl_RoomSelectView_Day_5_en","libraries.roomselect.impl_RoomSelectView_Night_5_en",20294,],
+["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsOption_Day_0_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsOption_Night_0_en",20301,],
+["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_0_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_0_en",20301,],
+["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_1_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_1_en",20301,],
+["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_2_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_2_en",20301,],
+["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_3_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_3_en",20301,],
+["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_4_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_4_en",20301,],
+["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_5_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_5_en",20301,],
+["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_6_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_6_en",20301,],
+["libraries.roomselect.impl_RoomSelectView_Day_0_en","libraries.roomselect.impl_RoomSelectView_Night_0_en",20301,],
+["libraries.roomselect.impl_RoomSelectView_Day_1_en","libraries.roomselect.impl_RoomSelectView_Night_1_en",20301,],
+["libraries.roomselect.impl_RoomSelectView_Day_2_en","libraries.roomselect.impl_RoomSelectView_Night_2_en",20301,],
+["libraries.roomselect.impl_RoomSelectView_Day_3_en","libraries.roomselect.impl_RoomSelectView_Night_3_en",20301,],
+["libraries.roomselect.impl_RoomSelectView_Day_4_en","libraries.roomselect.impl_RoomSelectView_Night_4_en",20301,],
+["libraries.roomselect.impl_RoomSelectView_Day_5_en","libraries.roomselect.impl_RoomSelectView_Night_5_en",20301,],
["features.home.impl.components_RoomSummaryPlaceholderRow_Day_0_en","features.home.impl.components_RoomSummaryPlaceholderRow_Night_0_en",0,],
["features.home.impl.components_RoomSummaryRow_Day_0_en","features.home.impl.components_RoomSummaryRow_Night_0_en",0,],
["features.home.impl.components_RoomSummaryRow_Day_10_en","features.home.impl.components_RoomSummaryRow_Night_10_en",0,],
@@ -1050,13 +1052,13 @@ export const screenshots = [
["features.home.impl.components_RoomSummaryRow_Day_26_en","features.home.impl.components_RoomSummaryRow_Night_26_en",0,],
["features.home.impl.components_RoomSummaryRow_Day_27_en","features.home.impl.components_RoomSummaryRow_Night_27_en",0,],
["features.home.impl.components_RoomSummaryRow_Day_28_en","features.home.impl.components_RoomSummaryRow_Night_28_en",0,],
-["features.home.impl.components_RoomSummaryRow_Day_29_en","features.home.impl.components_RoomSummaryRow_Night_29_en",20294,],
-["features.home.impl.components_RoomSummaryRow_Day_2_en","features.home.impl.components_RoomSummaryRow_Night_2_en",20294,],
-["features.home.impl.components_RoomSummaryRow_Day_30_en","features.home.impl.components_RoomSummaryRow_Night_30_en",20294,],
-["features.home.impl.components_RoomSummaryRow_Day_31_en","features.home.impl.components_RoomSummaryRow_Night_31_en",20294,],
-["features.home.impl.components_RoomSummaryRow_Day_32_en","features.home.impl.components_RoomSummaryRow_Night_32_en",20294,],
-["features.home.impl.components_RoomSummaryRow_Day_33_en","features.home.impl.components_RoomSummaryRow_Night_33_en",20294,],
-["features.home.impl.components_RoomSummaryRow_Day_34_en","features.home.impl.components_RoomSummaryRow_Night_34_en",20294,],
+["features.home.impl.components_RoomSummaryRow_Day_29_en","features.home.impl.components_RoomSummaryRow_Night_29_en",20301,],
+["features.home.impl.components_RoomSummaryRow_Day_2_en","features.home.impl.components_RoomSummaryRow_Night_2_en",20301,],
+["features.home.impl.components_RoomSummaryRow_Day_30_en","features.home.impl.components_RoomSummaryRow_Night_30_en",20301,],
+["features.home.impl.components_RoomSummaryRow_Day_31_en","features.home.impl.components_RoomSummaryRow_Night_31_en",20301,],
+["features.home.impl.components_RoomSummaryRow_Day_32_en","features.home.impl.components_RoomSummaryRow_Night_32_en",20301,],
+["features.home.impl.components_RoomSummaryRow_Day_33_en","features.home.impl.components_RoomSummaryRow_Night_33_en",20301,],
+["features.home.impl.components_RoomSummaryRow_Day_34_en","features.home.impl.components_RoomSummaryRow_Night_34_en",20301,],
["features.home.impl.components_RoomSummaryRow_Day_3_en","features.home.impl.components_RoomSummaryRow_Night_3_en",0,],
["features.home.impl.components_RoomSummaryRow_Day_4_en","features.home.impl.components_RoomSummaryRow_Night_4_en",0,],
["features.home.impl.components_RoomSummaryRow_Day_5_en","features.home.impl.components_RoomSummaryRow_Night_5_en",0,],
@@ -1064,79 +1066,79 @@ export const screenshots = [
["features.home.impl.components_RoomSummaryRow_Day_7_en","features.home.impl.components_RoomSummaryRow_Night_7_en",0,],
["features.home.impl.components_RoomSummaryRow_Day_8_en","features.home.impl.components_RoomSummaryRow_Night_8_en",0,],
["features.home.impl.components_RoomSummaryRow_Day_9_en","features.home.impl.components_RoomSummaryRow_Night_9_en",0,],
-["appnav.root_RootView_Day_0_en","appnav.root_RootView_Night_0_en",20294,],
-["appnav.root_RootView_Day_1_en","appnav.root_RootView_Night_1_en",20294,],
-["appnav.root_RootView_Day_2_en","appnav.root_RootView_Night_2_en",20294,],
+["appnav.root_RootView_Day_0_en","appnav.root_RootView_Night_0_en",20301,],
+["appnav.root_RootView_Day_1_en","appnav.root_RootView_Night_1_en",20301,],
+["appnav.root_RootView_Day_2_en","appnav.root_RootView_Night_2_en",20301,],
["appicon.enterprise_RoundIcon_en","",0,],
["appicon.element_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",20294,],
-["features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Day_0_en","features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Night_0_en",20294,],
-["features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Day_1_en","features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Night_1_en",20294,],
+["features.verifysession.impl.emoji_SasEmojis_Day_0_en","features.verifysession.impl.emoji_SasEmojis_Night_0_en",20301,],
+["features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Day_0_en","features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Night_0_en",20301,],
+["features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Day_1_en","features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Night_1_en",20301,],
["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","",20294,],
+["libraries.designsystem.theme.components_SearchBarActiveWithNoResults_Search_views_en","",20301,],
["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","",20294,],
-["features.createroom.impl.components_SearchSingleUserResultItem_en","",20294,],
-["features.securebackup.impl.disable_SecureBackupDisableView_Day_0_en","features.securebackup.impl.disable_SecureBackupDisableView_Night_0_en",20294,],
-["features.securebackup.impl.disable_SecureBackupDisableView_Day_1_en","features.securebackup.impl.disable_SecureBackupDisableView_Night_1_en",20294,],
-["features.securebackup.impl.disable_SecureBackupDisableView_Day_2_en","features.securebackup.impl.disable_SecureBackupDisableView_Night_2_en",20294,],
-["features.securebackup.impl.disable_SecureBackupDisableView_Day_3_en","features.securebackup.impl.disable_SecureBackupDisableView_Night_3_en",20294,],
-["features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_0_en","features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_0_en",20294,],
-["features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_1_en","features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_1_en",20294,],
-["features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_2_en","features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_2_en",20294,],
-["features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_3_en","features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_3_en",20294,],
-["features.securebackup.impl.root_SecureBackupRootView_Day_0_en","features.securebackup.impl.root_SecureBackupRootView_Night_0_en",20294,],
-["features.securebackup.impl.root_SecureBackupRootView_Day_10_en","features.securebackup.impl.root_SecureBackupRootView_Night_10_en",20294,],
-["features.securebackup.impl.root_SecureBackupRootView_Day_11_en","features.securebackup.impl.root_SecureBackupRootView_Night_11_en",20294,],
-["features.securebackup.impl.root_SecureBackupRootView_Day_12_en","features.securebackup.impl.root_SecureBackupRootView_Night_12_en",20294,],
-["features.securebackup.impl.root_SecureBackupRootView_Day_13_en","features.securebackup.impl.root_SecureBackupRootView_Night_13_en",20294,],
-["features.securebackup.impl.root_SecureBackupRootView_Day_14_en","features.securebackup.impl.root_SecureBackupRootView_Night_14_en",20294,],
-["features.securebackup.impl.root_SecureBackupRootView_Day_15_en","features.securebackup.impl.root_SecureBackupRootView_Night_15_en",20294,],
-["features.securebackup.impl.root_SecureBackupRootView_Day_16_en","features.securebackup.impl.root_SecureBackupRootView_Night_16_en",20294,],
-["features.securebackup.impl.root_SecureBackupRootView_Day_17_en","features.securebackup.impl.root_SecureBackupRootView_Night_17_en",20294,],
-["features.securebackup.impl.root_SecureBackupRootView_Day_1_en","features.securebackup.impl.root_SecureBackupRootView_Night_1_en",20294,],
-["features.securebackup.impl.root_SecureBackupRootView_Day_2_en","features.securebackup.impl.root_SecureBackupRootView_Night_2_en",20294,],
-["features.securebackup.impl.root_SecureBackupRootView_Day_3_en","features.securebackup.impl.root_SecureBackupRootView_Night_3_en",20294,],
-["features.securebackup.impl.root_SecureBackupRootView_Day_4_en","features.securebackup.impl.root_SecureBackupRootView_Night_4_en",20294,],
-["features.securebackup.impl.root_SecureBackupRootView_Day_5_en","features.securebackup.impl.root_SecureBackupRootView_Night_5_en",20294,],
-["features.securebackup.impl.root_SecureBackupRootView_Day_6_en","features.securebackup.impl.root_SecureBackupRootView_Night_6_en",20294,],
-["features.securebackup.impl.root_SecureBackupRootView_Day_7_en","features.securebackup.impl.root_SecureBackupRootView_Night_7_en",20294,],
-["features.securebackup.impl.root_SecureBackupRootView_Day_8_en","features.securebackup.impl.root_SecureBackupRootView_Night_8_en",20294,],
-["features.securebackup.impl.root_SecureBackupRootView_Day_9_en","features.securebackup.impl.root_SecureBackupRootView_Night_9_en",20294,],
-["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_0_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_0_en",20294,],
-["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_1_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_1_en",20294,],
-["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_2_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_2_en",20294,],
-["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_3_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_3_en",20294,],
-["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_4_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_4_en",20294,],
-["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_5_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_5_en",20297,],
-["features.securebackup.impl.setup_SecureBackupSetupView_Day_0_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_0_en",20294,],
-["features.securebackup.impl.setup_SecureBackupSetupView_Day_1_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_1_en",20294,],
-["features.securebackup.impl.setup_SecureBackupSetupView_Day_2_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_2_en",20294,],
-["features.securebackup.impl.setup_SecureBackupSetupView_Day_3_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_3_en",20294,],
-["features.securebackup.impl.setup_SecureBackupSetupView_Day_4_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_4_en",20294,],
-["features.securebackup.impl.setup_SecureBackupSetupView_Day_5_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_5_en",20297,],
-["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_0_en","",20294,],
-["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_1_en","",20294,],
-["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_2_en","",20294,],
-["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_3_en","",20294,],
-["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_4_en","",20294,],
-["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_5_en","",20294,],
-["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_6_en","",20294,],
-["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_7_en","",20294,],
-["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_8_en","",20294,],
-["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_0_en","",20294,],
-["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_1_en","",20294,],
-["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_2_en","",20294,],
-["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_3_en","",20294,],
-["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_4_en","",20294,],
-["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_5_en","",20294,],
-["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_6_en","",20294,],
-["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_7_en","",20294,],
-["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_8_en","",20294,],
+["features.createroom.impl.components_SearchMultipleUsersResultItem_en","",20301,],
+["features.createroom.impl.components_SearchSingleUserResultItem_en","",20301,],
+["features.securebackup.impl.disable_SecureBackupDisableView_Day_0_en","features.securebackup.impl.disable_SecureBackupDisableView_Night_0_en",20301,],
+["features.securebackup.impl.disable_SecureBackupDisableView_Day_1_en","features.securebackup.impl.disable_SecureBackupDisableView_Night_1_en",20301,],
+["features.securebackup.impl.disable_SecureBackupDisableView_Day_2_en","features.securebackup.impl.disable_SecureBackupDisableView_Night_2_en",20301,],
+["features.securebackup.impl.disable_SecureBackupDisableView_Day_3_en","features.securebackup.impl.disable_SecureBackupDisableView_Night_3_en",20301,],
+["features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_0_en","features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_0_en",20301,],
+["features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_1_en","features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_1_en",20301,],
+["features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_2_en","features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_2_en",20301,],
+["features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_3_en","features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_3_en",20301,],
+["features.securebackup.impl.root_SecureBackupRootView_Day_0_en","features.securebackup.impl.root_SecureBackupRootView_Night_0_en",20301,],
+["features.securebackup.impl.root_SecureBackupRootView_Day_10_en","features.securebackup.impl.root_SecureBackupRootView_Night_10_en",20301,],
+["features.securebackup.impl.root_SecureBackupRootView_Day_11_en","features.securebackup.impl.root_SecureBackupRootView_Night_11_en",20301,],
+["features.securebackup.impl.root_SecureBackupRootView_Day_12_en","features.securebackup.impl.root_SecureBackupRootView_Night_12_en",20301,],
+["features.securebackup.impl.root_SecureBackupRootView_Day_13_en","features.securebackup.impl.root_SecureBackupRootView_Night_13_en",20301,],
+["features.securebackup.impl.root_SecureBackupRootView_Day_14_en","features.securebackup.impl.root_SecureBackupRootView_Night_14_en",20301,],
+["features.securebackup.impl.root_SecureBackupRootView_Day_15_en","features.securebackup.impl.root_SecureBackupRootView_Night_15_en",20301,],
+["features.securebackup.impl.root_SecureBackupRootView_Day_16_en","features.securebackup.impl.root_SecureBackupRootView_Night_16_en",20301,],
+["features.securebackup.impl.root_SecureBackupRootView_Day_17_en","features.securebackup.impl.root_SecureBackupRootView_Night_17_en",20301,],
+["features.securebackup.impl.root_SecureBackupRootView_Day_1_en","features.securebackup.impl.root_SecureBackupRootView_Night_1_en",20301,],
+["features.securebackup.impl.root_SecureBackupRootView_Day_2_en","features.securebackup.impl.root_SecureBackupRootView_Night_2_en",20301,],
+["features.securebackup.impl.root_SecureBackupRootView_Day_3_en","features.securebackup.impl.root_SecureBackupRootView_Night_3_en",20301,],
+["features.securebackup.impl.root_SecureBackupRootView_Day_4_en","features.securebackup.impl.root_SecureBackupRootView_Night_4_en",20301,],
+["features.securebackup.impl.root_SecureBackupRootView_Day_5_en","features.securebackup.impl.root_SecureBackupRootView_Night_5_en",20301,],
+["features.securebackup.impl.root_SecureBackupRootView_Day_6_en","features.securebackup.impl.root_SecureBackupRootView_Night_6_en",20301,],
+["features.securebackup.impl.root_SecureBackupRootView_Day_7_en","features.securebackup.impl.root_SecureBackupRootView_Night_7_en",20301,],
+["features.securebackup.impl.root_SecureBackupRootView_Day_8_en","features.securebackup.impl.root_SecureBackupRootView_Night_8_en",20301,],
+["features.securebackup.impl.root_SecureBackupRootView_Day_9_en","features.securebackup.impl.root_SecureBackupRootView_Night_9_en",20301,],
+["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_0_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_0_en",20301,],
+["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_1_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_1_en",20301,],
+["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_2_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_2_en",20301,],
+["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_3_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_3_en",20301,],
+["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_4_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_4_en",20301,],
+["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_5_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_5_en",20301,],
+["features.securebackup.impl.setup_SecureBackupSetupView_Day_0_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_0_en",20301,],
+["features.securebackup.impl.setup_SecureBackupSetupView_Day_1_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_1_en",20301,],
+["features.securebackup.impl.setup_SecureBackupSetupView_Day_2_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_2_en",20301,],
+["features.securebackup.impl.setup_SecureBackupSetupView_Day_3_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_3_en",20301,],
+["features.securebackup.impl.setup_SecureBackupSetupView_Day_4_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_4_en",20301,],
+["features.securebackup.impl.setup_SecureBackupSetupView_Day_5_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_5_en",20301,],
+["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_0_en","",20301,],
+["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_1_en","",20301,],
+["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_2_en","",20301,],
+["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_3_en","",20301,],
+["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_4_en","",20301,],
+["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_5_en","",20301,],
+["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_6_en","",20301,],
+["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_7_en","",20301,],
+["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_8_en","",20301,],
+["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_0_en","",20301,],
+["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_1_en","",20301,],
+["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_2_en","",20301,],
+["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_3_en","",20301,],
+["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_4_en","",20301,],
+["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_5_en","",20301,],
+["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_6_en","",20301,],
+["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_7_en","",20301,],
+["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_8_en","",20301,],
["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 +1146,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",20294,],
-["features.location.impl.send_SendLocationView_Day_1_en","features.location.impl.send_SendLocationView_Night_1_en",20294,],
-["features.location.impl.send_SendLocationView_Day_2_en","features.location.impl.send_SendLocationView_Night_2_en",20294,],
-["features.location.impl.send_SendLocationView_Day_3_en","features.location.impl.send_SendLocationView_Night_3_en",20294,],
-["features.location.impl.send_SendLocationView_Day_4_en","features.location.impl.send_SendLocationView_Night_4_en",20294,],
+["features.location.impl.send_SendLocationView_Day_0_en","features.location.impl.send_SendLocationView_Night_0_en",20301,],
+["features.location.impl.send_SendLocationView_Day_1_en","features.location.impl.send_SendLocationView_Night_1_en",20301,],
+["features.location.impl.send_SendLocationView_Day_2_en","features.location.impl.send_SendLocationView_Night_2_en",20301,],
+["features.location.impl.send_SendLocationView_Day_3_en","features.location.impl.send_SendLocationView_Night_3_en",20301,],
+["features.location.impl.send_SendLocationView_Day_4_en","features.location.impl.send_SendLocationView_Night_4_en",20301,],
["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 +1160,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",20294,],
-["features.home.impl.components_SetUpRecoveryKeyBanner_Day_0_en","features.home.impl.components_SetUpRecoveryKeyBanner_Night_0_en",20294,],
-["features.lockscreen.impl.setup.biometric_SetupBiometricView_Day_0_en","features.lockscreen.impl.setup.biometric_SetupBiometricView_Night_0_en",20294,],
-["features.lockscreen.impl.setup.pin_SetupPinView_Day_0_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_0_en",20294,],
-["features.lockscreen.impl.setup.pin_SetupPinView_Day_1_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_1_en",20294,],
-["features.lockscreen.impl.setup.pin_SetupPinView_Day_2_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_2_en",20294,],
-["features.lockscreen.impl.setup.pin_SetupPinView_Day_3_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_3_en",20294,],
-["features.lockscreen.impl.setup.pin_SetupPinView_Day_4_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_4_en",20294,],
+["features.verifysession.impl.incoming.ui_SessionDetailsView_Day_0_en","features.verifysession.impl.incoming.ui_SessionDetailsView_Night_0_en",20301,],
+["features.home.impl.components_SetUpRecoveryKeyBanner_Day_0_en","features.home.impl.components_SetUpRecoveryKeyBanner_Night_0_en",20301,],
+["features.lockscreen.impl.setup.biometric_SetupBiometricView_Day_0_en","features.lockscreen.impl.setup.biometric_SetupBiometricView_Night_0_en",20301,],
+["features.lockscreen.impl.setup.pin_SetupPinView_Day_0_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_0_en",20301,],
+["features.lockscreen.impl.setup.pin_SetupPinView_Day_1_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_1_en",20301,],
+["features.lockscreen.impl.setup.pin_SetupPinView_Day_2_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_2_en",20301,],
+["features.lockscreen.impl.setup.pin_SetupPinView_Day_3_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_3_en",20301,],
+["features.lockscreen.impl.setup.pin_SetupPinView_Day_4_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_4_en",20301,],
["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",20294,],
-["features.location.impl.show_ShowLocationView_Day_0_en","features.location.impl.show_ShowLocationView_Night_0_en",20294,],
-["features.location.impl.show_ShowLocationView_Day_1_en","features.location.impl.show_ShowLocationView_Night_1_en",20294,],
-["features.location.impl.show_ShowLocationView_Day_2_en","features.location.impl.show_ShowLocationView_Night_2_en",20294,],
-["features.location.impl.show_ShowLocationView_Day_3_en","features.location.impl.show_ShowLocationView_Night_3_en",20294,],
-["features.location.impl.show_ShowLocationView_Day_4_en","features.location.impl.show_ShowLocationView_Night_4_en",20294,],
-["features.location.impl.show_ShowLocationView_Day_5_en","features.location.impl.show_ShowLocationView_Night_5_en",20294,],
-["features.location.impl.show_ShowLocationView_Day_6_en","features.location.impl.show_ShowLocationView_Night_6_en",20294,],
-["features.location.impl.show_ShowLocationView_Day_7_en","features.location.impl.show_ShowLocationView_Night_7_en",20294,],
-["features.signedout.impl_SignedOutView_Day_0_en","features.signedout.impl_SignedOutView_Night_0_en",20294,],
+["features.share.impl_ShareView_Day_3_en","features.share.impl_ShareView_Night_3_en",20301,],
+["features.location.impl.show_ShowLocationView_Day_0_en","features.location.impl.show_ShowLocationView_Night_0_en",20301,],
+["features.location.impl.show_ShowLocationView_Day_1_en","features.location.impl.show_ShowLocationView_Night_1_en",20301,],
+["features.location.impl.show_ShowLocationView_Day_2_en","features.location.impl.show_ShowLocationView_Night_2_en",20301,],
+["features.location.impl.show_ShowLocationView_Day_3_en","features.location.impl.show_ShowLocationView_Night_3_en",20301,],
+["features.location.impl.show_ShowLocationView_Day_4_en","features.location.impl.show_ShowLocationView_Night_4_en",20301,],
+["features.location.impl.show_ShowLocationView_Day_5_en","features.location.impl.show_ShowLocationView_Night_5_en",20301,],
+["features.location.impl.show_ShowLocationView_Day_6_en","features.location.impl.show_ShowLocationView_Night_6_en",20301,],
+["features.location.impl.show_ShowLocationView_Day_7_en","features.location.impl.show_ShowLocationView_Night_7_en",20301,],
+["features.signedout.impl_SignedOutView_Day_0_en","features.signedout.impl_SignedOutView_Night_0_en",20301,],
["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 +1189,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",20294,],
+["features.login.impl.dialogs_SlidingSyncNotSupportedDialog_Day_0_en","features.login.impl.dialogs_SlidingSyncNotSupportedDialog_Night_0_en",20301,],
["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,],
@@ -1197,61 +1199,61 @@ 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",20294,],
+["features.location.api.internal_StaticMapPlaceholder_Day_0_en","features.location.api.internal_StaticMapPlaceholder_Night_0_en",20301,],
["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",20294,],
+["features.messages.impl.messagecomposer.suggestions_SuggestionsPickerView_Day_0_en","features.messages.impl.messagecomposer.suggestions_SuggestionsPickerView_Night_0_en",20301,],
["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",20294,],
+["appnav.loggedin_SyncStateView_Day_0_en","appnav.loggedin_SyncStateView_Night_0_en",20301,],
["libraries.designsystem.components.avatar.internal_TextAvatar_Avatars_en","",0,],
["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",20294,],
-["libraries.textcomposer_TextComposerCaption_Day_0_en","libraries.textcomposer_TextComposerCaption_Night_0_en",20294,],
-["libraries.textcomposer_TextComposerEditCaption_Day_0_en","libraries.textcomposer_TextComposerEditCaption_Night_0_en",20294,],
-["libraries.textcomposer_TextComposerEditNotEncrypted_Day_0_en","libraries.textcomposer_TextComposerEditNotEncrypted_Night_0_en",20294,],
-["libraries.textcomposer_TextComposerEdit_Day_0_en","libraries.textcomposer_TextComposerEdit_Night_0_en",20294,],
-["libraries.textcomposer_TextComposerFormattingNotEncrypted_Day_0_en","libraries.textcomposer_TextComposerFormattingNotEncrypted_Night_0_en",20294,],
-["libraries.textcomposer_TextComposerFormatting_Day_0_en","libraries.textcomposer_TextComposerFormatting_Night_0_en",20294,],
-["libraries.textcomposer_TextComposerLinkDialogCreateLinkWithoutText_Day_0_en","libraries.textcomposer_TextComposerLinkDialogCreateLinkWithoutText_Night_0_en",20294,],
-["libraries.textcomposer_TextComposerLinkDialogCreateLink_Day_0_en","libraries.textcomposer_TextComposerLinkDialogCreateLink_Night_0_en",20294,],
-["libraries.textcomposer_TextComposerLinkDialogEditLink_Day_0_en","libraries.textcomposer_TextComposerLinkDialogEditLink_Night_0_en",20294,],
-["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_0_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_0_en",20294,],
-["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_10_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_10_en",20294,],
-["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_11_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_11_en",20294,],
-["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_1_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_1_en",20294,],
-["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_2_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_2_en",20294,],
-["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_3_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_3_en",20294,],
-["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_4_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_4_en",20294,],
-["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_5_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_5_en",20294,],
-["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_6_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_6_en",20294,],
-["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_7_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_7_en",20294,],
-["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_8_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_8_en",20294,],
-["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_9_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_9_en",20294,],
-["libraries.textcomposer_TextComposerReply_Day_0_en","libraries.textcomposer_TextComposerReply_Night_0_en",20294,],
-["libraries.textcomposer_TextComposerReply_Day_10_en","libraries.textcomposer_TextComposerReply_Night_10_en",20294,],
-["libraries.textcomposer_TextComposerReply_Day_11_en","libraries.textcomposer_TextComposerReply_Night_11_en",20294,],
-["libraries.textcomposer_TextComposerReply_Day_1_en","libraries.textcomposer_TextComposerReply_Night_1_en",20294,],
-["libraries.textcomposer_TextComposerReply_Day_2_en","libraries.textcomposer_TextComposerReply_Night_2_en",20294,],
-["libraries.textcomposer_TextComposerReply_Day_3_en","libraries.textcomposer_TextComposerReply_Night_3_en",20294,],
-["libraries.textcomposer_TextComposerReply_Day_4_en","libraries.textcomposer_TextComposerReply_Night_4_en",20294,],
-["libraries.textcomposer_TextComposerReply_Day_5_en","libraries.textcomposer_TextComposerReply_Night_5_en",20294,],
-["libraries.textcomposer_TextComposerReply_Day_6_en","libraries.textcomposer_TextComposerReply_Night_6_en",20294,],
-["libraries.textcomposer_TextComposerReply_Day_7_en","libraries.textcomposer_TextComposerReply_Night_7_en",20294,],
-["libraries.textcomposer_TextComposerReply_Day_8_en","libraries.textcomposer_TextComposerReply_Night_8_en",20294,],
-["libraries.textcomposer_TextComposerReply_Day_9_en","libraries.textcomposer_TextComposerReply_Night_9_en",20294,],
-["libraries.textcomposer_TextComposerSimpleNotEncrypted_Day_0_en","libraries.textcomposer_TextComposerSimpleNotEncrypted_Night_0_en",20294,],
-["libraries.textcomposer_TextComposerSimple_Day_0_en","libraries.textcomposer_TextComposerSimple_Night_0_en",20294,],
-["libraries.textcomposer_TextComposerVoiceNotEncrypted_Day_0_en","libraries.textcomposer_TextComposerVoiceNotEncrypted_Night_0_en",20294,],
+["libraries.textcomposer_TextComposerAddCaption_Day_0_en","libraries.textcomposer_TextComposerAddCaption_Night_0_en",20301,],
+["libraries.textcomposer_TextComposerCaption_Day_0_en","libraries.textcomposer_TextComposerCaption_Night_0_en",20301,],
+["libraries.textcomposer_TextComposerEditCaption_Day_0_en","libraries.textcomposer_TextComposerEditCaption_Night_0_en",20301,],
+["libraries.textcomposer_TextComposerEditNotEncrypted_Day_0_en","libraries.textcomposer_TextComposerEditNotEncrypted_Night_0_en",20301,],
+["libraries.textcomposer_TextComposerEdit_Day_0_en","libraries.textcomposer_TextComposerEdit_Night_0_en",20301,],
+["libraries.textcomposer_TextComposerFormattingNotEncrypted_Day_0_en","libraries.textcomposer_TextComposerFormattingNotEncrypted_Night_0_en",20301,],
+["libraries.textcomposer_TextComposerFormatting_Day_0_en","libraries.textcomposer_TextComposerFormatting_Night_0_en",20301,],
+["libraries.textcomposer_TextComposerLinkDialogCreateLinkWithoutText_Day_0_en","libraries.textcomposer_TextComposerLinkDialogCreateLinkWithoutText_Night_0_en",20301,],
+["libraries.textcomposer_TextComposerLinkDialogCreateLink_Day_0_en","libraries.textcomposer_TextComposerLinkDialogCreateLink_Night_0_en",20301,],
+["libraries.textcomposer_TextComposerLinkDialogEditLink_Day_0_en","libraries.textcomposer_TextComposerLinkDialogEditLink_Night_0_en",20301,],
+["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_0_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_0_en",20301,],
+["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_10_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_10_en",20301,],
+["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_11_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_11_en",20301,],
+["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_1_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_1_en",20301,],
+["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_2_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_2_en",20301,],
+["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_3_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_3_en",20301,],
+["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_4_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_4_en",20301,],
+["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_5_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_5_en",20301,],
+["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_6_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_6_en",20301,],
+["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_7_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_7_en",20301,],
+["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_8_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_8_en",20301,],
+["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_9_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_9_en",20301,],
+["libraries.textcomposer_TextComposerReply_Day_0_en","libraries.textcomposer_TextComposerReply_Night_0_en",20301,],
+["libraries.textcomposer_TextComposerReply_Day_10_en","libraries.textcomposer_TextComposerReply_Night_10_en",20301,],
+["libraries.textcomposer_TextComposerReply_Day_11_en","libraries.textcomposer_TextComposerReply_Night_11_en",20301,],
+["libraries.textcomposer_TextComposerReply_Day_1_en","libraries.textcomposer_TextComposerReply_Night_1_en",20301,],
+["libraries.textcomposer_TextComposerReply_Day_2_en","libraries.textcomposer_TextComposerReply_Night_2_en",20301,],
+["libraries.textcomposer_TextComposerReply_Day_3_en","libraries.textcomposer_TextComposerReply_Night_3_en",20301,],
+["libraries.textcomposer_TextComposerReply_Day_4_en","libraries.textcomposer_TextComposerReply_Night_4_en",20301,],
+["libraries.textcomposer_TextComposerReply_Day_5_en","libraries.textcomposer_TextComposerReply_Night_5_en",20301,],
+["libraries.textcomposer_TextComposerReply_Day_6_en","libraries.textcomposer_TextComposerReply_Night_6_en",20301,],
+["libraries.textcomposer_TextComposerReply_Day_7_en","libraries.textcomposer_TextComposerReply_Night_7_en",20301,],
+["libraries.textcomposer_TextComposerReply_Day_8_en","libraries.textcomposer_TextComposerReply_Night_8_en",20301,],
+["libraries.textcomposer_TextComposerReply_Day_9_en","libraries.textcomposer_TextComposerReply_Night_9_en",20301,],
+["libraries.textcomposer_TextComposerSimpleNotEncrypted_Day_0_en","libraries.textcomposer_TextComposerSimpleNotEncrypted_Night_0_en",20301,],
+["libraries.textcomposer_TextComposerSimple_Day_0_en","libraries.textcomposer_TextComposerSimple_Night_0_en",20301,],
+["libraries.textcomposer_TextComposerVoiceNotEncrypted_Day_0_en","libraries.textcomposer_TextComposerVoiceNotEncrypted_Night_0_en",20301,],
["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",20294,],
-["libraries.designsystem.components.dialogs_TextFieldDialog_Day_0_en","libraries.designsystem.components.dialogs_TextFieldDialog_Night_0_en",20294,],
+["libraries.designsystem.components.dialogs_TextFieldDialogWithError_Day_0_en","libraries.designsystem.components.dialogs_TextFieldDialogWithError_Night_0_en",20301,],
+["libraries.designsystem.components.dialogs_TextFieldDialog_Day_0_en","libraries.designsystem.components.dialogs_TextFieldDialog_Night_0_en",20301,],
["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,],
@@ -1263,14 +1265,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","",20294,],
-["libraries.designsystem.theme.components.previews_TimePickerVerticalDark_DateTime_pickers_en","",20294,],
-["libraries.designsystem.theme.components.previews_TimePickerVerticalLight_DateTime_pickers_en","",20294,],
+["libraries.designsystem.theme.components.previews_TimePickerHorizontal_DateTime_pickers_en","",20301,],
+["libraries.designsystem.theme.components.previews_TimePickerVerticalDark_DateTime_pickers_en","",20301,],
+["libraries.designsystem.theme.components.previews_TimePickerVerticalLight_DateTime_pickers_en","",20301,],
["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",20294,],
-["features.messages.impl.timeline.components_TimelineEventTimestampView_Day_4_en","features.messages.impl.timeline.components_TimelineEventTimestampView_Night_4_en",20294,],
+["features.messages.impl.timeline.components_TimelineEventTimestampView_Day_3_en","features.messages.impl.timeline.components_TimelineEventTimestampView_Night_3_en",20301,],
+["features.messages.impl.timeline.components_TimelineEventTimestampView_Day_4_en","features.messages.impl.timeline.components_TimelineEventTimestampView_Night_4_en",20301,],
["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,],
@@ -1280,18 +1282,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",20294,],
+["features.messages.impl.timeline.components_TimelineItemCallNotifyView_Day_0_en","features.messages.impl.timeline.components_TimelineItemCallNotifyView_Night_0_en",20301,],
["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",20294,],
-["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_1_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_1_en",20294,],
-["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_2_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_2_en",20294,],
-["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_3_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_3_en",20294,],
-["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_4_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_4_en",20294,],
-["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_5_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_5_en",20294,],
-["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_6_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_6_en",20294,],
-["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_7_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_7_en",20294,],
-["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_8_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_8_en",20294,],
+["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_0_en",20301,],
+["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_1_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_1_en",20301,],
+["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_2_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_2_en",20301,],
+["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_3_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_3_en",20301,],
+["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_4_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_4_en",20301,],
+["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_5_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_5_en",20301,],
+["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_6_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_6_en",20301,],
+["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_7_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_7_en",20301,],
+["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_8_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_8_en",20301,],
["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,],
@@ -1299,18 +1301,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",20294,],
-["features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_4_en","features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Night_4_en",20294,],
+["features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_3_en","features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Night_3_en",20301,],
+["features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_4_en","features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Night_4_en",20301,],
["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",20294,],
-["features.messages.impl.timeline.components_TimelineItemEventRowUtd_Day_0_en","features.messages.impl.timeline.components_TimelineItemEventRowUtd_Night_0_en",20294,],
-["features.messages.impl.timeline.components_TimelineItemEventRowWithManyReactions_Day_0_en","features.messages.impl.timeline.components_TimelineItemEventRowWithManyReactions_Night_0_en",20294,],
+["features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_7_en","features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Night_7_en",20301,],
+["features.messages.impl.timeline.components_TimelineItemEventRowUtd_Day_0_en","features.messages.impl.timeline.components_TimelineItemEventRowUtd_Night_0_en",20301,],
+["features.messages.impl.timeline.components_TimelineItemEventRowWithManyReactions_Day_0_en","features.messages.impl.timeline.components_TimelineItemEventRowWithManyReactions_Night_0_en",20301,],
["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",20294,],
-["features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Day_1_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Night_1_en",20294,],
+["features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Day_0_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Night_0_en",20301,],
+["features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Day_1_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Night_1_en",20301,],
["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,],
@@ -1319,40 +1321,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",20294,],
+["features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_4_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_4_en",20301,],
["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",20294,],
+["features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_8_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_8_en",20301,],
["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","",20294,],
+["features.messages.impl.timeline.components_TimelineItemEventTimestampBelow_en","",20301,],
["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",20294,],
-["features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentExpanded_Day_0_en","features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentExpanded_Night_0_en",20294,],
-["features.messages.impl.timeline.components.event_TimelineItemImageViewHideMediaContent_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemImageViewHideMediaContent_Night_0_en",20294,],
+["features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentCollapse_Day_0_en","features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentCollapse_Night_0_en",20301,],
+["features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentExpanded_Day_0_en","features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentExpanded_Night_0_en",20301,],
+["features.messages.impl.timeline.components.event_TimelineItemImageViewHideMediaContent_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemImageViewHideMediaContent_Night_0_en",20301,],
["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",20294,],
+["features.messages.impl.timeline.components.event_TimelineItemLegacyCallInviteView_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemLegacyCallInviteView_Night_0_en",20301,],
["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",20294,],
-["features.messages.impl.timeline.components.event_TimelineItemPollView_Day_1_en","features.messages.impl.timeline.components.event_TimelineItemPollView_Night_1_en",20294,],
-["features.messages.impl.timeline.components.event_TimelineItemPollView_Day_2_en","features.messages.impl.timeline.components.event_TimelineItemPollView_Night_2_en",20294,],
-["features.messages.impl.timeline.components.event_TimelineItemPollView_Day_3_en","features.messages.impl.timeline.components.event_TimelineItemPollView_Night_3_en",20294,],
-["features.messages.impl.timeline.components_TimelineItemReactionsLayout_Day_0_en","features.messages.impl.timeline.components_TimelineItemReactionsLayout_Night_0_en",20294,],
+["features.messages.impl.timeline.components.event_TimelineItemPollView_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemPollView_Night_0_en",20301,],
+["features.messages.impl.timeline.components.event_TimelineItemPollView_Day_1_en","features.messages.impl.timeline.components.event_TimelineItemPollView_Night_1_en",20301,],
+["features.messages.impl.timeline.components.event_TimelineItemPollView_Day_2_en","features.messages.impl.timeline.components.event_TimelineItemPollView_Night_2_en",20301,],
+["features.messages.impl.timeline.components.event_TimelineItemPollView_Day_3_en","features.messages.impl.timeline.components.event_TimelineItemPollView_Night_3_en",20301,],
+["features.messages.impl.timeline.components_TimelineItemReactionsLayout_Day_0_en","features.messages.impl.timeline.components_TimelineItemReactionsLayout_Night_0_en",20301,],
["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",20294,],
-["features.messages.impl.timeline.components_TimelineItemReactionsViewOutgoing_Day_0_en","features.messages.impl.timeline.components_TimelineItemReactionsViewOutgoing_Night_0_en",20294,],
+["features.messages.impl.timeline.components_TimelineItemReactionsViewIncoming_Day_0_en","features.messages.impl.timeline.components_TimelineItemReactionsViewIncoming_Night_0_en",20301,],
+["features.messages.impl.timeline.components_TimelineItemReactionsViewOutgoing_Day_0_en","features.messages.impl.timeline.components_TimelineItemReactionsViewOutgoing_Night_0_en",20301,],
["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",20294,],
+["features.messages.impl.timeline.components.virtual_TimelineItemReadMarkerView_Day_0_en","features.messages.impl.timeline.components.virtual_TimelineItemReadMarkerView_Night_0_en",20301,],
["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,],
@@ -1361,8 +1363,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",20294,],
-["features.messages.impl.timeline.components.virtual_TimelineItemRoomBeginningView_Day_0_en","features.messages.impl.timeline.components.virtual_TimelineItemRoomBeginningView_Night_0_en",20294,],
+["features.messages.impl.timeline.components.event_TimelineItemRedactedView_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemRedactedView_Night_0_en",20301,],
+["features.messages.impl.timeline.components.virtual_TimelineItemRoomBeginningView_Day_0_en","features.messages.impl.timeline.components.virtual_TimelineItemRoomBeginningView_Night_0_en",20301,],
["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,],
@@ -1377,8 +1379,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",20294,],
-["features.messages.impl.timeline.components.event_TimelineItemVideoViewHideMediaContent_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemVideoViewHideMediaContent_Night_0_en",20294,],
+["features.messages.impl.timeline.components.event_TimelineItemUnknownView_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemUnknownView_Night_0_en",20301,],
+["features.messages.impl.timeline.components.event_TimelineItemVideoViewHideMediaContent_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemVideoViewHideMediaContent_Night_0_en",20301,],
["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,],
@@ -1401,75 +1403,75 @@ 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",20294,],
-["features.messages.impl.timeline_TimelineView_Day_0_en","features.messages.impl.timeline_TimelineView_Night_0_en",20294,],
+["features.messages.impl.timeline_TimelineViewMessageShield_Day_0_en","features.messages.impl.timeline_TimelineViewMessageShield_Night_0_en",20301,],
+["features.messages.impl.timeline_TimelineView_Day_0_en","features.messages.impl.timeline_TimelineView_Night_0_en",20301,],
["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",20294,],
-["features.messages.impl.timeline_TimelineView_Day_12_en","features.messages.impl.timeline_TimelineView_Night_12_en",20294,],
-["features.messages.impl.timeline_TimelineView_Day_13_en","features.messages.impl.timeline_TimelineView_Night_13_en",20294,],
-["features.messages.impl.timeline_TimelineView_Day_14_en","features.messages.impl.timeline_TimelineView_Night_14_en",20294,],
-["features.messages.impl.timeline_TimelineView_Day_15_en","features.messages.impl.timeline_TimelineView_Night_15_en",20294,],
-["features.messages.impl.timeline_TimelineView_Day_16_en","features.messages.impl.timeline_TimelineView_Night_16_en",20294,],
-["features.messages.impl.timeline_TimelineView_Day_17_en","features.messages.impl.timeline_TimelineView_Night_17_en",20294,],
-["features.messages.impl.timeline_TimelineView_Day_1_en","features.messages.impl.timeline_TimelineView_Night_1_en",20294,],
+["features.messages.impl.timeline_TimelineView_Day_11_en","features.messages.impl.timeline_TimelineView_Night_11_en",20301,],
+["features.messages.impl.timeline_TimelineView_Day_12_en","features.messages.impl.timeline_TimelineView_Night_12_en",20301,],
+["features.messages.impl.timeline_TimelineView_Day_13_en","features.messages.impl.timeline_TimelineView_Night_13_en",20301,],
+["features.messages.impl.timeline_TimelineView_Day_14_en","features.messages.impl.timeline_TimelineView_Night_14_en",20301,],
+["features.messages.impl.timeline_TimelineView_Day_15_en","features.messages.impl.timeline_TimelineView_Night_15_en",20301,],
+["features.messages.impl.timeline_TimelineView_Day_16_en","features.messages.impl.timeline_TimelineView_Night_16_en",20301,],
+["features.messages.impl.timeline_TimelineView_Day_17_en","features.messages.impl.timeline_TimelineView_Night_17_en",20301,],
+["features.messages.impl.timeline_TimelineView_Day_1_en","features.messages.impl.timeline_TimelineView_Night_1_en",20301,],
["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",20294,],
+["features.messages.impl.timeline_TimelineView_Day_4_en","features.messages.impl.timeline_TimelineView_Night_4_en",20301,],
["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",20294,],
+["features.messages.impl.timeline_TimelineView_Day_6_en","features.messages.impl.timeline_TimelineView_Night_6_en",20301,],
["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",20294,],
+["features.messages.impl.timeline_TimelineView_Day_8_en","features.messages.impl.timeline_TimelineView_Night_8_en",20301,],
["features.messages.impl.timeline_TimelineView_Day_9_en","features.messages.impl.timeline_TimelineView_Night_9_en",0,],
["libraries.designsystem.components.avatar.internal_TombstonedRoomAvatar_Avatars_en","",0,],
["libraries.designsystem.theme.components_TopAppBarStr_App_Bars_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",20294,],
-["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_1_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_1_en",20294,],
-["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_2_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_2_en",20294,],
-["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_3_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_3_en",20294,],
-["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_4_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_4_en",20294,],
-["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_5_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_5_en",20294,],
-["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_6_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_6_en",20294,],
-["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_7_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_7_en",20294,],
+["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_0_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_0_en",20301,],
+["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_1_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_1_en",20301,],
+["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_2_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_2_en",20301,],
+["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_3_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_3_en",20301,],
+["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_4_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_4_en",20301,],
+["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_5_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_5_en",20301,],
+["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_6_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_6_en",20301,],
+["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_7_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_7_en",20301,],
["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",20294,],
-["features.messages.impl.typing_TypingNotificationView_Day_2_en","features.messages.impl.typing_TypingNotificationView_Night_2_en",20294,],
-["features.messages.impl.typing_TypingNotificationView_Day_3_en","features.messages.impl.typing_TypingNotificationView_Night_3_en",20294,],
-["features.messages.impl.typing_TypingNotificationView_Day_4_en","features.messages.impl.typing_TypingNotificationView_Night_4_en",20294,],
-["features.messages.impl.typing_TypingNotificationView_Day_5_en","features.messages.impl.typing_TypingNotificationView_Night_5_en",20294,],
-["features.messages.impl.typing_TypingNotificationView_Day_6_en","features.messages.impl.typing_TypingNotificationView_Night_6_en",20294,],
+["features.messages.impl.typing_TypingNotificationView_Day_1_en","features.messages.impl.typing_TypingNotificationView_Night_1_en",20301,],
+["features.messages.impl.typing_TypingNotificationView_Day_2_en","features.messages.impl.typing_TypingNotificationView_Night_2_en",20301,],
+["features.messages.impl.typing_TypingNotificationView_Day_3_en","features.messages.impl.typing_TypingNotificationView_Night_3_en",20301,],
+["features.messages.impl.typing_TypingNotificationView_Day_4_en","features.messages.impl.typing_TypingNotificationView_Night_4_en",20301,],
+["features.messages.impl.typing_TypingNotificationView_Day_5_en","features.messages.impl.typing_TypingNotificationView_Night_5_en",20301,],
+["features.messages.impl.typing_TypingNotificationView_Day_6_en","features.messages.impl.typing_TypingNotificationView_Night_6_en",20301,],
["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","",20294,],
+["libraries.matrix.ui.components_UnresolvedUserRow_en","",20301,],
["libraries.matrix.ui.components_UnsavedAvatar_Day_0_en","libraries.matrix.ui.components_UnsavedAvatar_Night_0_en",0,],
["libraries.designsystem.components.avatar.internal_UserAvatarColors_Day_0_en","libraries.designsystem.components.avatar.internal_UserAvatarColors_Night_0_en",0,],
-["features.roomdetails.impl.notificationsettings_UserDefinedRoomNotificationSettingsView_Day_0_en","features.roomdetails.impl.notificationsettings_UserDefinedRoomNotificationSettingsView_Night_0_en",20294,],
-["features.createroom.impl.components_UserListView_Day_0_en","features.createroom.impl.components_UserListView_Night_0_en",20294,],
-["features.createroom.impl.components_UserListView_Day_1_en","features.createroom.impl.components_UserListView_Night_1_en",20294,],
-["features.createroom.impl.components_UserListView_Day_2_en","features.createroom.impl.components_UserListView_Night_2_en",20294,],
+["features.roomdetails.impl.notificationsettings_UserDefinedRoomNotificationSettingsView_Day_0_en","features.roomdetails.impl.notificationsettings_UserDefinedRoomNotificationSettingsView_Night_0_en",20301,],
+["features.createroom.impl.components_UserListView_Day_0_en","features.createroom.impl.components_UserListView_Night_0_en",20301,],
+["features.createroom.impl.components_UserListView_Day_1_en","features.createroom.impl.components_UserListView_Night_1_en",20301,],
+["features.createroom.impl.components_UserListView_Day_2_en","features.createroom.impl.components_UserListView_Night_2_en",20301,],
["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",20294,],
+["features.createroom.impl.components_UserListView_Day_7_en","features.createroom.impl.components_UserListView_Night_7_en",20301,],
["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",20294,],
+["features.createroom.impl.components_UserListView_Day_9_en","features.createroom.impl.components_UserListView_Night_9_en",20301,],
["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",20294,],
-["features.userprofile.shared_UserProfileHeaderSection_Day_0_en","features.userprofile.shared_UserProfileHeaderSection_Night_0_en",20294,],
-["features.userprofile.shared_UserProfileView_Day_0_en","features.userprofile.shared_UserProfileView_Night_0_en",20294,],
-["features.userprofile.shared_UserProfileView_Day_1_en","features.userprofile.shared_UserProfileView_Night_1_en",20294,],
-["features.userprofile.shared_UserProfileView_Day_2_en","features.userprofile.shared_UserProfileView_Night_2_en",20294,],
-["features.userprofile.shared_UserProfileView_Day_3_en","features.userprofile.shared_UserProfileView_Night_3_en",20294,],
-["features.userprofile.shared_UserProfileView_Day_4_en","features.userprofile.shared_UserProfileView_Night_4_en",20294,],
-["features.userprofile.shared_UserProfileView_Day_5_en","features.userprofile.shared_UserProfileView_Night_5_en",20294,],
-["features.userprofile.shared_UserProfileView_Day_6_en","features.userprofile.shared_UserProfileView_Night_6_en",20294,],
-["features.userprofile.shared_UserProfileView_Day_7_en","features.userprofile.shared_UserProfileView_Night_7_en",20294,],
-["features.userprofile.shared_UserProfileView_Day_8_en","features.userprofile.shared_UserProfileView_Night_8_en",20294,],
-["features.userprofile.shared_UserProfileView_Day_9_en","features.userprofile.shared_UserProfileView_Night_9_en",20294,],
+["features.userprofile.shared_UserProfileHeaderSectionWithVerificationViolation_Day_0_en","features.userprofile.shared_UserProfileHeaderSectionWithVerificationViolation_Night_0_en",20301,],
+["features.userprofile.shared_UserProfileHeaderSection_Day_0_en","features.userprofile.shared_UserProfileHeaderSection_Night_0_en",20301,],
+["features.userprofile.shared_UserProfileView_Day_0_en","features.userprofile.shared_UserProfileView_Night_0_en",20301,],
+["features.userprofile.shared_UserProfileView_Day_1_en","features.userprofile.shared_UserProfileView_Night_1_en",20301,],
+["features.userprofile.shared_UserProfileView_Day_2_en","features.userprofile.shared_UserProfileView_Night_2_en",20301,],
+["features.userprofile.shared_UserProfileView_Day_3_en","features.userprofile.shared_UserProfileView_Night_3_en",20301,],
+["features.userprofile.shared_UserProfileView_Day_4_en","features.userprofile.shared_UserProfileView_Night_4_en",20301,],
+["features.userprofile.shared_UserProfileView_Day_5_en","features.userprofile.shared_UserProfileView_Night_5_en",20301,],
+["features.userprofile.shared_UserProfileView_Day_6_en","features.userprofile.shared_UserProfileView_Night_6_en",20301,],
+["features.userprofile.shared_UserProfileView_Day_7_en","features.userprofile.shared_UserProfileView_Night_7_en",20301,],
+["features.userprofile.shared_UserProfileView_Day_8_en","features.userprofile.shared_UserProfileView_Night_8_en",20301,],
+["features.userprofile.shared_UserProfileView_Day_9_en","features.userprofile.shared_UserProfileView_Night_9_en",20301,],
["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,],
@@ -1477,7 +1479,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",20294,],
+["features.viewfolder.impl.file_ViewFileView_Day_3_en","features.viewfolder.impl.file_ViewFileView_Night_3_en",20301,],
["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,],
@@ -1496,6 +1498,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",20294,],
+["features.ftue.impl.welcome_WelcomeView_Day_0_en","features.ftue.impl.welcome_WelcomeView_Night_0_en",20301,],
["libraries.designsystem.ruler_WithRulers_Day_0_en","libraries.designsystem.ruler_WithRulers_Night_0_en",0,],
];
diff --git a/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistClassNameTest.kt b/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistClassNameTest.kt
index 1bcf7bbfca..d24a489c6a 100644
--- a/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistClassNameTest.kt
+++ b/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistClassNameTest.kt
@@ -149,6 +149,7 @@ class KonsistClassNameTest {
"Enterprise",
"Fdroid",
"FileExtensionExtractor",
+ "Internal",
"LiveMediaTimeline",
"KeyStore",
"Matrix",
diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_0_en.png
similarity index 100%
rename from tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_0_en.png
rename to tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_0_en.png
diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_10_en.png b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_10_en.png
similarity index 100%
rename from tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_10_en.png
rename to tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_10_en.png
diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_11_en.png b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_11_en.png
similarity index 100%
rename from tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_11_en.png
rename to tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_11_en.png
diff --git a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_12_en.png b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_12_en.png
new file mode 100644
index 0000000000..5f8a5326a6
--- /dev/null
+++ b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_12_en.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8cac0bd6a8e8684247c0f419bc8dbb2f709af011400125bacee268722b2a8c54
+size 54908
diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_1_en.png
similarity index 100%
rename from tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_1_en.png
rename to tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_1_en.png
diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_2_en.png
similarity index 100%
rename from tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_2_en.png
rename to tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_2_en.png
diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_3_en.png
similarity index 100%
rename from tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_3_en.png
rename to tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_3_en.png
diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_4_en.png
similarity index 100%
rename from tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_4_en.png
rename to tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_4_en.png
diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_5_en.png
similarity index 100%
rename from tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_5_en.png
rename to tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_5_en.png
diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_6_en.png b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_6_en.png
similarity index 100%
rename from tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_6_en.png
rename to tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_6_en.png
diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_7_en.png b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_7_en.png
similarity index 100%
rename from tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_7_en.png
rename to tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_7_en.png
diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_8_en.png b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_8_en.png
similarity index 100%
rename from tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_8_en.png
rename to tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_8_en.png
diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_9_en.png b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_9_en.png
similarity index 100%
rename from tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_9_en.png
rename to tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_9_en.png
diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_0_en.png
similarity index 100%
rename from tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_0_en.png
rename to tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_0_en.png
diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_10_en.png b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_10_en.png
similarity index 100%
rename from tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_10_en.png
rename to tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_10_en.png
diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_11_en.png b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_11_en.png
similarity index 100%
rename from tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_11_en.png
rename to tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_11_en.png
diff --git a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_12_en.png b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_12_en.png
new file mode 100644
index 0000000000..62c653b221
--- /dev/null
+++ b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_12_en.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:da868460a570ea296fe409780c876f898897e73f8c71523f9cdc85225769a47f
+size 55578
diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_1_en.png
similarity index 100%
rename from tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_1_en.png
rename to tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_1_en.png
diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_2_en.png
similarity index 100%
rename from tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_2_en.png
rename to tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_2_en.png
diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_3_en.png
similarity index 100%
rename from tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_3_en.png
rename to tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_3_en.png
diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_4_en.png
similarity index 100%
rename from tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_4_en.png
rename to tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_4_en.png
diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_5_en.png
similarity index 100%
rename from tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_5_en.png
rename to tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_5_en.png
diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_6_en.png b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_6_en.png
similarity index 100%
rename from tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_6_en.png
rename to tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_6_en.png
diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_7_en.png b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_7_en.png
similarity index 100%
rename from tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_7_en.png
rename to tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_7_en.png
diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_8_en.png b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_8_en.png
similarity index 100%
rename from tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_8_en.png
rename to tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_8_en.png
diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_9_en.png b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_9_en.png
similarity index 100%
rename from tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_9_en.png
rename to tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_9_en.png
diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_PendingMemberRowWithLongName_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_PendingMemberRowWithLongName_Day_0_en.png
similarity index 100%
rename from tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_PendingMemberRowWithLongName_Day_0_en.png
rename to tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_PendingMemberRowWithLongName_Day_0_en.png
diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_PendingMemberRowWithLongName_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_PendingMemberRowWithLongName_Night_0_en.png
similarity index 100%
rename from tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_PendingMemberRowWithLongName_Night_0_en.png
rename to tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_PendingMemberRowWithLongName_Night_0_en.png
diff --git a/tests/uitests/src/test/snapshots/images/features.leaveroom.api_LeaveRoomView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.leaveroom.api_LeaveRoomView_Day_5_en.png
deleted file mode 100644
index efc259bf67..0000000000
--- a/tests/uitests/src/test/snapshots/images/features.leaveroom.api_LeaveRoomView_Day_5_en.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:63ba243c3912f9d42f6efa4e98c435e687c556a9c1d272e3c6e4e0b3e3a62f42
-size 11858
diff --git a/tests/uitests/src/test/snapshots/images/features.leaveroom.api_LeaveRoomView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.leaveroom.api_LeaveRoomView_Night_5_en.png
deleted file mode 100644
index 8029054b00..0000000000
--- a/tests/uitests/src/test/snapshots/images/features.leaveroom.api_LeaveRoomView_Night_5_en.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:2238156a42cf5ac43ab5528b4ac5b6c1f40a3cc0deb314670dfc37d9a3d22830
-size 10365
diff --git a/tests/uitests/src/test/snapshots/images/features.leaveroom.api_LeaveRoomView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.leaveroom.impl_LeaveRoomView_Day_0_en.png
similarity index 100%
rename from tests/uitests/src/test/snapshots/images/features.leaveroom.api_LeaveRoomView_Day_0_en.png
rename to tests/uitests/src/test/snapshots/images/features.leaveroom.impl_LeaveRoomView_Day_0_en.png
diff --git a/tests/uitests/src/test/snapshots/images/features.leaveroom.api_LeaveRoomView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.leaveroom.impl_LeaveRoomView_Day_1_en.png
similarity index 100%
rename from tests/uitests/src/test/snapshots/images/features.leaveroom.api_LeaveRoomView_Day_1_en.png
rename to tests/uitests/src/test/snapshots/images/features.leaveroom.impl_LeaveRoomView_Day_1_en.png
diff --git a/tests/uitests/src/test/snapshots/images/features.leaveroom.api_LeaveRoomView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.leaveroom.impl_LeaveRoomView_Day_2_en.png
similarity index 100%
rename from tests/uitests/src/test/snapshots/images/features.leaveroom.api_LeaveRoomView_Day_2_en.png
rename to tests/uitests/src/test/snapshots/images/features.leaveroom.impl_LeaveRoomView_Day_2_en.png
diff --git a/tests/uitests/src/test/snapshots/images/features.leaveroom.api_LeaveRoomView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.leaveroom.impl_LeaveRoomView_Day_3_en.png
similarity index 100%
rename from tests/uitests/src/test/snapshots/images/features.leaveroom.api_LeaveRoomView_Day_3_en.png
rename to tests/uitests/src/test/snapshots/images/features.leaveroom.impl_LeaveRoomView_Day_3_en.png
diff --git a/tests/uitests/src/test/snapshots/images/features.leaveroom.api_LeaveRoomView_Day_6_en.png b/tests/uitests/src/test/snapshots/images/features.leaveroom.impl_LeaveRoomView_Day_4_en.png
similarity index 100%
rename from tests/uitests/src/test/snapshots/images/features.leaveroom.api_LeaveRoomView_Day_6_en.png
rename to tests/uitests/src/test/snapshots/images/features.leaveroom.impl_LeaveRoomView_Day_4_en.png
diff --git a/tests/uitests/src/test/snapshots/images/features.leaveroom.impl_LeaveRoomView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.leaveroom.impl_LeaveRoomView_Day_5_en.png
new file mode 100644
index 0000000000..4f27ff629b
--- /dev/null
+++ b/tests/uitests/src/test/snapshots/images/features.leaveroom.impl_LeaveRoomView_Day_5_en.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c8dddc73db9c61fa9f6f2f576277464fa8becae6d7f38812a3c9e36f7d7591af
+size 31814
diff --git a/tests/uitests/src/test/snapshots/images/features.leaveroom.api_LeaveRoomView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.leaveroom.impl_LeaveRoomView_Day_6_en.png
similarity index 100%
rename from tests/uitests/src/test/snapshots/images/features.leaveroom.api_LeaveRoomView_Day_4_en.png
rename to tests/uitests/src/test/snapshots/images/features.leaveroom.impl_LeaveRoomView_Day_6_en.png
diff --git a/tests/uitests/src/test/snapshots/images/features.leaveroom.impl_LeaveRoomView_Day_7_en.png b/tests/uitests/src/test/snapshots/images/features.leaveroom.impl_LeaveRoomView_Day_7_en.png
new file mode 100644
index 0000000000..6f39152c18
--- /dev/null
+++ b/tests/uitests/src/test/snapshots/images/features.leaveroom.impl_LeaveRoomView_Day_7_en.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:db20190581472583a2f493275d0f7dc46ed4a2128cef475b98730e3695b918c7
+size 19149
diff --git a/tests/uitests/src/test/snapshots/images/features.leaveroom.api_LeaveRoomView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.leaveroom.impl_LeaveRoomView_Night_0_en.png
similarity index 100%
rename from tests/uitests/src/test/snapshots/images/features.leaveroom.api_LeaveRoomView_Night_0_en.png
rename to tests/uitests/src/test/snapshots/images/features.leaveroom.impl_LeaveRoomView_Night_0_en.png
diff --git a/tests/uitests/src/test/snapshots/images/features.leaveroom.api_LeaveRoomView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.leaveroom.impl_LeaveRoomView_Night_1_en.png
similarity index 100%
rename from tests/uitests/src/test/snapshots/images/features.leaveroom.api_LeaveRoomView_Night_1_en.png
rename to tests/uitests/src/test/snapshots/images/features.leaveroom.impl_LeaveRoomView_Night_1_en.png
diff --git a/tests/uitests/src/test/snapshots/images/features.leaveroom.api_LeaveRoomView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.leaveroom.impl_LeaveRoomView_Night_2_en.png
similarity index 100%
rename from tests/uitests/src/test/snapshots/images/features.leaveroom.api_LeaveRoomView_Night_2_en.png
rename to tests/uitests/src/test/snapshots/images/features.leaveroom.impl_LeaveRoomView_Night_2_en.png
diff --git a/tests/uitests/src/test/snapshots/images/features.leaveroom.api_LeaveRoomView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.leaveroom.impl_LeaveRoomView_Night_3_en.png
similarity index 100%
rename from tests/uitests/src/test/snapshots/images/features.leaveroom.api_LeaveRoomView_Night_3_en.png
rename to tests/uitests/src/test/snapshots/images/features.leaveroom.impl_LeaveRoomView_Night_3_en.png
diff --git a/tests/uitests/src/test/snapshots/images/features.leaveroom.api_LeaveRoomView_Night_6_en.png b/tests/uitests/src/test/snapshots/images/features.leaveroom.impl_LeaveRoomView_Night_4_en.png
similarity index 100%
rename from tests/uitests/src/test/snapshots/images/features.leaveroom.api_LeaveRoomView_Night_6_en.png
rename to tests/uitests/src/test/snapshots/images/features.leaveroom.impl_LeaveRoomView_Night_4_en.png
diff --git a/tests/uitests/src/test/snapshots/images/features.leaveroom.impl_LeaveRoomView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.leaveroom.impl_LeaveRoomView_Night_5_en.png
new file mode 100644
index 0000000000..a73bbec83d
--- /dev/null
+++ b/tests/uitests/src/test/snapshots/images/features.leaveroom.impl_LeaveRoomView_Night_5_en.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fd0b4c7f832a915faf450bfc37e8d597a3ef4768298066ef722b87656fcbd1c4
+size 29474
diff --git a/tests/uitests/src/test/snapshots/images/features.leaveroom.api_LeaveRoomView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.leaveroom.impl_LeaveRoomView_Night_6_en.png
similarity index 100%
rename from tests/uitests/src/test/snapshots/images/features.leaveroom.api_LeaveRoomView_Night_4_en.png
rename to tests/uitests/src/test/snapshots/images/features.leaveroom.impl_LeaveRoomView_Night_6_en.png
diff --git a/tests/uitests/src/test/snapshots/images/features.leaveroom.impl_LeaveRoomView_Night_7_en.png b/tests/uitests/src/test/snapshots/images/features.leaveroom.impl_LeaveRoomView_Night_7_en.png
new file mode 100644
index 0000000000..67ef646472
--- /dev/null
+++ b/tests/uitests/src/test/snapshots/images/features.leaveroom.impl_LeaveRoomView_Night_7_en.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d4557838eceb90ec501062367413359550ccc927cd4e0c50c9a01c2d9eb0938f
+size 17146
diff --git a/tools/localazy/config.json b/tools/localazy/config.json
index 9044372ff0..010a722e30 100644
--- a/tools/localazy/config.json
+++ b/tools/localazy/config.json
@@ -335,6 +335,14 @@
"includeRegex" : [
"screen\\.bottom_sheet\\.manage_room_member\\..*"
]
+ },
+ {
+ "name" : ":features:changeroommemberroles:impl",
+ "includeRegex" : [
+ "screen_room_change_.*",
+ "screen_room_roles_.*",
+ "screen_room_member_list.*"
+ ]
}
]
}